# Mathematics Thread



## IanTheCuber (Feb 26, 2012)

Ok, I found a scientific calculator, and it is really old and works great. But some of the buttons are scratched out, and I can't figure out what their purpose is. After the calculator part is over, maybe this could be an official math thread, where you can post videos and theorems anytime you want. Any math is avaliable. So, the first button is starting for tomorrow:

To a 1, it does nothing
To a 2, it does nothing
To a 3, it goes to 6
To a 4, it goes to 24
To a 5, it goes to 120
To a 6, it goes to 720
To a 7, it goes to 5,040
To an 8, it goes to 40,320
To a 9, it goes to 362,880
To a 10, it goes to 3,628,800
To an 11, it goes to 39,916,800
To a 12, on an 8-digit calculator it overflows


----------



## Sa967St (Feb 26, 2012)

Not sure whether you put this thread in "Help/Suggestions" intentionally, but it doesn't belong there. 



IanTheCuber said:


> To a 1, it does nothing
> To a 2, it does nothing
> To a 3, it goes to 6
> To a 4, it goes to 24
> ...





Spoiler



Factorial!


----------



## insane569 (Feb 26, 2012)

I never use a calculator. It makes it unfair for all the other kids in class. Currently in geometry prep. Already gone through algebra 1.


----------



## Ranzha (Feb 26, 2012)

IanTheCuber said:


> Ok, I found a scientific calculator, and it is really old and works great. But some of the buttons are scratched out, and I can't figure out what their purpose is. After the calculator part is over, maybe this could be an official math thread, where you can post videos and theorems anytime you want. Any math is avaliable. So, the first button is starting for tomorrow:
> 
> To a 1, it does nothing
> To a 2, it does nothing
> ...


 


Spoiler



!



I has a TI-89 Titanium ^o^

Also, why does





equal (pi^2)/6?


----------



## hyunchoi98 (Feb 26, 2012)

insane569 said:


> I never use a calculator. It makes it unfair for all the other kids in class. Currently in geometry prep. Already gone through algebra 1.


 
But doesn't everybody else use a calculator also?
At least my middle school does.

I was so surprised when i came to the US because everybody was using calculators in class.
NOBODY was allowed to use calcs in korea.


----------



## jeff081692 (Feb 26, 2012)

Math is one of my majors, I honestly don't know which math is hardest but since I'm in calc 2 I will just say that.


----------



## tozies24 (Feb 26, 2012)

Ranzha V. Emodrach said:


> Spoiler
> 
> 
> 
> ...


 
Well, one way that you can find it is that the Fourier series for x^2 is Pi^2/3 + SUM[4*((-1)^n)/n^2*cos(nx)]

There is a theorem for Fourier series that if f(x) is piecewise continuous, has period 2Pi, and one sided derivatives exist at all x in the interval, then f(x) actually equals the Fourier series. So we can express a function in terms of an infinite series which I think is cool.

Anyway, then we plug in Pi to both sides of the equation. 

x^2 =Pi^2/3 + SUM[4*((-1)^n)*cos(nx)/n^2]

Pi^2 = Pi^2/3 + SUM[4*((-1)^n*cos(n*Pi)/n^2]

2*Pi^2/3 = SUM[4*((-1)^n*(-1)^n/n^2]

2*Pi^2/3 = SUM[4/n^2]

Pi^2/6 = SUM[1/n^2]

I think that there are other ways but I can't recall them off the top of my head.

EDIT: Fourier series is the process of writing a function as an infinite series. It is really applicable in engineering and physics.


----------



## sa11297 (Feb 26, 2012)

jeff081692 said:


> Math is one of my majors, I honestly don't know which math is hardest but since I'm in calc 2 I will just say that.


 
whats calc 2? is it like what you do after high school calc?


----------



## Noahaha (Feb 26, 2012)

I'm taking BC calculus, but it doesn't seem that hard. Perhaps I'm doing it wrong.

Also, it's a little odd for "themathenthusiast" to not be able to recognize factorials...


----------



## jeff081692 (Feb 26, 2012)

I never took calc or pre calc for that matter in highschool because they never offered it, so I had to start at calc1 last semester which was just limits and differentiation whereas calc 2 is integrals or techniques of integration at my school.


----------



## RNewms27 (Feb 26, 2012)

Sahid Velji said:


> Spoiler
> 
> 
> 
> Why does it do nothing for 1 and 2? The answers should be 1 and 2 respectively.


 


Spoiler



There is no change so yes, it's the same thing.


----------



## ben1996123 (Feb 26, 2012)

IanTheCuber said:


> To a 1, it does nothing
> To a 2, it does nothing
> To a 3, it goes to 6
> To a 4, it goes to 24
> ...





Spoiler



Factorial



\( e^{i\tau}=1 \)


----------



## brandbest1 (Feb 26, 2012)

Who owns a Ti-Nspire CAS? I do.


----------



## insane569 (Feb 26, 2012)

hyunchoi98 said:


> But doesn't everybody else use a calculator also?
> At least my middle school does.
> 
> I was so surprised when i came to the US because everybody was using calculators in class.
> NOBODY was allowed to use calcs in korea.


 
Yea everyone else uses them but I don't need one to get A's or B's.


----------



## JasonK (Feb 26, 2012)

brandbest1 said:


> Who owns a Ti-Nspire CAS? I do.


 
Our school required them.


----------



## brandbest1 (Feb 26, 2012)

Quiz time: Find the next two numbers in the sequence: 7,7,7,10,11,12,13,21,_,_


----------



## aronpm (Feb 26, 2012)

TI-83 represent


----------



## JohnLaurain (Feb 26, 2012)

IanTheCuber said:


> Ok, I found a scientific calculator, and it is really old and works great. But some of the buttons are scratched out, and I can't figure out what their purpose is. After the calculator part is over, maybe this could be an official math thread, where you can post videos and theorems anytime you want. Any math is avaliable. So, the first button is starting for tomorrow:
> 
> To a 1, it does nothing
> To a 2, it does nothing
> ...



This took me a couple of minutes to understand, but I've only memorized this function for 1, 2, 9, and 10.


Spoiler



If I'm correct, the button does the factorial of the original number.



Algebra 1 doesn't need a graphing calculator, so I'm just using a TI 30 XII-S. Once I get into Geometry Honors in high school next year I'm probably going to get a TI-84 Plus Silver, but I really want a TI nspire calculator.

Sarah, what math have you been to? I'm assuming that you're a college student, or at least a senior in high school.


----------



## Sa967St (Feb 26, 2012)

brandbest1 said:


> Quiz time: Find the next two numbers in the sequence: 7,7,7,10,11,12,13,21,_,_





Spoiler



The next two terms are 111 and 1111111. The nth term is 7 written in base(10-n).


----------



## JasonK (Feb 26, 2012)

The poll really makes no sense outside the American education system.

In year 12 (final year of high school) I did:
Mathematical Methods: "Methods deals with concepts including differential calculus, integral calculus, circular functions, probability and the behaviour of functions with a single real variable."
Specialist Mathematics: "The subject covers concepts including conic sections, complex numbers, differential equations, kinematics, vector calculus and mechanics."


----------



## Cheese11 (Feb 26, 2012)

aronpm said:


> TI-83 represent


 
Ti-84 Silver Edition. Whats up.


----------



## MTGjumper (Feb 26, 2012)

brandbest1 said:


> Quiz time: Find the next two numbers in the sequence: 7,7,7,10,11,12,13,21,_,_


119, 637.

You generated the sequence with the following polynomial:

\( \frac{1}{120}x^7 - \frac{4}{15}x^6 + \frac{421}{120}x^5 - \frac{195}{8}x^4 + \frac{2861}{30}x^3 - \frac{24763}{120}x^2 + \frac{13447}{60}x - 85 \)


----------



## Christopher Mowla (Feb 26, 2012)

MTGjumper said:


> brandbest1 said:
> 
> 
> > Quiz time: Find the next two numbers in the sequence: 7,7,7,10,11,12,13,21,_,_
> ...


@MTGjumper, the method of Lagrange Polynomials cannot be used to yield realistic values for extrapolation for such a high degree polynomial.

@brandbest1,
The sequence of numbers you listed can be represented with the following composition of step functions (and polynomial functions):

\( 7\left\lceil \frac{n}{7} \right\rceil +\left( n-1 \right)+\left\lceil \frac{1}{3}\left\lfloor \frac{3}{n} \right\rfloor \right\rceil \left( 1-n \right) \)

[Link]

, which yields the values from the first value to the 23rd value (n = 1 to n = 23)
{7,7,7,10,11,12,13,21,*22*,*23*,24,25,26,27,35,36,37,38,39,40,41,49,50,...}

*Derivation*


Spoiler



Given the sequence, \( \left\{ 7,7,7,10,11,12,13,21,\text{ }\!\!\_\!\!\text{ },\text{ }\!\!\_\!\!\text{ } \right\} \), 

*[Step 1]*
Let's look at each term as a (multiple of 7)+ (some other integer).

That is, {7,7,7,10,11,12,13,21,...} = {7(1)+0,7(1)+0,7(1)+0,7(1)+3,7(1)+4,7(1)+5,7(1)+6,7(2)+7,...}

For all of the terms, the 7(integer) part can be represented as \( 7\left\lceil \frac{n}{7} \right\rceil \) (the brackets are the ceiling function, which means you round up to the nearest integer).

\( 7\left\lceil \frac{n}{7} \right\rceil \) gives the values {7,7,7,7,7,7,7,14,...} = {7(1),7(1),7(1),7(1),7(1),7(1),7(1),7(2),...} (for n = {1,2,3,4,5,6,7,8,...,n}).

*[Step 2]*
Now to handle the values for the integers which we add, {0,0,0,3,4,5,6,7...}, I made the assumption that the pattern continues as {0,0,0,3,4,5,6,7,8,9,10,11,12,...} (it's ambiguous really).

What we first need to do is construct a function which outputs non-zero integers values only for n = 1 through n = 3. The first function that came to my mind which is definitely indisputable is \( \left\lfloor \frac{3}{n} \right\rfloor \) (the brackets represent the floor function, which means to round down to the nearest integer).

And \( \left\lfloor \frac{3}{n} \right\rfloor \) = {3,1,1,0,0,0,0,0,...,0} for the entire set of positive integers n = {1,2,3,4,5,6,7,8,...,n}.

We need to make all three non-zero integer values (which is the first three) the same value. Why not make them 1? To make them one, we first multiply the entire sequence by (1/3) and then take the ceiling of it.

\( \left\lceil \frac{1}{3}\left\lfloor \frac{3}{n} \right\rfloor \right\rceil \).

This gives us {1,1,1,0,0,0,...,0} for n = {1,2,3,4,5,6,...,n}.

Next, let's just pretend that we are just considering the sequence {n} = {1,2,3,4,5,6,7,8,...,n}. If we want to make only the first three terms zero, we can just add {n} to the additive inverse of the step functions we found before times n. That is,

\( n-n\left\lceil \frac{1}{3}\left\lfloor \frac{3}{n} \right\rfloor \right\rceil \)

,which generates the values {0,0,0,4,5,6,7,8,...,n}.

Remember that all we have been aiming for in step 2 is to come up with the sequence {0,0,0,3,4,5,6,7,...,n+1} (from n = 1 to infinity)

All we have to do to the above (well it seems) is to subtract 1.

\( n-1-n\left\lceil \frac{1}{3}\left\lfloor \frac{3}{n} \right\rfloor \right\rceil \) = {-1,-1,-1,3,4,5,6,7,...,n+1}. 

All we have to do now to finish this piece is to add the first step function we made, \( \left\lceil \frac{1}{3}\left\lfloor \frac{3}{n} \right\rfloor \right\rceil \) = {1,1,1,0,0,0,...}.

\( -1+n-n\left\lceil \frac{1}{3}\left\lfloor \frac{3}{n} \right\rfloor \right\rceil +\left\lceil \frac{1}{3}\left\lfloor \frac{3}{n} \right\rfloor \right\rceil \) = {0,0,0,3,4,5,6,7,...,n+1} (from n = 1 to infinity).

\( =n-1+\left\lceil \frac{1}{3}\left\lfloor \frac{3}{n} \right\rfloor \right\rceil \left( 1-n \right) \).

*[Step 3]*
Now all we do is add the terms developed in steps 1 and 2.

\( =\left( 7\left\lceil \frac{n}{7} \right\rceil \right)+\left( n-1+\left\lceil \frac{1}{3}\left\lfloor \frac{3}{n} \right\rfloor \right\rceil \left( 1-n \right) \right) \).


So the answer is 22 and 23, assuming that the pattern {0,0,0,3,4,5,6,7} continues as {0,0,0,3,4,5,6,7,8,9,10,11,12,...,n+1} (from n = 1 to infinity).

EDIT:


aronpm said:


> TI-83 represent


TI-84 Plus Silver Present. ​


----------



## IanTheCuber (Feb 26, 2012)

I'm not that advanced, I'm in the 6th grade. But I can graph some cubic/quadratic equations.


----------



## aaronb (Feb 26, 2012)

I'm a Freshman, and since I'm pretty good at math, I got put in Geometry Honors; so that would be the highest math class I've taken. But I'd take that with a grain of salt, because my city (Lewiston, Maine) isn't exactly known for its quality education.  So despite being one of the best at math in my class, in any good education system, I would probably still be put in the higher math classes, but not be anywhere near the best. 

(After like 5 minutes, I am still trying to figure out if this post makes me sound conceited or humble)


----------



## brandbest1 (Feb 26, 2012)

Actually, Sarah's answer was the one I was thinking of. Except that the first term is in base 10.

I'm only in 8th grade, and I'm WAY ahead of my class.

I never really knew what the difference between prealgrebra, algebra 1 and 2, until now.


----------



## MTGjumper (Feb 26, 2012)

cmowla said:


> @MTGjumper, the method of Lagrange Polynomials cannot be used to yield realistic values for extrapolation for such a high degree polynomial.


 
Mine wasn't exactly a serious answer


----------



## hyunchoi98 (Feb 26, 2012)

I have a TI-89 Titanium that my dad gave me.
It seems live everyone else at school either has a TI-84, or a TI Nspire


----------



## AvidCuber (Feb 26, 2012)

I'm currently in my first year of IB Math (High Level), which covers what I guess you would call trig, pre-calc and calc. I sort of did a pre-calc class last year, but it was more of a pre-IB class. We haven't done any calculus this year so far, but I think we should be starting it next month or so.


----------



## Jaycee (Feb 26, 2012)

8th Grade, in Algebra 1, but it turns out we're using the book that the highschoolers use for Algebra 2. So I guess I'm in Algebra 2? xD I have no idea what math class I'll be in next year :/


----------



## jeff081692 (Feb 26, 2012)

I might have to take my answer of calc 2 back. I forgot I was taking a discrete structures class which is basically math for computer science.


----------



## brandbest1 (Feb 26, 2012)

Since I'm a math nerd, I want to learn Trig and Calc so badly, even though I'm in 8th.


----------



## jeff081692 (Feb 26, 2012)

brandbest1 said:


> Since I'm a math nerd, I want to learn Trig and Calc so badly, even though I'm in 8th.


 
khan academy my friend.


----------



## asportking (Feb 26, 2012)

I think pre-calc was probably the hardest "class" for me, since I decided to take it over the summer using an old textbook I picked up at the library. It was totally worth it though; calc this year is the best and most fun class I've ever gone into.


----------



## Uberzj (Feb 26, 2012)

For the 8th graders who don't know the math progression, I will lay it out how I took it.
I was in the Gifted program(many of you will call it enriched).

Algebra I in the 8th grade.
Algebra II in the 9th.
Geometry in the 10th.
Pre-calc in the 11th.
Calculus in the 12th.

I am about to be a sophomore in college.
The honors program at my college has math 240 241 and 242, which are the equivalent of Pre-Cal, Calc I, and Calc II. Which I had in highschool.
Next year I will be taking Calc III, Calc IV, and Differential Equations.
This is in an honors engineering environment at a fairly prestigious school.


----------



## brandbest1 (Feb 26, 2012)

Somebody tell me what a differential equation is in an easy-to-understand-not-nerdy explanation?


----------



## Sa967St (Feb 26, 2012)

brandbest1 said:


> Somebody tell me what a differential equation is in an easy-to-understand-not-nerdy explanation?


Well, you need to know some basic calculus to easily understand what they are. 

A differential equation is an equation containing independent and dependent variables, as well as derivatives of the dependent variable. 
e.g. dy/dx =2xy


----------



## vcuber13 (Feb 26, 2012)

isn't that partial derivatives?


----------



## Sa967St (Feb 26, 2012)

vcuber13 said:


> isn't that partial derivatives?


Partial Derivatives
Differential Equations


----------



## MTGjumper (Feb 26, 2012)

In the case Sarah gave, I can only assume y := y(x), just to make it more clear.


----------



## immortalchaos29 (Feb 26, 2012)

Differential Equations
Multivariable Calculus
Linear Algebra

Anyone else taken these?


----------



## tozies24 (Feb 26, 2012)

immortalchaos29 said:


> Differential Equations
> Multivariable Calculus
> Linear Algebra
> 
> Anyone else taken these?



Yep all three last year. Now I am taking partial differential equations, advanced multivarible, and then last semester I had advanced linear algebra.


----------



## samehsameh (Feb 26, 2012)

im a uk maths student in my final year ive done. (each item is 1 module)
1st year 
-Geometry, Vectors & Complex Numbers
-Mathematical Thinking
-Intro to Applied Maths
-Computer Applications in Maths
-Sequences and Series
-Numbers
-Differential Equations
-Intro to Probability and Stats
-Calculus
-Linear Algebra

2nd year
-Communicating Mathematics
-Analysis
-Vector Calculus
-Modelling with Differential Equations
-Numerical Methods 1
-Probability Theory
-Fourier Analysis and Partial Differential Equations
-Complex Variables
-Ordinary Differential Equations and Calculus of Variations
-Numerical Methods 2
-Scientific Programming
-Statistical Modelling

Final year
-Number Theory
-Intro to Dynamical Systems
-Inviscid Fluid Mechanics
-Statistical Methods
-Graph Theory
-Intro to Differential Geometry
-Mathematics report
-Applied Complex Analysis
-Metric Spaces
-Linear Differential Equations
-Vibrations and Waves
-Mathematical Biology


----------



## asportking (Feb 27, 2012)

brandbest1 said:


> Somebody tell me what a differential equation is in an easy-to-understand-not-nerdy explanation?


I can't quite remember the difference between a differential equation and a derivative, but a derivative is a graph of the slope. It's quite simple for a linear equation. Let's say you have y = 2x+3. The slope of that line is 2, so the graph of the derivative would just be a straight line, y = 2. It gets a bit trickier when you deal with more complex equations, but another thing to understand is that non-linear equations, such as parabolas, also have slopes. They just constantly change. For example, the slope of a parabola at it's vertex would be 0. If you zoomed in enough at that point, it would start to look like a straight, horizontal line.


----------



## immortalchaos29 (Feb 27, 2012)

tozies24 said:


> Yep all three last year. Now I am taking partial differential equations, advanced multivarible, and then last semester I had advanced linear algebra.


 
Ah that sounds like a blast. lol. I haven't taken any of those. I use the math I have taken sparingly enough as it is. Though we are using advanced linear algebra on some nuclear reactor design models now - and it's been 4 years since I've taken them so I'm just O___O atm.


----------



## IanTheCuber (Feb 27, 2012)

Here's a math problem/riddle that no one can figure out.



Spoiler



There are four people that want to cross a bridge. Sam can cross in 1 minute, Joe can cross in 2, Jack can cross in 5, and Steve can cross in 10. They have one flashlight, and two can cross at a time, but they must go at the same pace. So if Steve and Sam cross together, they must go at 10 minutes. The partners must use a flashlight, and one must bring it right back. They must cross in 16 minutes or less. How?



I know how, but nobody else does, for some reason.


----------



## samehsameh (Feb 27, 2012)

Best i can do is 17 minutes on that Sam takes Joe(2), Sam comes back(+1 =3), Jack takes Steve(+10 = 13), Joe comes back(+2 = 15), Sam takes Joe back over(+2 = 17). Basically Sam and Joe are helping out their fat friends and their roles could be changed for the same time. How u get 16? pretty sure its impossible


----------



## jeff081692 (Feb 27, 2012)

I got 17 minutes too. My mind will be blown if 16 is possible.


----------



## Christopher Mowla (Feb 27, 2012)

brandbest1 said:


> Somebody tell me what a differential equation is in an easy-to-understand-not-nerdy explanation?


With a regular algebraic equation, the variables are signified with letters such as x and represent NUMBERS. In differential equations, variables (also signified with letters such as x) represent FUNCTIONS. An example of a function, as you know, is f (x) = x^2. So, instead of looking at an algebraic equation asking yourself "which number can I substitute in for all x's in the equation to have both sides equal," you ask the same thing, but instead of a number, you ask "what function..."

There are many different types of differential equations (DE's), and so the above explanation is very ambiguous and only partially true for the more complicated DE types.

Now, in algebra, as I have said already, the equations' variables represent numbers. In DE's, the variables are functions (such as f (x) ). So, once you have found the solution to the differential equation, you may substitute in numbers into the function you found to get a numerical value. A common numerical value letter used is _t_ for TIME. Differential equations are at least partially made up of derivative variables, just as algebraic equations are at least partially made up of numerical variables. A derivative is a function which is the rate of change of another function. That is, when you substitute numerical values into the derivative function, you get the slope (rate of change) of the function it is a derivative of _at that x-value (number you plugged into the derivative function)._

*Algebra*
f (x)...=..., x is the variable: x = number

*Differential equations*
[f (_t_)]'...= ..., [f (_t_)]' is the variable, f (_t_) is a function, and _t_ is a number (often represents a numerical time value).

[f (_t_)]' means "the rate of change of function f(_t_), or the derivative of f(t).

(So differential equations have one thing extra, derivatives).

Lastly, in algebra, if a single equation has more than one solution, it must have infinite solutions. For example, consider the single equation with TWO unknowns. x + 2y = 6. There are an infinite number of solutions for x and y. Similarly, differential equations have infinite solutions in the same sense because they can also have variables in them which represent numbers.

As an example of how an DE can have infinite solutions (by also having variables which represent numbers and not functions), here is one of the most simple differential equations (known as a single anti-derivative/integral problem in calculus):

[f (x)]' = 1​
This is read "the rate of change (slope) of what function f (x) is equal to one for the given x value." 

From the slope intercept formula, y(x) = mx + b, m is the slope. (Note that f (x) and y(x) mean the same thing: both are functions of x). m here is equal to [f (x)]' and happens to be a number and not a function. (I wrote below the DE, "the rate of change (slope) of what function f (x) is equal to one for the given x value." The given x value IS x, that is, it represents ALL possible values of x.)

You probably can guess that the solution is f (x) = x, because

f (x) = 1x is the same as f(x) = x.​
However, this solution is actually infinite because, isn't the slope of f(x) = x + 5 also 1? Yep. So the solution to the DE above is really f(x) = x +c, where c can be any number (y-intercept = (b of the slope intercept formula) ).

I hope that helps. It's difficult to define what a differential equation is with the person describing it to doesn't know calculus yet, as Sarah said.


----------



## Owen (Feb 27, 2012)

This thread is like Finnegan's Wake, I can only understand half the words.


----------



## asportking (Feb 27, 2012)

IanTheCuber said:


> Here's a math problem/riddle that no one can figure out.
> 
> 
> 
> ...


I have to ask: is this some cheesy riddle with one of those really stupid answers like "they made another flashlight," or "the other two swam next to the bridge," or is there a genuine way to do this?


----------



## cubernya (Feb 27, 2012)

IanTheCuber said:


> Here's a math problem/riddle that no one can figure out.
> 
> 
> 
> ...


 
After getting 17, I believed it was impossible to get 16 (I had my reasons to believe it), so I looked it up.


Spoiler



I found this, which is basically the same thing (just different wording). According to this, 17 is the lowest that is possible, so 16 is in fact impossible.


----------



## Sa967St (Feb 27, 2012)

IanTheCuber said:


> Here's a math problem/riddle that no one can figure out.
> 
> 
> 
> ...



Are you sure about your "solution"?



Spoiler



If they don't have to go at the same pace:
Sam and Steve go, with Steve carrying the flashlight. Steve stops after a minute (when Sam finishes crossing), and goes back. (2 mins)
Steve and Joe go, with Steve carrying the flashlight. Steve stops after 2 minutes (when Joe finishes crossing), and goes back. (4 mins)
Steve and Jack go, with Jack being right behind Steve the whole time. (10 mins)

This doesn't completely make sense though since Sam and Joe don't travel with the flashlight, but it's only a bridge that takes them one and two minutes to cross. 


edit: Maybe Steve can aim the flashlight to the end of the bridge so that Sam and Joe can see their way to the end.


----------



## MTGjumper (Feb 27, 2012)

IanTheCuber said:


> Here's a math problem/riddle that no one can figure out.
> ...
> I know how, but nobody else does, for some reason.



These two sentences lead me to believe that there is no solution. They're worded so... unnaturally.


----------



## Hyrtsi (Feb 28, 2012)

I love maths. I've been doing research on my own on various problems and theorems, even came up with something on my own.

I'd like to see different ways to solve this:

Proof that


----------



## y235 (Feb 28, 2012)

Hyrtsi said:


> I love maths. I've been doing research on my own on various problems and theorems, even came up with something on my own.
> 
> I'd like to see different ways to solve this:
> 
> Proof that


 
It's pretty easy.


Spoiler


----------



## KJ (Feb 28, 2012)

So I'm homeschooling 5th grade, but I'm doing Algebra 1a and 1b. The hardest part to me is the equations, I don't know why.


----------



## Sa967St (Feb 28, 2012)

Hyrtsi said:


> Proof that





Spoiler



I had the same solution as y235 (ninja'd ), but just for lols I'll sub in an x somewhere else.

\( x=1+\frac{1}{2+{\frac{1}{1+x}}} \)

\( x=\frac{3x+4}{2x+3} \)

\( 2x^2+3x=3x+4 \)

\( x^2=2 \)

\( x={\sqrt2} \) 
or
\( x=-{\sqrt2} \)


----------



## Ickathu (Feb 28, 2012)

I'm a homeschooled highschool freshman (that's fun to say). I took Algebra 1 and 2 combined last year in 8th grade, so I'm in Geometry in 9th. I'm speeding through Geometry, because it's pretty easy, so I'll probably start Trig in a couple weeks. I don't know how long that'll take, so I might be doing that partway into next year, and then I guess I'll take pre-calc, as a sophmore/junior and Calculus I as a junior/senior. Hopefully I can finish trig this summer, and then I could be in Calculus II as a senior!

Poll: I'm voting for Equations, because I struggled with Algebra I equations - like time, motion (especially), age problems, etc, but Algebra II and Geometry are easy.

What is the "standard" system of math for public schools? Is it 8th = prealgebra, 9th = Algebra I, 10th = Geometry, 11th = Algebra II, 12th = Trig? Or is it Algebra I in 8th, Geo in 9th, Algebra2 in 10th, trig in 11th, and precalc in 12th?


----------



## JohnLaurain (Feb 28, 2012)

Ickathu said:


> What is the "standard" system of math for public schools? Is it 8th = prealgebra, 9th = Algebra I, 10th = Geometry, 11th = Algebra II, 12th = Trig? Or is it Algebra I in 8th, Geo in 9th, Algebra2 in 10th, trig in 11th, and precalc in 12th?


 In our school system, we have either Pre-Algebra 7th, Algebra 8th, Geometry 9th, Algebra II 10th, and so on. You could also have Pre-Algebra in both 7th and 8th, Algebra I in 9th, and so on. There's also Algebra in 7th, Geometry in 8th, and so on. The most advanced kids at my school are in Geometry as 6th graders, so Algebra II in 7th, Pre-Calculus in 8th and so on.


----------



## Ickathu (Feb 28, 2012)

JohnLaurain said:


> In our school system, we have either Pre-Algebra 7th, Algebra 8th, Geometry 9th, Algebra II 10th, and so on. You could also have Pre-Algebra in both 7th and 8th, Algebra I in 9th, and so on. There's also Algebra in 7th, Geometry in 8th, and so on. The most advanced kids at my school are in Geometry as 6th graders, so Algebra II in 7th, Pre-Calculus in 8th and so on.



Cool thanks! I've always wondered that...


----------



## xXxMCCALLxXx (Feb 28, 2012)

Probability and Statistics should be one of the choices for the poll.


----------



## vcuber13 (Feb 29, 2012)

can someone explain what the triple equal sign means

edit: ≡


----------



## tozies24 (Feb 29, 2012)

It means congruence in some contexts. In my modern algebra class that I am currently in, congruence occurs when you have two numbers a and b and they differ by a multiple of m. (a-b=mk for some k that is an integer). We write a (congruent or triple equal sign) b mod m. We use this when we are telling time or doing stuff with clocks. When we want to know what time it will be in 25 hours, we will just add 1 hour to the current time and then be done. Our time system is in modulo 12. 

if you want more info: http://en.wikipedia.org/wiki/Modular_arithmetic


EDIT: should have quoted last post, oh well


----------



## asportking (Feb 29, 2012)

brandbest1 said:


> Since I'm a math nerd, I want to learn Trig and Calc so badly, even though I'm in 8th.


I used to be a math enthusiast like you, then I took a Calculus in the head.


----------



## cubingawsumness (Feb 29, 2012)

Owen said:


> I can only understand half the words.


 
yup me too

I'm no math genius, but I'm semi-decent at it. I'm in 8th, and I'm currently in geometry.
In 6th I took what they call "pre-algebra A", but then that summer I took a "challenge test" which allowed me to skip "pre-algebra B", and so in 7th grade I took Algebra.
Next year, I'll take Algebra 2/Trig, then pre-calc or "math analysis", then calc, then maybe stats or something.
In our middle school, we have 3 different "tracks". In 6th grade, there are only two: normal and advanced. I was in normal.
In 7th grade the people who failed in normal in 6th grade get put into "Math 7 skills". Normal people continue in normal unless they pass the "challenge test" like me, which would put them to advanced.
From geometry, there are 3 different courses. I you get D or F (overall grade) then you get put into geometry again (back onto normal track). If you get B or lower, you get into Algebra 2. B or higher, Algebra 2/trig. (so many complications...)
Then after algebra 2 or algebra 2/trig, you can either go to "math analysis" or pre-calc. Apparently math analysis is a fancy word for the first half of pre-calc (slower pace).
Then after math analysis you can go to precalc or if you want you can skip to calc. From precalc you can either go to calc or AP stats. There are 2 calc classes : AB and BC.
Apparently they just go at different paces.

phew...
why do math courses/tracks have to be so complicated...


----------



## JonWhite (Feb 29, 2012)

anyone here go to IMO?


----------



## aronpm (Feb 29, 2012)

aronpm said:


> I have a calculator-inspired pattern puzzle.
> 
> 
> 
> ...


 
bump, got buried by Ian's "riddle"


----------



## Sa967St (Feb 29, 2012)

Sahid Velji said:


> Am I allowed to ask homework questions in here?
> "Malik wants to skateboard over to visit his friend Gord who lives six blocks away. Gord's house is two blocks west and four blocks north of Malik's house. Each time Malik goes over, he likes to take a different route. How many different routes are there for Malik if he only travels west or north?" - Data management textbook page 246.
> I know the answer.
> 6!/(4!2!)=15 but why must I divide by (4!) and (2!)?





Spoiler



6!/(4!2!)=6C2=6C4
He travels 6 blocks in total, and he chooses 2 spots where he goes one block west, or you can think of it as he chooses 4 spots where he goes one block north. The solution follows the same pattern as the other questions in that section (I used the same textbook for that course ). Check out question 7 on page 296 for a laugh.





aronpm said:


> have a calculator-inspired pattern puzzle.
> 
> 
> 
> ...





Spoiler



y(n)=8*sqrt(n)

y(n,x)=(x+1)*sqrt(n)

That was fun.


----------



## asportking (Feb 29, 2012)

Ok, can someone explain to me why the "dx" at the end of integrals are needed? I can integrate easily enough, but I could never quite understand why the "dx" always needed to be at the end, and now that we're starting to mess around with the dx, I figured it would be a good time to understand it better.


----------



## samehsameh (Feb 29, 2012)

Basically it tells you what your integrating with respect to. If you were given \( y=x \) and told to differentiate it you might say it equals 1 but w.r.t. what? You should write \( dy/dx=1 \) if you differentiated w.r.t. \( x \) This forms one of the simplest differential equation \( dy/dx=1 \) which is equivalent to \( \int dy = \int dx \) so you integrate the LHS w.r.t. \( y \) and the RHS w.r.t. \( x \) and obviously end up with \( y=x+c_1 \). That was easy, now say your differential equation is \( dy/dx=x^2+3x+2 \) this is equivalent to \( \int dy = \int (x^2 +3x + 2)dx \) Evaluating just the LHS you end up with questions like your probably given i.e. \( y=\int (x^2+3x+2) dx \) so, basically the \( dx \) comes from the differential equation of the function you find by evaluating the integral given and could be anything i.e. \( dt \) is another common one if your function is a variable of time.


----------



## samehsameh (Feb 29, 2012)

next problem. Find the area between \( y=\frac{1}{x^4+4x^2+3} \) and \( y=0 \). Solutions please, dont just wolfram it.

Hint


Spoiler



evaulate \( \int_{-\infty}^{\infty} \! \frac{\mathrm{d} x}{x^4+4x^2+3}. \)


----------



## ben1996123 (Feb 29, 2012)

vcuber13 said:


> can someone explain what the triple equal sign means



Identical. Random example (I think this is what it's used for, not completely sure though):

\( \frac{x}{x}=1 \), but \( \frac{x}{x} \) is not \( \equiv1 \) because \( \frac{0}{0}\neq1 \)

random calculus just for fun:

\( \frac{sin(x)}{2^{xy}}=x+y \)






Spoiler



\( \frac{d}{dx}(\frac{sin(x)}{2^{xy}})=\frac{d}{dx}(x+y) \)

\( \frac{d}{dx}(x+y)=1+\frac{dy}{dx} \)

\( a=\frac{b}{c} \)

\( b=sin(x) \)

\( c=2^{xy} \)

\( \frac{da}{dx}=\frac{c\frac{db}{dx}-b\frac{dc}{dx}}{c^{2}} \)

\( \frac{db}{dx}=cos(x) \)

\( c=2^d \)

\( d=xy \)

\( \frac{dc}{dx}=\frac{dc}{dd}\frac{dd}{dx} \)

\( \frac{dc}{dd}=2^{d}ln(2)=2^{xy}ln(2) \)

\( \frac{dd}{dx}=y\frac{d}{dx}(x)+x\frac{d}{dx}(y)=y+x\frac{dy}{dx} \)

\( \frac{dc}{dx}=2^{xy}ln(2)(y+x\frac{dy}{dx})=2^{xy}yln(2)+2^{xy}xln(2)\frac{dy}{dx} \)

\( c\frac{db}{dx}=2^{xy}cos(x) \)

\( b\frac{dc}{dx}=sin(x)(2^{xy}yln(2)+2^{xy}xln(2)\frac{dy}{dx})=2^{xy}ysin(x)ln(2)+2^{xy}xsin(x)ln(2)\frac{dy}{dx} \)

\( c^{2}=2^{2xy} \)

\( \frac{c\frac{db}{dx}-b\frac{dc}{dx}}{c^{2}}=\frac{2^{xy}cos(x)-2^{xy}ysin(x)ln(2)-2^{xy}xsin(x)ln(2)\frac{dy}{dx}}{2^{2xy}} \)

\( \frac{2^{xy}cos(x)-2^{xy}ysin(x)ln(2)-2^{xy}xsin(x)ln(2)\frac{dy}{dx}}{2^{2xy}}=1+\frac{dy}{dx} \)

\( 2^{xy}cos(x)-2^{xy}ysin(x)ln(2)-2^{xy}xsin(x)ln(2)\frac{dy}{dx}=2^{2xy}+2^{2xy}\frac{dy}{dx} \)

\( 2^{xy}cos(x)-2^{xy}ysin(x)ln(2)-2^{2xy}=\frac{dy}{dx}(2^{2xy}+2^{xy}xsin(x)ln(2)) \)

\( \frac{dy}{dx}=\frac{2^{xy}cos(x)-2^{xy}ysin(x)ln(2)-2^{2xy}}{2^{2xy}+2^{xy}xsin(x)ln(2)} \)

\( \frac{dy}{dx}=\frac{cos(x)-ysin(x)ln(2)-2^{xy}}{2^{xy}+xsin(x)ln(2)} \)


\( \frac{dy}{dx}=-\frac{ysin(x)ln(2)+2^{xy}-cos(x)}{2^{xy}+xsin(x)ln(2)} \)

Hopefully that's right.


----------



## Sa967St (Feb 29, 2012)

samehsameh said:


> next problem. Find the area between \( y=\frac{1}{x^4+4x^2+3} \) and \( y=0 \). Solutions please, dont just wolfram it.
> 
> Hint
> 
> ...





Spoiler


----------



## Ickathu (Feb 29, 2012)

This is a lot of information to condense into a forum post, so...
"So what's up with that triple equal sign?" (Stanford)


----------



## samehsameh (Feb 29, 2012)

Sa967St said:


> Spoiler


 
Very nice solution. I thought i preferred the complex analytic solution only because its much shorter than yours but yours can be understood by anyone who's done calculus which i guess is better.

Also what are you using to lay that out, LaTeX?


----------



## JonWhite (Mar 1, 2012)

Does anyone even _know_ what the IMO is...


----------



## samehsameh (Mar 1, 2012)

International Mathematical Olympiad?


----------



## JonWhite (Mar 1, 2012)

samehsameh said:


> International Mathematical Olympiad?


 
well at least i'm not being ignored anymore... has anyone here gone to IMO?


----------



## aaronb (Mar 1, 2012)

JonWhite said:


> well at least i'm not being ignored anymore... has anyone here gone to IMO?


 
My middle school did the AMC competitions that led to the IMO, but I don't think my high school does, so I pretty much have no chance of going, unless I want to take the AMC outside of school, and set it up myself somehow. But I'm assuming you have a chance of being able to go, so good luck


----------



## ben1996123 (Mar 1, 2012)

Sahid Velji said:


> Isolate "y" in the following equation: 5y^2-(18/√5)y-7=0
> The answer is √5, but I can't seem to figure out how to actually get there.



\( 5y^{2}-\frac{18y}{\sqrt5}-7=0 \)
\( y=\frac{\frac{-18}{\sqrt5}\pm\sqrt{(\frac{18}{\sqrt5})^{2}-4\times 5\times -7}}{2\times 5} \)
\( y=\frac{\frac{18}{\sqrt5}\pm\sqrt{204.8}}{10} \)
\( y=\frac{\frac{18\sqrt{5}}{5}\pm\frac{32\sqrt{5}}{5}}{10} \)

\( y=\frac{\frac{50\sqrt{5}}{5}}{10} \)
\( y=\frac{50\sqrt{5}}{50} \)
\( y=\sqrt{5} \)
Or:
\( y=\frac{\frac{-14\sqrt{5}}{5}}{10} \)
\( y=\frac{-14\sqrt{5}}{50} \)
\( y=-\frac{7\sqrt{5}}{25} \)


----------



## ben1996123 (Mar 1, 2012)

Sahid Velji said:


> Thanks a lot Ben. Just one last question though, how did you get from that first step in the quote to the second one?



Quadratic formula

\( y=\frac{-b\pm\sqrt{b^{2}-4ac}}{2a} \)

with a = 5, b = \( -\frac{18}{\sqrt{5}} \), c = -7


randomedit: \( 535.4916555^{i}\approx1 \)


----------



## samehsameh (Mar 1, 2012)

Sahid Velji said:


> Thanks a lot Ben. Just one last question though, how did you get from that first step in the quote to the second one?


 
\( \sqrt{204.8}=\sqrt{\frac{1024}{5}}=\frac{\sqrt{1024}}{\sqrt{5}}=\frac{32}{\sqrt{5}}=\frac{32 \sqrt{5}}{5} \)


----------



## ben1996123 (Mar 2, 2012)

samehsameh said:


> \( \sqrt{204.8}=\sqrt{\frac{1024}{5}}=\frac{\sqrt{1024}}{\sqrt{5}}=\frac{32}{\sqrt{5}}=\frac{32 \sqrt{5}}{5} \)



That's exactly what I did


----------



## qqwref (Mar 2, 2012)

JonWhite said:


> has anyone here gone to IMO?


I went to MOPS once.


----------



## ben1996123 (Mar 2, 2012)

How do you isolate x?

\( y=x^{x} \)

failattempt:


Spoiler



\( y=x^{x} \)
\( ln(y)=xln(x) \)
\( \frac{1}{y}\frac{dy}{dx}=ln(x)+1 \)
\( \frac{dy}{dx}=x^{x}(ln(x)+1)=x^{x}ln(x)+x^{x} \)
\( \frac{dx}{dy}=\frac{1}{x^{x}ln(x)+x^{x}} \)
\( x=\int\frac{dy}{x^{x}ln(x)+x^{x}} \)
idk


----------



## JonWhite (Mar 2, 2012)

qqwref said:


> I went to MO*SP* once.



Red/Blue/Black? What year?


----------



## aronpm (Mar 2, 2012)

ben1996123 said:


> How do you isolate x?
> 
> \( y=x^{x} \)


The solution is x = ln(y)/W(ln(y)), where W(z) is the Lambert W function, which is defined as the inverse function of f(w) = we^w.

Yeah...


----------



## qqwref (Mar 4, 2012)

JonWhite said:


> Red/Blue/Black? What year?


Whoops, yeah, sorry about the typo. It was blue, in 2006. (Ancient history!)


----------



## ressMox (Mar 4, 2012)

ben1996123 said:


> How do you isolate x?
> 
> \( y=x^{x} \)
> 
> ...


 
I remember seeing that the answer could only be represented using "regular" (for lack of better word) functions and are instead defined with the use of analytically determined functions. (Similar to what aronpm said) The same way the integral of (e^x)/(x) is represented as Ei(x) where Ei(x) is defined as the exponential integral.


----------



## tozies24 (Mar 4, 2012)

Sahid Velji said:


> I feel pretty stupid asking this, but where can I learn more about this kind of factoring?
> 
> It seems like I have forgotten my basic algebra skills.


 
You see that in the sum you have that (4x-5) and (x^2+3) to some power occur in both terms. You can factor out how ever many of those products you want and then see what remains.

Example: 3^7*2*5 +3*5*2^4= 3^5*2*4(3^2+2)


----------



## tozies24 (Mar 5, 2012)

Sahid Velji said:


> Thanks for your reply, I understand that perfectly but the main problem I had was the coefficients, how do you know where they go from that image? I mean the "2x" and the "3", I always mess up with those when I'm doing questions.


 
So you see how you have an 8x out front of the first and a 12 out front of the second? The greatest common divisor between 8x and 12 is 4. So the writers of the book factored out a 4. Then you have 2x in front of the first term and 3 out front of the second term.


----------



## vcuber13 (Mar 5, 2012)

4*stuff*2x -> 8x*stuff
3*stuff*4 ->12*stuff


----------



## ben1996123 (Mar 5, 2012)

I'm bored. Someone give me a random derivative to do please. No weird functions like Li(x), x!, W(x).


----------



## tozies24 (Mar 5, 2012)

ben1996123 said:


> I'm bored. Someone give me a random derivative to do please. No weird functions like Li(x), x!, W(x).



x*sinx*e^x*lnx*cosx


----------



## blah (Mar 5, 2012)

Hyrtsi said:


> I love maths. I've been doing research on my own on various problems and theorems, even came up with something on my own.
> 
> I'd like to see different ways to solve this:
> 
> Proof that


 


y235 said:


> It's pretty easy.
> 
> 
> Spoiler


 


Sa967St said:


> Spoiler
> 
> 
> 
> ...


 
assumed convergence fail?

\( x = 1 - 1 + 1 - 1 + \cdots \Rightarrow x = 1 - x \Rightarrow x = \frac12 \Rightarrow \text{lololololol} \)

moral of the story: you can't just "set some infinite thingy equal to x" without first proving that such an x exists


----------



## vcuber13 (Mar 5, 2012)

how do you get that?


----------



## AustinReed (Mar 5, 2012)

Hardest for me was basic algebra. Why? I had the teacher that couldn't teach. I suck at math because of him.


----------



## ben1996123 (Mar 5, 2012)

'Extended' product rule:

If \( y = f(x)g(x)h(x)\cdots \) with n functions, and where n(x) is the nth function, \( \frac{dy}{dx}=\sum_{r=1}^{n}\frac{r'(x)y}{r(x)} \). It's probably known, but I found it myself today so I thought I'd post it.



tozies24 said:


> \( y=xsin(x)cos(x)ln(x)e^x \)





Spoiler



\( y=abcdf \) Not using e because \( e^x \)
\( a=x \)
\( b=sin(x) \)
\( c=e^x \)
\( d=ln(x) \)
\( f=cos(x) \)
\( \frac{dy}{dx}=abcd\frac{df}{dx}+abcf\frac{dd}{dx}+abdf\frac{dc}{dx}+acdf\frac{db}{dx}+bcdf\frac{da}{dx} \) extended product rule
\( \frac{da}{dx}=1 \)
\( \frac{db}{dx}=cos(x) \)
\( \frac{dc}{dx}=e^x \)
\( \frac{dd}{dx}=\frac{1}{x} \)
\( \frac{df}{dx}=-sin(x) \)
\( bcdf\frac{da}{dx}=sin(x)cos(x)ln(x)e^x \)
\( acdf\frac{db}{dx}=xcos^2(x)ln(x)e^x \)
\( abdf\frac{dc}{dx}=xsin(x)ln(x)cos(x)e^x \)
\( abcf\frac{dd}{dx}=\frac{xsin(x)cos(x)e^x}{x}=sin(x)cos(x)e^x \)
\( abcd\frac{df}{dx}=-xsin^2(x)ln(x)e^x \)
\( \frac{dy}{dx}=sin(x)cos(x)ln(x)e^x+xcos^2(x)ln(x)e^x \)\( +xsin(x)ln(x)cos(x)e^x+sin(x)cos(x)e^x-xsin^2(x)ln(x)e^x \)


\( \frac{dy}{dx}=e^x(sin(x)cos(x)ln(x)+xcos^2(x)ln(x)+xsin(x)ln(x)cos(x) \) \( +sin(x)cos(x)-xsin^2(x)ln(x)) \)

Here's a derivative for someone to do:

\( x^{sinh(x+y)}=\frac{2^{ln(xy)}}{y^{csc(x)}} \)

Hint: \( \frac{d}{dx}(sinh(x))=cosh(x), \frac{d}{dx}(cosh(x))=sinh(x) \)


----------



## samehsameh (Mar 6, 2012)

Pretty good example ben its all simple calculus just lots and lots of it. Will post a solution tomorrow, its 2:54 am atm and ive got lectures tomorrow morning, been teaching some friends how to cube 

Also someone can try \( \int_{-\infty}^{\infty} \! \frac{x\sin x}{x^2+a^2} \, \mathrm{d} x, a > 0 \) i.e. the area enclosed by \( y=\frac{x\sin x}{x^2+a^2} \) and \( y=0 \)


----------



## RussianWhiteBoi (Mar 6, 2012)

How can a branch of math be the "hardest" if everything connects to each other? It's like you have a million puzzles pieces, and just as you learn a new branch of math you manage to put together a hundred pieces.... only to find out a thousand more are missing. What's difficult for someone depends on which puzzle pieces are already assembled.


Spoiler



sais the man who hasn't even taken calculus yet


----------



## Sa967St (Mar 6, 2012)

Sahid Velji said:


> Twenty people are to travel in a bus from the airport to the hotel at the resort. The bus is designed for use in a tropical climate; it can carry twelve passengers outside and eight inside. If four of the passengers refuse to travel outside and five will not travel inside, in how many ways can the passengers be seated if the combinations of passengers inside or outside is not considered except to take into account these wishes?
> 
> Answer:
> 
> ...



The answer seems low, and it's not even close to what I thought it was. 
How did you arrive at that?


----------



## RussianWhiteBoi (Mar 6, 2012)

We only care about whether someone is seated outside or inside, not the actual seat that they sat at. That being said, since four people refuse to travel outside and five refuse to travel inside, the remaining 11 people need to be seated. 4 need to be placed inside, and the remaining 7 will be outside. In other words, the problem boils down to choosing 4 people out of 11, irregardless of order.

EDIT: a problem I've been working on, ideas?
"Let us agree to say that a non-negative integer is “scattered” if its binary expansion has no occurence of two ones in a row. For example, 37 is scattered but 43 is not, since the binary expansion of 37 is 100101 in which the ones are all separated by at least one zero, while the binary expansion of 43 is 101101 which has two ones in successive places. For an integer n ≥ 0, how many scattered non-negative integers are there less than 2^n?"

I believe that the the answer is the sum of the first n fibonacci numbers, but that seems like a wierd answer...


----------



## Sa967St (Mar 6, 2012)

RussianWhiteBoi said:


> Spoiler
> 
> 
> 
> We only care about whether someone is seated outside or inside, not the actual seat that they said that.


Ah, alright, but that doesn't seem to obvious from the question:


Sahid Velji said:


> If four of the passengers refuse to travel outside and five will not travel inside, in how many ways can the passengers be seated if the combinations of passengers inside or outside is not considered except to take into account these wishes?





Spoiler



I arrived at 3186701844480000 ((12P4)*(8P5)*11!), assuming he was asking for every possible way all the passengers can be arranged, given the conditions.


----------



## hic0057 (Mar 6, 2012)

Off topic, does anyone know of a way to privately learn some of these things through the internet or something. My school does not have any special maths programs for people with abilitys in that area (which is only really me though) so I'll like to be sort of self taught in these things


----------



## ressMox (Mar 6, 2012)

hic0057 said:


> Off topic, does anyone know of a way to privately learn some of these things through the internet or something. My school does not have any special maths programs for people with abilitys in that area (which is only really me though) so I'll like to be sort of self taught in these things


 
Khan Academy has some great videos and tutorials where they explain things in fairly basic terms. Should help for all the lower level and introductory type things (probably from around limits and factorization to common methods of integration and intro to differential equations) but I don't think they've added anything high-level atm. However, what they currently offer should suffice for a while.

For exercises, you could probably find old calc pdfs lying around somewhere on the interwebs, some universities also make their problems sets publicly available. Other than that, there may be some site lying around with a bunch of useful calc exercises and tests/quizzes.


----------



## MostEd (Mar 6, 2012)

my first year of igcse requierd a ti 84 plus
but i happened to go to russia after the first year, so its sitting here dusting


----------



## ben1996123 (Mar 6, 2012)

hic0057 said:


> Off topic, does anyone know of a way to privately learn some of these things through the internet or something. My school does not have any special maths programs for people with abilitys in that area (which is only really me though) so I'll like to be sort of self taught in these things



I learned all the calculus I know from here.


----------



## vcuber13 (Mar 6, 2012)

i learned from http://www.youtube.com/user/patrickJMT


----------



## samehsameh (Mar 6, 2012)

RussianWhiteBoi said:


> EDIT: a problem I've been working on, ideas?
> "Let us agree to say that a non-negative integer is “scattered” if its binary expansion has no occurence of two ones in a row. For example, 37 is scattered but 43 is not, since the binary expansion of 37 is 100101 in which the ones are all separated by at least one zero, while the binary expansion of 43 is *101101* which has two ones in successive places. For an integer n ≥ 0, how many scattered non-negative integers are there less than 2^n?"
> 
> I believe that the the answer is the sum of the first n fibonacci numbers, but that seems like a wierd answer...


 43 = 101011


----------



## samehsameh (Mar 9, 2012)

I found that program a few days ago, its very good for me because i can set it to copy to latex code so i can type my equations in MathType then paste them over, which is a lot easier as the latex code for the question you posted previoisly would be \[{x^{\sinh (x + y)}} = \frac{{{2^{\ln (xy)}}}}{{{y^{\csc (x)}}}}\] which is an arse to get all of the {} in the right places


----------



## ben1996123 (Mar 16, 2012)

"Bump". I just felt like saying that its pretty awesome that \( i^{i}=\frac{1}{\sqrt{e^{\pi}}} \)


----------



## qqwref (Mar 16, 2012)

I got top 25 in the Putnam mathematical competition this year 

And Ravi Fernando, another cuber, got top 15.


----------



## ben1996123 (Mar 16, 2012)

qqwref said:


> I got top 25 in the Putnam mathematical competition this year
> 
> And Ravi Fernando, another cuber, got top 15.



What sort of stuff did you have to do in it? I'd like to enter some sort of competition like this some time.


----------



## qqwref (Mar 16, 2012)

It's not really easy to describe. You can find some past problems here.


----------



## ben1996123 (Mar 16, 2012)

qqwref said:


> It's not really easy to describe. You can find some past problems here.



Looks pretty difficult


----------



## qqwref (Mar 16, 2012)

Yeah, and this year's was especially hard - the best person only got 91 out of 120 possible points o_0


----------



## asportking (Mar 16, 2012)

Hey, I'm hoping someone can help me with this: Next year (my junior year), I'm planning on taking A.P Physics, A.P Bio, and Calculus II/III. However, there's some scheduling conflicts, and I might not be able to fit all of it in, but I could if I took Calc online instead of going to the college. How important would you say it is to have some experience in college classes? The thing I'm worried about is my senior year, having my first college class be some crazy advanced math class (I'm not really sure what comes after Calculus III, I think there's a variety of classes I could take, but I'm betting it won't be any easier).


----------



## tozies24 (Mar 17, 2012)

asportking said:


> Hey, I'm hoping someone can help me with this: Next year (my junior year), I'm planning on taking A.P Physics, A.P Bio, and Calculus II/III. However, there's some scheduling conflicts, and I might not be able to fit all of it in, but I could if I took Calc online instead of going to the college. How important would you say it is to have some experience in college classes? The thing I'm worried about is my senior year, having my first college class be some crazy advanced math class (I'm not really sure what comes after Calculus III, I think there's a variety of classes I could take, but I'm betting it won't be any easier).



First, you should decide what you want to do with college, for example, what kind of a major are you looking at, or what kind of school. I would definitely consider taking the Calculus II and III and have that a high priority. AP Physics is probably a good class to take especially if you are looking at an engineering discipline or mathematics in college. Likewise, if you are looking at biology or biological sciences, then do AP biology. I don't think you should stress too much about college classes being hard since you are a junior and are already in Calc II. The first college class you would most likely take is a linear algebra and differential equations (Assuming that Calculus III is multivariable). In my opinion, differential equations are really not that bad when you learn them so you shouldn't be worried. Multivariable and linear algebra are both at about the same level of difficulty but they are just different. Hopefully this helps.


----------



## asportking (Mar 17, 2012)

tozies24 said:


> First, you should decide what you want to do with college, for example, what kind of a major are you looking at, or what kind of school. I would definitely consider taking the Calculus II and III and have that a high priority. AP Physics is probably a good class to take especially if you are looking at an engineering discipline or mathematics in college. Likewise, if you are looking at biology or biological sciences, then do AP biology. I don't think you should stress too much about college classes being hard since you are a junior and are already in Calc II. The first college class you would most likely take is a linear algebra and differential equations (Assuming that Calculus III is multivariable). In my opinion, differential equations are really not that bad when you learn them so you shouldn't be worried. Multivariable and linear algebra are both at about the same level of difficulty but they are just different. Hopefully this helps.


Thanks for the information! I'll admit, I don't really need to take A.P Biology, although it's mainly the A.P Physics that's the scheduling conflict (A.P Physics and Calc II/III are probably going to be the same hour, and A.P Bio _might_ be the same hour as well). I'm definitely planning on taking both physics and calc no matter what, but the main question I'm getting at is if taking classes at the college in person are any more difficult than the same courses taken online (like maybe it's a more strict environment, or maybe the class moves a little faster), because if they are, I'd rather start off taking college classes in a relatively easy class like Calculus II rather than linear algebra.


----------



## tozies24 (Mar 17, 2012)

asportking said:


> Thanks for the information! I'll admit, I don't really need to take A.P Biology, although it's mainly the A.P Physics that's the scheduling conflict (A.P Physics and Calc II/III are probably going to be the same hour, and A.P Bio _might_ be the same hour as well). I'm definitely planning on taking both physics and calc no matter what, but the main question I'm getting at is if taking classes at the college in person are any more difficult than the same courses taken online (like maybe it's a more strict environment, or maybe the class moves a little faster), because if they are, I'd rather start off taking college classes in a relatively easy class like Calculus II rather than linear algebra.


 
You could even do AP physics the next year after that if you wanted to. I took physics when I was a senior (not AP) and it really didn't affect much. Personally, I cannot learn very well by looking at stuff online and almost need a classroom environment to learn stuff. So I don't know what to tell you with the online math courses. In my opinion, do it in the classroom because you can meet people and other stuff like that.


----------



## asportking (Mar 17, 2012)

tozies24 said:


> You could even do AP physics the next year after that if you wanted to. I took physics when I was a senior (not AP) and it really didn't affect much. Personally, I cannot learn very well by looking at stuff online and almost need a classroom environment to learn stuff. So I don't know what to tell you with the online math courses. In my opinion, do it in the classroom because you can meet people and other stuff like that.


Actually, AP Physics is only offered every other year (they do AP Chem the other year), so this is the only year I can take it. I think I'll try my best to get into both classes, maybe by asking the teacher to switch hours or to offer another class, but I'll try to make taking it online my last option if all else fails.


----------



## IanTheCuber (Mar 17, 2012)

So, right now I'm trying to learn Algebra II/Trigonometry. It ain't that easy for someone my age. Someone help me out?


----------



## aronpm (Mar 17, 2012)

IanTheCuber said:


> So, right now I'm trying to learn Algebra II/Trigonometry. It ain't that easy for someone my age. Someone help me out?


 
1) age isn't THAT important...
2) Help you out? With what? Unless you specify a particular thing you are having trouble with, that sounds like you just want someone to explain everything to you >_> It's like if somebody sent me a PM, "Help me with BLD." Okay... do you want me to teach you BLD from scratch? Because I am not going to.


----------



## asportking (Mar 17, 2012)

I'd help, but you have to tell us specifically what you need help with.


----------



## IanTheCuber (Mar 17, 2012)

aronpm said:


> 1) age isn't THAT important...
> 2) Help you out? With what? Unless you specify a particular thing you are having trouble with, that sounds like you just want someone to explain everything to you >_> It's like if somebody sent me a PM, "Help me with BLD." Okay... do you want me to teach you BLD from scratch? Because I am not going to.


 


asportking said:


> I'd help, but you have to tell us specifically what you need help with.


 
I need help with sine, costine and tangent. So far I know about the formulas (Sorry that I couldn't put equations in):



Spoiler



Sine=Opposite/Hypotenuse
Costine=Adjacant/Hypotenuse
Tangent=Opposite/Adjacant
"Some Old Horses Can Always Hear Their Owners Approach"


----------



## aronpm (Mar 17, 2012)

IanTheCuber said:


> I need help with sine, costine and tangent. So far I know about the formulas (Sorry that I couldn't put equations in):
> 
> 
> 
> ...


 
This pretty much sums it up:





sine of alpha = a/h
cosine of alpha = b/h
tangent of alpha = a/b
(alpha is the a-looking character, the angle BAC)


----------



## JasonK (Mar 17, 2012)

IanTheCuber" said:


> "Some Old Horses Can Always Hear Their Owners Approach"



This seems ridiculously long-winded. When I was first learning trig I just used SOHCAHTOA (pronounced "socatoa").


----------



## jonlin (Mar 17, 2012)

Sahid Velji said:


> Spoiler
> 
> 
> 
> Why does it do nothing for 1 and 2? The answers should be 1 and 2 respectively.


 
Respectively, 0! should be 1.


----------



## ben1996123 (Mar 17, 2012)

So I start college in September and I will have Math's 8 times per week and physics/chemistry 8 times per week (assuming I don't fail English (need 5 A*-C grades including Math's and English))

Grades I'm currently at:

English: D
Math's/physics/chemistry/biology/IT/statistics/German: A*


----------



## JohnLaurain (Mar 17, 2012)

IanTheCuber said:


> So, right now I'm trying to learn Algebra II/Trigonometry. It ain't that easy for someone my age. Someone help me out?


 
How old are you? Trigonometry can be easy as long as you know how to apply the functions. At first, I just read the chapters and worked through the example problems with the book guiding me. Then I reread the chapter and did ~15 problems for each of the sections of the chapter, and now I can work through almost all of the problems in the Trigonometry section of the book. For me, the right triangle Trigonometry wasn't that hard to learn, and now I'm learning Trigonometry for all angles. (I'm in 8th grade in Algebra I right now)


----------



## asportking (Mar 17, 2012)

What "level" trigonometry are you trying to learn? Like, are you doing the basic trig that you learn in geometry ( sine, cosine, tangent, law of sines, things like that) or are you doing more of a pre-calc level trig (like inverse trig, secant, cosecant, cotangent, and trig graphs)?


----------



## JohnLaurain (Mar 17, 2012)

^ Not sure who you're talking to (due to lack of quotes) so I'm just going to assume it's to me. I've done since, cosine, tangent, cotangent, secant, and cosecant already.


----------



## ben1996123 (Mar 17, 2012)

\( i^{\frac{-2i}{\pi}}=e \)


----------



## cubingawsumness (Mar 17, 2012)

What's "enriched geometry"?


----------



## asportking (Mar 17, 2012)

cubingawsumness said:


> What's "enriched geometry"?


Sort of like "advanced geometry." I've seen some people also call it "proof geometry" as well, as opposed to just "geometry."


----------



## JonWhite (Mar 18, 2012)

who else failed the AIME like I did


----------



## cubingawsumness (Mar 18, 2012)

asportking said:


> Sort of like "advanced geometry." I've seen some people also call it "proof geometry" as well, as opposed to just "geometry."


 
oh. that must be what I'm doing right now. gahhhh... i am hating on whoever invented proofs. I mean, they're a great way to organize your thoughts and stuff, but require theorems for reasoning, and just takes too long. I'm in 8th grade, and I heard the geometry in high school is way easier, with barely any proofs. Not fair.


----------



## Ranzha (Mar 18, 2012)

cubingawsumness said:


> oh. that must be what I'm doing right now. gahhhh... i am hating on whoever invented proofs. I mean, they're a great way to organize your thoughts and stuff, but require theorems for reasoning, and just takes too long. I'm in 8th grade, and I heard the geometry in high school is way easier, with barely any proofs. Not fair.


 
This happened to me too xD
We had to write down scores of postulates and theorems and corollaries in a little blue book. Great resource, gotta admit. Indexed and everything. And we all had them in the same order, so we all knew what theorem 7.2.1 was, for example. Made proof-writing a bit easier.


----------



## Cool Frog (Mar 18, 2012)

So today I was at this school function thingmajig.

So I just went in and 1/0

Needless to say the school isn't there anymore. I was barely able to escape; good thing I am a dragon.


----------



## Ranzha (Mar 18, 2012)

Cool Frog said:


> So today I was at this school function thingmajig.
> 
> So I just went in and 1/0
> 
> Needless to say the school isn't there anymore. I was barely able to escape; good thing I am a dragon.


 
I thought you were a...
Cool Frog.


Spoiler



NOOOOOOOOOOOO


----------



## asportking (Mar 18, 2012)

cubingawsumness said:


> oh. that must be what I'm doing right now. gahhhh... i am hating on whoever invented proofs. I mean, they're a great way to organize your thoughts and stuff, but require theorems for reasoning, and just takes too long. I'm in 8th grade, and I heard the geometry in high school is way easier, with barely any proofs. Not fair.


Yeah, I didn't really like proofs either, but it's a lot more useful in real life. Like, in class, you're told to prove that two angles are the same. In the real world, you don't even know if the two angles _are_ the same, and just saying "they look about the same" isn't going to cut it. They make you show proofs so that you can understand your reasoning behind things.


----------



## ben1996123 (Mar 19, 2012)

How do you prove this?

\( \sum_{n=1}^{x}n^{2}=\frac{x(x+1)(2x+1)}{6} \)


----------



## tozies24 (Mar 19, 2012)

ben1996123 said:


> How do you prove this?
> 
> \( \sum_{n=1}^{x}n^{2}=\frac{x(x+1)(2x+1)}{6} \)



mathematical induction on n.

here is an outline of what induction is:
There are two steps.

1. Prove that the base case works. 
2. Assume that is works for the nth term. so what you have above. Then you want to show that it works for n+1.

So for your problem, 1^2 = 1= 1(1+1)(2*1+1)/6 = 1. So the base case works.

Now we take the inductive step: assume that it works for n. We want to show it works for n+1.
So we have SUM : (n+1)^2 = n^2 +2n + 1. BUT we know what n^2 is by the induction hypothesis. 
So (n+1)^2 = n^2 + 2n + 1 = n(n+1)(2n+1)/6 + 2n+1. Then you can do some algebra and you will find out that that equals (n+1)(n+1+1)(2(n+1)+1)/6. So you have showed that this is true for all n. END PROOF.

Hopefully this helps, sorry for not using fancy math computer writing too.


----------



## Cool Frog (Mar 19, 2012)

Ranzha V. Emodrach said:


> I thought you were a...
> Cool Frog.
> 
> 
> ...


 I have legs of a frog, Body of a catapilla, and soul and mind of a dragon.


----------



## ben1996123 (Mar 19, 2012)

tozies24 said:


> mathematical induction on n.
> 
> here is an outline of what induction is:
> There are two steps.
> ...



How would you find the equation if you didn't know that you were specifically looking for \( \frac{n(n+1)(2n+1)}{6} \)?


----------



## tozies24 (Mar 19, 2012)

ben1996123 said:


> How would you find the equation if you didn't know that you were specifically looking for \( \frac{n(n+1)(2n+1)}{6} \)?



Probably just look at it and look for a pattern? I am not sure what you are asking. 
I guess you would look at what each of the terms of the sequence of partial sums is. So look at the sequence of the finite sum of n^2.

1, 5, 14, 30, 55, 91, etc. 

Then you could find a function that describes these outputs where the function goes from the natural numbers to the natural numbers. 
Even though this would be cheating, you could plug these values into a graphing calculator and hit the button for cubic line or whatever its called and then you would get the equation (2n^3+3n^2+n)/6.

I am not sure how the people who found these equations did it (either guess and check or something I don't know). Maybe they just looked at it for a while and then wrote down the answer because they were that brilliant.


----------



## qqwref (Mar 19, 2012)

cubingawsumness/asportking: The "proofs" they have you do in geometry are definitely more work than they need to be, but don't let that put you off the idea of proofs themselves. In actual math you don't have to explain things in extreme detail and justify every single step with a theorem, so proofs are often short and elegant, explaining why something is true when it's not immediately clear. In fact, all of the higher math (that is, the more interesting stuff) is based off proving things to be true.

ben1996123: If you're wondering about the motivation for that expression, one way to try to find it would be to write out a sequence of sums-of-squares, and then take finite differences (see wikipeda) a few times to realize that the sequence seems to be a cubic polynomial. (Finite differences would let you see if any expression works out to a polynomial of integers.) From there you could either do a system of equations or work through induction to get the actual equation. In general, problems of sequences and differential equations are a lot easier when you can guess the general form of the answer.


----------



## samehsameh (Mar 19, 2012)

ben1996123: I wrote out a solution for you then i saw that qqwref posted how to do it but so i didnt waste my time here it is anyway.


Spoiler


----------



## ben1996123 (Mar 20, 2012)

samehsameh said:


> ben1996123: I wrote out a solution for you then i saw that qqwref posted how to do it but so i didnt waste my time here it is anyway.
> 
> 
> Spoiler



Thanks, yay matrices. I guess I'll learn about matrices tomorrow so I can understand it


----------



## cubernya (Mar 20, 2012)

Has anyone ever proved using maths that god'd number is 20?


----------



## jeff081692 (Mar 20, 2012)

theZcuber said:


> Has anyone ever proved using maths that god'd number is 20?



I found the history interesting.
http://www.cube20.org/


----------



## samehsameh (Mar 20, 2012)

ben1996123: For the purpose of Gaussian elimination (which is what i did) they're just tables of coefficients. see the 4 equations above the first matrix, thats the set of equations im trying to solve, i had 4 unknowns in my cubic equation so i needed 4 equations to solve them. So column 1 represnts contant a, column 2 represents b, column 3 represents c and column 4 represents d. Im sure you could solve the equations 2x+3y=13 and x-2y=-4 simultaneously. You eliminate one variable then solve for the other then substitute that back into the original to find the variable you eliminated. This is essentially Gaussian Elimination on 2 equations in 2 unknowns. If you zoom into the picture, while it is blury, they're little notes like r4 - 64 x r1 which are just what im doing, i.e. im taking row 1 away from row 4 64 times, eliminating the first variable. The vertical line to the right of the matrices are basically = signs. So you read the first row of the matrix as a + b + c + d = 1 etc. In the 3rd matrix, i make it so that the first non zero element of each row is equal to 1, this makes it easier to eliminate them in the next step since i can do r3-r2 instead of r3 -(4.5) x r2. Remember what i do to the first element i do the the others on that row, with the corresponding element in the other row. The idea of Gaussian Elimination is to end up with the identity matrix (a square matrix with 1's on the diagonal, zeros every where else) excluding the numbers after the vertical line. You do this by eliminating down the equations which is what i did, then elimating up the equations, i stopped before eliminating upwards and used backwards substitution instead because its only 4 equations, huge matrices i would suggest finishing Gaussian elimination. Hope that helps getting you started in matrices.


----------



## Christopher Mowla (Mar 20, 2012)

@samehsameh and qqwref, I don't like that approach.


Ben, I found this problem interesting because I always just saw it proved with induction.

With some effort and luck, I made my own _direct proof_.

It took me several hours to complete it, but the math behind it is _very simple_. Here is another direct proof that I found after I made mine, but I think mine is much easier to understand.

We need to show that \( \sum\limits_{i=1}^{n}{i^{2}}=\frac{n\left( n+1 \right)\left( 2n+1 \right)}{6} \)

*Proof* (Direct)


Spoiler



Observe the following graph.





Notice that the areas of the squares which have vertices from the point (0,0) to the points (1,1), (2,2), (3,3), and (4,4) are (1)(1) = 1, (2)(2) = 4, (3)(3) = 9, and (4)(4) = 16, respectively.

Representing the area of each square in terms of the area of the square before it,
\( \left( 1 \right)\left( 1 \right)=\left( 1 \right)\left( 1 \right) \)
\( \left( 2 \right)\left( 2 \right)=\left( 1 \right)\left( 1 \right)+3\left( 1 \right)\left( 1 \right) \)
\( \left( 3 \right)\left( 3 \right)=\left( 2 \right)\left( 2 \right)+5\left( 1 \right)\left( 1 \right)=\left( 1 \right)\left( 1 \right)+3\left( 1 \right)\left( 1 \right)+5\left( 1 \right)\left( 1 \right) \)
\( \left( 4 \right)\left( 4 \right)=\left( 3 \right)\left( 3 \right)+7\left( 1 \right)\left( 1 \right)=\left( 1 \right)\left( 1 \right)+3\left( 1 \right)\left( 1 \right)+5\left( 1 \right)\left( 1 \right)+7\left( 1 \right)\left( 1 \right) \)
\( \vdots \)
\( \left( n \right)\left( n \right)=... \)
\( \text{So }\sum\limits_{i=1}^{n}{i^{2}}=\left( 1 \right)\left( 1 \right)+\left[ \left( 1 \right)\left( 1 \right)+3\left( 1 \right)\left( 1 \right) \right]+\left[ \left( 1 \right)\left( 1 \right)+3\left( 1 \right)\left( 1 \right)+5\left( 1 \right)\left( 1 \right) \right]+\cdot \cdot \cdot \)
\( =1+\left( 1+3 \right)+\left( 1+3+5 \right)+\left( 1+3+5+7 \right)+\cdot \cdot \cdot \)

We can see from the equation above that there will be _n_ 1's, \( \left( n-1 \right) \) 3's, \( \left( n-2 \right) \) 5's, etc., in the summation.

\( =1\left( n-0 \right)+3\left( n-1 \right)+5\left( n-2 \right)+7\left( n-3 \right)+9\left( n-4 \right)+\cdot \cdot \cdot \)

\( =\sum\limits_{i=1}^{n}{\left( 2i-1 \right)\left( n-\left( i-1 \right) \right)} \) \( =\sum\limits_{i=1}^{n}{\left( 2i-1 \right)\left( n-i+1 \right)} \) \( =\sum\limits_{i=1}^{n}{-2i^{2}+n2i+3i-n-1} \) \( =\sum\limits_{i=1}^{n}{-2i^{2}+\left( 2n+3 \right)i-\left( n+1 \right)} \)
\( =-2\sum\limits_{i=1}^{n}{\left[ i^{2} \right]}+\left( 2n+3 \right)\sum\limits_{i=1}^{n}{\left[ i \right]}-\left( n+1 \right)\sum\limits_{i=1}^{n}{\left[ 1 \right]} \)
\( =-2\sum\limits_{i=1}^{n}{\left[ i^{2} \right]}+\left( 2n+3 \right)\left[ \frac{n\left( n+1 \right)}{2} \right]-\left( n+1 \right)\left[ n \right] \)
\( =-2\sum\limits_{i=1}^{n}{\left[ i^{2} \right]}+\frac{n\left( n+1 \right)\left( 2n+3 \right)-2n\left( n+1 \right)}{2} \)
\( =-2\sum\limits_{i=1}^{n}{\left[ i^{2} \right]}+\frac{n\left( n+1 \right)\left[ \left( 2n+3 \right)-2 \right]}{2} \)
\( \sum\limits_{i=1}^{n}{i^{2}}=-2\sum\limits_{i=1}^{n}{\left[ i^{2} \right]}+\frac{n\left( n+1 \right)\left( 2n+1 \right)}{2} \)
\( \Rightarrow \left( 1+2 \right)\sum\limits_{i=1}^{n}{i^{2}}=\frac{n\left( n+1 \right)\left( 2n+1 \right)}{2} \)
\( \Rightarrow 3\sum\limits_{i=1}^{n}{i^{2}}=\frac{n\left( n+1 \right)\left( 2n+1 \right)}{2} \)
\( \Rightarrow \sum\limits_{i=1}^{n}{i^{2}}=\frac{1}{3}\frac{n\left( n+1 \right)\left( 2n+1 \right)}{2} \)
\( \Rightarrow \sum\limits_{i=1}^{n}{i^{2}}=\frac{n\left( n+1 \right)\left( 2n+1 \right)}{6} \)

Therefore, \( \sum\limits_{i=1}^{n}{i^{2}}=\frac{n\left( n+1 \right)\left( 2n+1 \right)}{6} \)
Q.E.D.


----------



## qqwref (Mar 21, 2012)

Shortening of cmowla's proof:



Spoiler



*Proof*
Using cmowla's image, we can see that
\( n^2 = \sum\limits_{i=1}^{n}{2i-1} \)

Let
\( k = \sum\limits_{j=1}^{n}{j^2} \)
Then we can write
\( k = \sum\limits_{j=1}^{n} \sum\limits_{i=1}^{j} {2i-1} \)
\( = \sum\limits_{i=1}^{n} \sum\limits_{j=i}^{n} {2i-1} \)
\( = \sum\limits_{i=1}^{n} {(n-i+1)(2i-1)} \)
\( = \sum\limits_{i=1}^{n} {\left(-2i^2 + (2n+3)i - (n+1)\right)} \)
\( = -2 k + (2n+3) \sum\limits_{i=1}^{n}\left(i\right) - (n+1)\sum\limits_{i=1}^{n}\left(1\right) \)
\( = -2 k + (2n+3) \frac{n(n+1)}{2} - n(n+1) \)
\( = -2 k + n(n+1)(\frac{2n+3}{2} - 1) \)
\( = -2 k + \frac{n(n+1)(2n+1)}{2} \)

Assuming k exists and is finite (very reasonable assumptions), we can directly solve for it:
\( k = -2 k + \frac{n(n+1)(2n+1)}{2} \)
\( 3k = \frac{n(n+1)(2n+1)}{2} \)
\( \sum\limits_{j=1}^{n}{j^2} = k = \frac{n(n+1)(2n+1)}{6} \)


----------



## Christopher Mowla (Mar 21, 2012)

Haha, have fun qqwref!

I have proved the formula for \( \sum\limits_{i=1}^{n}{i^{3}} \) in a similar manner. I then went to see about \( \sum\limits_{i=1}^{n}{i^{4}} \) and I found the formula for that one too. 

In fact, I found a pattern.

This probably existed for several hundred years already, but here is a recursion formula I ultimately ended up with.

\( \sum\limits_{i=1}^{n}{i^{R}}=\sum\limits_{i=1}^{n}{\frac{\left( i-n-1 \right)\left( i-1 \right)^{R}+\left( R-i+n+1 \right)i^{R}}{R+1}} \)​
, where _R_ is the power of the sum. It works for R = 1 to infinity (it doesn't work for \( \sum\limits_{i=1}^{n}{i^{0}} \)).


Note that, even though the recursion formula has _R_ (when it should be _R_-1), after you substitute a number in for _R_ and expand, the highest exponent remaining will always be _R_-1.

I made it using the "trick" of my proof along with seeing how to derive the higher power sums (greater than 2).

For example, suppose we want to find the formula for \( \sum\limits_{i=1}^{n}{i^{4}} \).

Substitute 4 for _R_ in the series.

\( \sum\limits_{i=1}^{n}{i^{4}}=\sum\limits_{i=1}^{n}{\frac{\left( i-n-1 \right)\left( i-1 \right)^{4}+\left( 4-i+n+1 \right)i^{4}}{4+1}} \)

\( \sum\limits_{i=1}^{n}{i^{4}}=\frac{1}{5}\sum\limits_{i=1}^{n}{\left[ i^{3}\left( 4n+10 \right)-i^{2}\left( 6n+10 \right)+i\left( 4n+5 \right)-\left( n+1 \right) \right]} \) (see, \( i^{3} \) is the highest degree term).

\( =\frac{1}{5}\left( \left[ \frac{n^{2}\left( n+1 \right)^{2}}{4} \right]\left( 4n+10 \right)-\left[ \frac{n\left( n+1 \right)\left( 2n+1 \right)}{6} \right]\left( 6n+10 \right) \right) \) \( +\frac{1}{5}\left( \left[ \frac{n\left( n+1 \right)}{2} \right]\left( 4n+5 \right)-\left( n+1 \right)\left[ n \right] \right) \)

\( =...=\frac{n\left( n+1 \right)\left( 2n+1 \right)\left( 3n^{2}+3n-1 \right)}{30} \)


----------



## aronpm (Mar 26, 2012)

Let's see how I do with [noparse]\( [/noparse]

First let's find \( \sum\limits_{i=1}^{n}{i} \)
\( \sum\limits_{i=1}^{n}{i} = 1 + 2 + ... + (n-1) + n = n + (n-1) + ... + 2 + 1 \)

\( 2\sum\limits_{i=1}^{n}{i} = (n+1) + (n-1+2) + ... + (2+n-1) + (1+n) \)

This (n+1) term is repeated n times, so
\( 2\sum\limits_{i=1}^{n}{i} = n(n+1) \)

\( \sum\limits_{i=1}^{n}{i} = \frac{n(n+1)}{2} \)

Also, it's fairly trivial that \( \sum\limits_{i=1}^{n}{1} = 1+1+...+1+1 = n \)

To find the sum of squares we'll consider the sum of cubes:
\( \sum\limits_{i=1}^{n}{i^3} = 1^3 + 2^3 + ... (n-1)^3 + n^3 \)

\( \sum\limits_{i=1}^{n}{(i-1)^3} = 0^3 + 1^3 + ... (n-2)^3 + (n-1)^3 \)

Taking the difference of the two yields:
\( \sum\limits_{i=1}^{n}{i^3} - \sum\limits_{i=1}^{n}{(i-1)^3} = 1^3 + 2^3 + ... n^3 - (1^3 + 2^3 + ... + (n-1)^3) = n^3 \)

If we re-arrange, expand and combine:
\( n^3 = \sum\limits_{i=1}^{n}{(i^3 - (i^3 - 3i^2 + 3i - 1))} = \sum\limits_{i=1}^{n}{(3i^2 - 3i + 1)} \)

Expanding the sum we get
\( n^3 = 3\sum\limits_{i=1}^{n}{i^2} - 3\sum\limits_{i=1}^{n}{i} + \sum\limits_{i=1}^{n}{1} = 3\sum\limits_{i=1}^{n}{i^2} - \frac{3n(n+1)}{2} + n \)

Now we can solve for the sum
\( 3\sum\limits_{i=1}^{n}{i^2} = n^3 + \frac{3n(n+1)}{2} - n = n^3 + \frac{3}{2}n^2 + \frac{1}{2}n \)

\( \sum\limits_{i=1}^{n}{i^2} = \frac{n^3}{3} + \frac{n^2}{2} + \frac{n}{6} = \frac{n(2n^2 + 3n + 1)}{6} = \frac{n(2n+1)(n+1)}{6} \)


I think this is easier to understand than the other proofs given

edit: btw it's not my proof. It was the one the lecturer showed us in my calculus lecture today. \)


----------



## Christopher Mowla (Mar 26, 2012)

aronpm said:


> \( 2\sum\limits_{i=1}^{n}{i} = (n+1) + (n-1+2) + ... + (2+n-1) + (1+n) \)


 How did your instructor say he got that \( 2\sum\limits_{i=1}^{n}{i}=n\left( n \right)+n\left( 1 \right)=n\left( n+1 \right) \)? Yes they _turn out_ to be equal, but I cannot see any justification. This right hand side of that equation is showing the result you are trying to prove.



aronpm said:


> Taking the difference of the two yields:
> \( \sum\limits_{i=1}^{n}{i^3} - \sum\limits_{i=1}^{n}{(i-1)^3} = 1^3 + 2^3 + ... n^3 - (1^3 + 2^3 + ... + (n-1)^3) = n^3 \)


Again, it is not immediately obvious why \( \sum\limits_{i=1}^{n}{i^{3}}-\sum\limits_{i=1}^{n}{\left( i-1 \right)^{3}}=n^{3} \) (yes they are equal, but how is that shown?). I mean, he did truncate off the zero from \( \sum\limits_{i=1}^{n}{\left( n-1 \right)^{3}} \), but then when you match the terms to subtract, you must add one more term to be able to subtract the first _n_ cubes from each other. 
\( 1^{3}+2^{3}+\cdot \cdot \cdot +n^{3}-\left( 1^{3}+2^{3}+\cdot \cdot \cdot +\left( n-1 \right)^{3}+n^{3} \right)=0 \)
.
Even if I didn't add the \( n^{3} \) back, 

\( 1^{3}+2^{3}+\cdot \cdot \cdot +n^{3}-\left( 1^{3}+2^{3}+\cdot \cdot \cdot \left( n-1 \right)^{3} \right)=n^{3}-\left( n-1 \right)^{3}\ne n^{3} \).

I cannot see how you can know that \( \sum\limits_{i=1}^{n}{i^{3}}-\sum\limits_{i=1}^{n}{\left( i-1 \right)^{3}}=n^{3} \).

The way I see it, your instructor showed how you prove that \( \sum\limits_{i=1}^{n}{i^{2}}=\frac{n\left( n+1 \right)\left( 2n+1 \right)}{6} \) _already knowing (not proving at all)_ that \( \sum\limits_{i=1}^{n}{i^{3}}-\sum\limits_{i=1}^{n}{\left( i-1 \right)^{3}}=n^{3} \).


----------



## Christopher Mowla (Mar 26, 2012)

Here's a direct proof I just came up with for \( \sum\limits_{i=1}^{n}{i}=\frac{n\left( n+1 \right)}{2} \).

We need to prove that \( \sum\limits_{i=1}^{n}{i}=\frac{n\left( n+1 \right)}{2} \).
Proof


Spoiler



Consider adding an odd number of consecutive integers.

\( 1+2+3=\left( 3 \right)2 \)
\( 1+2+3+4+5=\left( 5 \right)3 \)
\( 1+2+3+4+5+6+7=\left( 7 \right)4 \)
...

(Where the number in parenthesis is the last/largest integer). 

Let _n_ represent the odd number of consecutive integers which we add.

Let's write ordered pairs based off of the multiples of the largest number (which is an odd number).

Note that the ordered pairs are of the form:
(Number of consecutive integers, multiple of the largest integer added)

\( \left\{ \left( 3,2 \right),\left( 5,3 \right),\left( 7,4 \right) \right\} \)

\( \frac{3-2}{5-3}=\frac{4-3}{7-5}=\frac{1}{2}=m \)

Just using the point \( \left( 7,4 \right) \) and the slope, we can write a linear equation which satisfies both.

\( y-4=\frac{1}{2}\left( n-7 \right)\Rightarrow y=\frac{1}{2}n-\frac{7}{2}+4=\frac{1}{2}n-\frac{7}{2}+\frac{8}{2}=\frac{1}{2}n+\frac{1}{2} \).

\( =\frac{1}{2}\left( n+1 \right) \)

(Note that we can be certain that the slope is constant because the integers we are adding increase by one each time).

So \( f\left( n \right)=\frac{1}{2}\left( n+1 \right) \) gives us the multiples of the largest (last) integer added (which is odd), *not the sum*.

Recall that _n_ represents the last/largest integer in the sum (see the original sums of integers). So the sum of the first _n_ integers (where _n_ is an odd number) is the following (refer back to the beginning):

\( n\left( \frac{1}{2}\left( n+1 \right) \right)=\frac{n\left( n+1 \right)}{2}. \)

-------
If we instead add an even number of consecutive integers (that is, _n_ is an even number).

\( 1+2=\left( 1 \right)+1 \)
\( 1+2+3+4=\left( 1+2+3 \right)+4 \)
\( 1+2+3+4+5+6=\left( 1+2+3+4+5 \right)+6 \)

Clearly the sum will be (based on our findings for an odd number of consecutive integers): 

\( \frac{\left( n-1 \right)\left( \left( n-1 \right)+1 \right)}{2}+n=\frac{n\left( n+1 \right)}{2} \).

Therefore the sum of both an odd number and even number of consecutive integers is \( \frac{n\left( n+1 \right)}{2} \).

Therefore \( \sum\limits_{i=1}^{n}{i}=\frac{n\left( n+1 \right)}{2} \).

Q.E.D.


----------



## aronpm (Mar 26, 2012)

cmowla said:


> How did your instructor say he got that \( 2\sum\limits_{i=1}^{n}{i}=n\left( n \right)+n\left( 1 \right)=n\left( n+1 \right) \)? Yes they _turn out_ to be equal, but I cannot see any justification. This right hand side of that equation is showing the result you are trying to prove.


Uh... isn't it... kind of... obvious? For each term (n-i) you've got a term (i+1) so you add them together to get (n+1), and each sum had n terms. I didn't see any justification when you said


> We can see from the equation above that there will be n 1's, (n-1) 3's, (n-2) 5's, etc., in the summation.





> Again, it is not immediately obvious why \( \sum\limits_{i=1}^{n}{i^{3}}-\sum\limits_{i=1}^{n}{\left( i-1 \right)^{3}}=n^{3} \) (yes they are equal, but how is that shown?).


Again, how is that not obvious? You've got the first n cubes, and you take the first n-1 cubes away. What do you have left?


Spoiler






> 10:25 PM - aronpm: let me ask you a question
> 10:25 PM - aronpm: if you have the first n cubes, and you take away the first (n-1) cubes, what do you have left?
> 10:26 PM - ***: So you're saying that if you had 50 cubes and took away the first 49 cubes what you'd have left?
> 10:26 PM - aronpm: yes
> ...





> 10:31 PM - aronpm: btw when I said cubes you realised I meant like 1^3 + 2^3 + ... + n^3 right?
> 10:31 PM - aronpm: - (1^3 + 2^3 + ... (n-1)^3)
> 10:31 PM - ***: Yeah, but the clever play on words seemed like a simpler way to explain it.








> I mean, he did truncate off the zero from \( \sum\limits_{i=1}^{n}{\left( n-1 \right)^{3}} \)


No, that was me, and I did it for brevity. 0^3 is 0, and I am pretty certain that if you're reading a proof with summations, you know that subtracting 0 doesn't do a damn thing. Are you really going to complain that I left out a 0^3 term? I guess I should start writing \( \int_0^1 \! x^2 \, \mathrm{d}x = \frac{1^3}{3} - \frac{0^3}{3} \) too



> but then when you match the terms to subtract, you must add one more term to be able to subtract the first _n_ cubes from each other.


No, you're not subtracting the first n cubes from each other. That's why it explicitly says (i-1) right there. You're not stopping at n^3, you stop at (n-1)^3



> \( 1^{3}+2^{3}+\cdot \cdot \cdot +n^{3}-\left( 1^{3}+2^{3}+\cdot \cdot \cdot \left( n-1 \right)^{3} \right)=n^{3}-\left( n-1 \right)^{3}\ne n^{3} \).


You really wanted me to specify that the n is the same in both sums? It's not an index, it doesn't get 'reset' every time I move onto to a different sum. It's a constant variable throughout the entire thing.



> I cannot see how you can know that \( \sum\limits_{i=1}^{n}{i^{3}}-\sum\limits_{i=1}^{n}{\left( i-1 \right)^{3}}=n^{3} \).


I cannot see how you can't see that from the expansion (or even saying it in words, re: spoilered conversation)


----------



## samehsameh (Mar 26, 2012)

He doesnt need to justify everything if its obvious. If people had to justify things that had already been proven, then proofs would be so much longer.
\( {\text{Need to show that }}\sum\limits_{i = 1}^n i = \frac{{n(n + 1)}}{2}. \)
\( {\text{Let }}n{\text{ be some small value, say 5}}{\text{.}} \)
\( 
{\text{Then}} \hfill \\
\)
\( 
2\sum\limits_{i = 1}^n i = 2\sum\limits_{i = 1}^5 i = \sum\limits_{i = 1}^5 {2i} = 2 + 4 + 6 + 8 + 10 \)\( = (n - 3) + (n - 1) + (n + 1) + (n + 3) + 2n = 6n \hfill \\ 
\)
\( {\text{We already said }}6 = (n + 1){\text{, in the expansion so}} \)
\( 6n = (n + 1)n. \)
\( {\text{So}} \)
\( 2\sum\limits_{i = 1}^n i = (n + 1)n, \)
\( \sum\limits_{i = 1}^n i = \frac{{n(n + 1)}}{2},{\text{for}} n = 5{\text{.}} \)
\( {\text{Claim }}\frac{{n(n + 1)}}{2}{\text{, is correct for all }}n. \)
\( 
{\text{Proof by induction}}{\text{.}} \hfill \\
{\text{Base case }}n = 1 \hfill \\ \)
\( \sum\limits_{i = 1}^1 i = 1,{\text{ and }}\frac{{n(n + 1)}}{2} = 1.{\text{ Condition holds}}{\text{.}} \)
\( 
{\text{Inductive step}}{\text{.}} \hfill \\
{\text{Assume that }}\sum\limits_{i = 1}^k i = \frac{{k(k + 1)}}{2}{\text{ holds}}{\text{.}} \hfill \\
\)
\( 
{\text{Then need to prove }}\sum\limits_{i = 1}^{k + 1} i = \frac{{(k + 1)(k + 2)}}{2} \hfill \\ 
\)
\( 
\sum\limits_{i = 1}^{k + 1} i = \sum\limits_{i = 1}^k i + (k + 1) \hfill \\
{\text{ }} = \frac{{k(k + 1)}}{2} + (k + 1) \hfill \\ \)
\( 
{\text{ }} = \frac{{k(k + 1)}}{2} + \frac{{2(k + 1)}}{2} \hfill \\
{\text{ }} = \frac{{k(k + 1) + 2(k + 1)}}{2} = \frac{{(k + 1)(k + 2)}}{2} \hfill \\ 
\)
\( {\text{so }}\sum\limits_{i = 1}^n i = \frac{{n(n + 1)}}{2}{\text{ holds for all }}n. \)

But you knew that already, so why be unnecessarily pedantique?


----------



## ben1996123 (Mar 26, 2012)

Or you could just use \( S_n=\frac{n(2a+(n-1)d)}{2} \)


----------



## Christopher Mowla (Mar 27, 2012)

I don't know if anyone would be interested in this, but I figured out how to use Pascal's Triangle to write the power of sums formula for any integer power (greater than i^0) from my recurrence relation.

1) Draw a Pascal's Triangle upside down:




​ 
2) Label as follows:​ 


​ 
Here's a direct iterative process (you don't have to deal with a series anymore).

Note that the iterations really start for i^1 and greater.


Spoiler



Given that \( \sum\limits_{i=1}^{n}{\left( 1 \right)}=n \), from the adjusted Pascal's Triangle,

\( \sum\limits_{i=1}^{n}{i}=\frac{1}{2}\left( n \right)+\frac{1}{2}\left( n \right)\left[ n \right]=\frac{n\left( n+1 \right)}{2} \)

\( \sum\limits_{i=1}^{n}{i^{2}}=\frac{1}{3}\left( n^{2} \right)+\frac{1}{3}\left( \left( 2n+1 \right)\left[ \frac{n\left( n+1 \right)}{2} \right]-n\left[ n \right] \right)=\frac{n\left( n+1 \right)\left( 2n+1 \right)}{6} \)

\( \sum\limits_{i=1}^{n}{i^{3}}=\frac{1}{4}\left( n^{3} \right)+\frac{1}{4}\left( \left( 3n+3 \right)\left[ \frac{n\left( n+1 \right)\left( 2n+1 \right)}{2} \right]-\left( 3n+1 \right)\left[ \frac{n\left( n+1 \right)}{2} \right]+n\left[ n \right] \right) \)
\( =\frac{n^{2}\left( n+1 \right)^{2}}{4} \)

\( \sum\limits_{i=1}^{n}{i^{4}}=\frac{1}{5}\left( n^{4} \right)+\frac{1}{5}\left( 4n+6 \right)\left[ \frac{n^{2}\left( n+1 \right)^{2}}{4} \right]-\frac{1}{5}\left( 6n+4 \right)\left[ \frac{n\left( n+1 \right)\left( 2n+1 \right)}{6} \right] \)
\( +\frac{1}{5}\left( 4n+1 \right)\left[ \frac{n\left( n+1 \right)}{2} \right]-\frac{1}{5}n\left[ n \right]=\frac{n\left( n+1 \right)\left( 2n+1 \right)\left( 3n^{2}+3n-1 \right)}{30} \)

\( \sum\limits_{i=1}^{n}{i^{5}}= \)
\( \frac{1}{6}n^{5}+\frac{1}{6}\left( 5n+10 \right)\left[ \frac{n\left( n+1 \right)\left( 2n+1 \right)\left( 3n^{2}+3n-1 \right)}{30} \right]-\frac{1}{6}\left( 10n+10 \right)\left[ \frac{n^{2}\left( n+1 \right)^{2}}{4} \right] \)
\( +\frac{1}{6}\left( 10n+5 \right)\left[ \frac{n\left( n+1 \right)\left( 2n+1 \right)}{6} \right]-\frac{1}{6}\left( 5n+1 \right)\left[ \frac{n\left( n+1 \right)}{2} \right]+\frac{1}{6}n\left[ n \right] \)
\( \frac{n^{2}\left( n+1 \right)^{2}\left( 2n^{2}+2n-1 \right)}{12} \)


1) The fractions correspond directly to the row numbers in the triangle.
2) For the minus signs, it is only negative when the first (left) number in the pair of numbers you choose from the triangle.
That is, for example, when we use two 4's and the 6 in the triangle to find \( \sum\limits_{i=1}^{n}{i^{4}} \), 
\( \begin{matrix}
4 & -6 \\
\end{matrix}\ne \left( 4n-6 \right),\text{ but}\begin{matrix}
-6 & 4 \\
\end{matrix}=-\left( 6n+4 \right) \) (the sign in the binomials is always positive).
3) The numbers in the adjusted Pascal's Triangle are never negative in the left-most column, but the pattern follows the idea that they are the first negative numbers, and then every other number afterwords is negative.

You can also just do it directly (without iterations) by looking at the adjusted triangle. That is, view each of the following calculations as independent ones.


Spoiler



\( \sum\limits_{i=1}^{n}{i^{1}}=\frac{1}{2}\left( n+n\left( n \right) \right)=\frac{n\left( n+1 \right)}{2} \)

\( \sum\limits_{i=1}^{n}{i^{2}}=\frac{1}{3}\left( n^{2}+\left( 2n+1 \right)\frac{1}{2}\left[ n+n\left( n \right) \right]-n\left( n \right) \right)=\frac{n\left( n+1 \right)\left( 2n+1 \right)}{6} \)

\( \sum\limits_{i=1}^{n}{i^{3}}=\frac{1}{4}\left( \begin{matrix}
n^{3}+\left( 3n+3 \right)\frac{1}{3}\left[ n^{2}+\left( 2n+1 \right)\frac{1}{2}\left[ n+n\left( n \right) \right]-n\left( n \right) \right] \\
-\left( 3n+1 \right)\frac{1}{2}\left[ n+n\left( n \right) \right]+n\left( n \right) \\
\end{matrix} \right)=\frac{n^{2}\left( n+1 \right)^{2}}{4} \)







\( =\frac{n\left( n+1 \right)\left( 2n+1 \right)\left( 3n^{2}+3n-1 \right)}{30} \)





\( =\frac{n^{2}\left( n+1 \right)^{2}\left( 2n^{2}+2n-1 \right)}{12} \)


----------



## ben1996123 (Mar 27, 2012)

Have you found an equation for \( \sum_{i=1}^{n}i^{i} \)? I typed it in to Wolfram Alpha and it didn't give me one.

Edit: I find it pretty cool that \( \sum_{i=1}^{n}i^{3}=(\sum_{i=1}^{n}i)^{2} \)


----------



## jonlin (Mar 27, 2012)

Could anyone give me an explanation why 0! is 1?

I might sound stupid...


----------



## ben1996123 (Mar 27, 2012)

jonlin said:


> Could anyone give me an explanation why 0! is 1?
> 
> I might sound stupid...



By definition.


----------



## aronpm (Mar 27, 2012)

jonlin said:


> Could anyone give me an explanation why 0! is 1?
> 
> I might sound stupid...


 
http://en.wikipedia.org/wiki/Empty_product

if you multiply nothing together, you get the multiplicative identity, 1. if you add nothing together, you get the additive identity, 0.

@Ben: saw this on my tutorial question sheet, lol'd: http://i.imgur.com/B7Av1.png


----------



## whauk (Mar 27, 2012)

jonlin said:


> Could anyone give me an explanation why 0! is 1?
> 
> I might sound stupid...


 
you can also define factorials via the gammafunction: n!:=gamma(n+1)
and gamma(1)=1 therefore 0!=1
read more here: http://en.wikipedia.org/wiki/Gamma_function

if 0! would be 0, you would have some problems with things like 1/(n!) because you would always have to define the special case n=0 seperately. and as mathematicians are lazy...


----------



## IanTheCuber (Mar 28, 2012)

Here's a wierd one:

Add parenthesees to make the expression 105: 9+8x7-6x5+4x3+2

I found it on the internet, they made it up-he knows there is a solution, but he forgot it a long time ago, so therefore I don't know the answer.


----------



## tozies24 (Mar 28, 2012)

IanTheCuber said:


> Here's a wierd one:
> 
> Add parenthesees to make the expression 105: 9+8x7-6x5+4x3+2
> 
> I found it on the internet, they made it up-he knows there is a solution, but he forgot it a long time ago, so therefore I don't know the answer.


 
I got 103 with (9+8)*7 - 6x5+4x3+2 in about 2 minutes. I'll keep looking.

EDIT: FOUND IT: (9+8)*(7-6)*5+4*(3+2)


----------



## ben1996123 (Mar 28, 2012)

IanTheCuber said:


> Here's a wierd one:
> 
> Add parenthesees to make the expression 105: 9+8x7-6x5+4x3+2
> 
> I found it on the internet, they made it up-he knows there is a solution, but he forgot it a long time ago, so therefore I don't know the answer.



((9+8)(7-6))5+4(3+2)


----------



## samehsameh (Mar 28, 2012)

No one attempted my 'challenge'
\( \int_{-\infty}^{\infty} \! \frac{x\sin x}{x^2+a^2} \, \mathrm{d} x, a > 0 \)

p.s. i dont think it can be calculated by standard calculus, if that makes it more appealing to prove me wrong.


----------



## ben1996123 (Mar 29, 2012)

Here are a few random proofs for anyone who has thought about these things before.

\( \sqrt{i}=\frac{i+1}{\sqrt{2}} \)



Spoiler



Use Euler's formula: \( e^{ix}=cos(x)+isin(x) \) with \( x=\frac{\pi}{2} \)
\( e^{\frac{i\pi}{2}}=cos(\frac{\pi}{2})+isin(\frac{\pi}{2})=0+1i=i \)
Write \( \sqrt{i} \) as \( e^{\frac{i\pi}{2}\times\frac{1}{2}}=e^{\frac{i\pi}{4}} \)
\( e^{\frac{i\pi}{4}}=cos(\frac{\pi}{4})+isin(\frac{\pi}{4}) \)
\( \sqrt{i}=e^{\frac{i\pi}{4}}=\frac{1}{\sqrt{2}}+i\frac{1}{\sqrt{2}}=\frac{1}{\sqrt{2}}+\frac{i}{\sqrt{2}}=\frac{i+1}{\sqrt{2}} \)
Q.E.D



\( i^{i}=\frac{1}{\sqrt{e^{\pi}}} \)



Spoiler



\( i=e^{\frac{i\pi}{2}} \) (see previous proof)
\( i^{i}=e^{\frac{i\pi}{2}\times i}=e^{\frac{i^{2}\pi}{2}}=e^{\frac{-\pi}{2}}=\frac{1}{\sqrt{e^{\pi}}} \)
Q.E.D



\( \sum_{r=0}^{n}{^nC_r}=2^{n} \)



Spoiler



\( (a+b)^{n}={^nC_0}a^{n}+{^nC_1}a^{n-1}b+{^nC_2}a^{n-2}b^{2}+{^nC_3}a^{n-3}b^{3}+\cdots+{^nC_n}b^{n} \)
Let a = 1 and b = 1 so \( (a+b)^{n}=(1+1)^{n}=2^{n} \)
Therefore \( a^p=1 \) and \( b^q=1 \)
So \( 2^{n}={^nC_0}1^{n}+{^nC_1}1^{n-1}1+{^nC_2}1^{n-2}1^{2}+{^nC_3}1^{n-3}1^{3}+\cdots+{^nC_n}1^{n} \)\( ={^nC_0}+{^nC_1}+{^nC_2}+{^nC_3}+\cdots+{^nC_n}=\sum_{r=0}^{n}{^nC_r} \)
Q.E.D


----------



## ben1996123 (Mar 30, 2012)

I just found this: \( e^{x}\equiv sinh(x)+cosh(x) \)


----------



## Christopher Mowla (Mar 30, 2012)

ben1996123 said:


> I just found this: \( e^{x}\equiv sinh(x)+cosh(x) \)


That's simply because of the definition of the hyperbolic functions:

\( \cosh \left( x \right)=\frac{e^{x}+e^{-x}}{2} \)

\( \sinh \left( x \right)=\frac{e^{x}-e^{-x}}{2} \)


----------



## ben1996123 (Mar 30, 2012)

cmowla said:


> That's simply because of the definition of the hyperbolic functions:
> 
> \( \cosh \left( x \right)=\frac{e^{x}+e^{-x}}{2} \)
> 
> \( \sinh \left( x \right)=\frac{e^{x}-e^{-x}}{2} \)



Oh yeah, didn't think of that, I did taylor series


----------



## MalusDB (Mar 30, 2012)

Did A level, got a B. I was lazy. Did all sorts really. Pure maths becomes a bore eventually for me, always preferred physics. Knowledge without application is just wasteful to me. Not to say pure doesn't have applications, they just didn't present them at school. "Learn now, understand later" attitude. Sucked.


----------



## JonWhite (Mar 30, 2012)

ben1996123 said:


> Here are a few random proofs for anyone who has thought about these things before.
> 
> \( \sqrt{i}=\frac{i+1}{\sqrt{2}} \)
> 
> ...



i'm sorry to say that you have foolishly taken one of the longest paths to show this. A sixth grader could easily cross multiply and square. Unless you're in sixth grade, then your knowledge (not its application though) is impressive.



Sahid Velji said:


> I'm having trouble with optimization questions where I have to inscribe an object inside another. Hopefully, if someone could solve this for me, I can do the other ones.
> Determine the area of the largest rectangle that can be inscribed inside a semicircle with a radius of 10 units. Place the length of the rectangle along the diameter.
> 
> 
> ...


 
Set the center of the semicircle at (0, 0). Let the upper right corner of the rectangle be (x, y). Note that this falls on the circle; thus, \( x^2 + y^2 = 100 \). The height of the rectangle is y, the length is 2x, and the area is 2xy. Now apply AM-GM:

\( xy = \sqrt{x^2y^2} \le \frac{x^2+y^2}{2} = 50 \)
\( 2xy \le 100. \)

The equality condition occurs if both terms are equal, so x = y. From there we have \( x = y = 5\sqrt{2} \).


----------



## aronpm (Mar 30, 2012)

MalusDB said:


> always preferred *physics*. *Knowledge without application* is just wasteful to me.


 
You realise how much of physics has no relevant applications for you right now, right?

And it's certainly not wasteful. Science is about the process of discovery and learning and understanding (just like mathematics is). Application is completely irrelevant and the demand that science needs to have an application is actually pretty insulting in my opinion.

I'm studying physics at university because I want to learn more and have a better understanding of how the universe works, not because I want a qualification to get a job. If I wanted to study something that would be "useful" in applying to the real world, I would have picked engineering.



JonWhite said:


> i'm sorry to say that you have foolishly taken one of the longest paths to show this. A sixth grader could easily cross multiply and square. Unless you're in sixth grade, then your knowledge (not its application though) is impressive.


I disagree. Taking an expression like sqrt(i) and then changing it to the form (i+1)/sqrt2 is a much better (read: more satisfying) proof than assuming sqrt(i)=(i+1)/sqrt(2) and showing that it's true. It's the difference between testing a statement and deriving a statement. I think what you said sounded really rude.

re: the optimisation question, it would probably be better to show him a calculus solution because he can apply the ideas to more situations, as opposed to using the AM-GM inequality.

Using calculus I would do:


Spoiler



set (0,0) as the origin, (x,y) is the point of the the corner on the rectangle that lies on the semi-circle

\( A = 2xy \)
From trig:

\( x = 10sin(\theta) \)
\( y = 10cos(\theta) \)
\( A = 100*2sin(\theta)cos(\theta) = 100sin(2\theta) \)
Where \( \theta \) is the angle between the positive x-axis and the line from (0,0) to (x,y).

If we plot a graph of \( y=100sin(2x) \) (not the same x/y in the question!) we can see that as x varies in [0, pi/2], y varies from [0, unknown maxima], being 0 at both ends, so if we find where the derivative is zero, that will be the maxima. If you're writing for a test or exam you'll want to explain that better, probably using the second derivative test for maxima/minima.

\( \frac{dA}{d\theta} = \frac{d}{d\theta}(100sin(2\theta)) = 200cos(2\theta) \)

By setting that to zero we get

\( 0 = 200cos(2\theta) \)
\( 0 = cos(2\theta) \)

which has a solution for theta (between 0 and pi/2) where
\( 2\theta = \frac{\pi}{2} \)

Substituting this back into the formula for the area
\( A = 100sin(2\theta) = 100sin(\frac{\pi}{2}) = 100 \)

If you're also asked for the dimensions of the rectangle, just substitute theta back into x and y.



Alternative solution would be to say that


Spoiler



\( A^2 = 4x^2y^2 = 4x^2(100-x^2) \) (from \( x^2 + y^2 = 100 \))
then realising that because A is an area, it only varies between 0 and the maximum, so A squared will vary between 0 and maximum^2. If you differentiate \( A^2 \) and solve for x, you get \( x=5\sqrt{2} \) which can be plugged back into \( A^2 = 4x^2(100-x^2) \) and you can solve A.



I think the alternative is shorter but I would prefer to do the first one.


----------



## Hyrtsi (Mar 30, 2012)

Anyone into prime numbers and big numbers in general? Looking for primes (6^n + 1) I found out that 6^100352 + 1 may be a prime. Primality tests for a number like this take a lot of time. Any ideas to reduce the calculating time? Rather than calculating 6^100352 + 1, I thought of changing it into this: (((((6^2)^2)^2)...)^2) + 1.


----------



## qqwref (Mar 30, 2012)

Hyrtsi said:


> Anyone into prime numbers and big numbers in general? Looking for primes (6^n + 1) I found out that 6^100352 + 1 may be a prime. Primality tests for a number like this take a lot of time. Any ideas to reduce the calculating time? Rather than calculating 6^100352 + 1, I thought of changing it into this: (((((6^2)^2)^2)...)^2) + 1.


Unless you can find a theorem designed to make it easier to prove the primality of numbers of that form, all I can suggest is to plug it into Mathematica. It's pretty fast.


----------



## ben1996123 (Apr 1, 2012)




----------



## JonWhite (Apr 1, 2012)

ben1996123 said:


>


 
set up a proportion. notice how the largest rectangle (the entire figure) is repeated inside of itself. let p be x/phi. the largest square has length 1, the second-largest phi-1, and the third-largest 1-(phi-1) = 2-phi. the largest rectangle has length (in the x direction) phi and its smaller repeat has length phi - 1 - (2-phi) = 2*phi - 3. Then, we pinpoint x: x = p*phi = 1 + p(2*phi - 3), and solve for p and thus x. repeat to solve for y.


----------



## vcuber13 (Apr 1, 2012)

Sahid Velji said:


> I'm having trouble with optimization questions where I have to inscribe an object inside another. Hopefully, if someone could solve this for me, I can do the other ones.
> Determine the area of the largest rectangle that can be inscribed inside a semicircle with a radius of 10 units. Place the length of the rectangle along the diameter.
> 
> 
> ...


 


Spoiler



l^2+h^2=10^2
h=sqrt(100-l^2)
A=2lh
=2l*sqrt(100-l^2)
A'=(-4 (-50 + x^2))/Sqrt[100 - x^2]
solve for 0
l=5*sqrt(2)
rectangle is 10sqrt2 * 5sqrt2

or

its a square
45° from corners
10sin 45° = 5sqrt2


----------



## ben1996123 (Apr 2, 2012)

Here is my version of the proof that \( \sum_{i=0}^{n}i^2=\frac{1}{6}n(n+1)(2n+1) \) that I came up with earlier.



Start by writing out a few terms, then the differences, and continue until the nth differences are the same:






2, 2, 2 are the third differences, which means that the polynomial which generates the original terms is a cubic equation in the form \( an^3+bn^2+cn+d \)

Because there are 4 variables, a, b, c and d, we will need 4 equations to find the value of each of them.

When n = 1, we want the equation to equal 1 (the first term), therefore \( a(1)^3+b(1)^2+c(1)+d=a+b+c+d=1 \), so the first equation is \( a+b+c+d=1 \).

When n = 2, the equation must equal 5, so \( a(2)^3+b(2)^2+c(2)+d=8a+4b+2c+d=5 \).

When n = 3, the equation must equal 14, so \( a(3)^3+b(3)^2+c(3)+d=27a+9b+3c+d=14 \).

When n = 4, the equation must equal 30, so \( a(4)^3+b(4)^2+c(4)+d=64a+16b+4c+d=30 \).

So now we have 4 equations to work with:

1. \( a+b+c+d=1 \)
2. \( 8a+4b+2c+d=5 \)
3. \( 27a+9b+3c+d=14 \)
4. \( 64a+16b+4c+d=30 \)

Let's work with equations 1 and 2 first. Rearrange equation 1 to make d the subject, \( d=1-a-b-c \), and substitute it into equation 2, \( 8a+4b+2c+1-a-b-c=5 \), simplify and get \( 7a+3b+c=4 \). This is the first equation with only 3 variables.

Now work with equations 2 and 3. Rearrange equation 2 to make d the subject, \( d=5-8a-4b-2c \), and substitute it into equation 3, \( 27a+9b+3c+5-8a-4b-2c=14 \), simplify and get \( 19a+5b+c=9 \).

Now work with equations 3 and 4. Rearrange equation 3 to make d the subject, \( d=14-27a-9b-3c \), substitute into equation 4, \( 64a+16b+4c+14-27a-9b-3c=30 \), simplify to get, \( 37a+7b+c=16 \)

Now we have 3 equations with 3 variables:

1. \( 7a+3b+c=4 \)
2. \( 19a+5b+c=9 \)
3. \( 37a+7b+c=16 \)

Work with equations 1 and 2. Rearrange 1 to make c the subject, \( c=4-7a-3b \), substitute into 2, \( 19a+5b+4-7a-3b=9 \), simplify, \( 12a+2b=5 \) to get the first equation with only 2 variables.

Now use equations 2 and 3. Rearrange 2 to make c the subject, \( c=9-19a-5b \), substitute into 3, \( 37a+7b+9-19a-5b=16 \), simplify, \( 18a+2b=7 \).

Now we have 2 equations with 2 variables:

1. \( 12a+2b=5 \)
2. \( 18a+2b=7 \)

Rearrange equation 1 to make b the subject. Actually in this case, both equations contain the term 2b, so we can just rearrange to make 2b the subject. \( 2b=5-12a \), substitute into 2, \( 18a+5-12a=7 \), simplify, \( 6a+5=7 \), solve for a, \( 6a=2 \), \( a=\frac{1}{3} \).

Now that we know the value of one of the variables, we can substitute this value into equation 1 containing 2 variables, \( 12(\frac{1}{3})+2b=5 \), \( 4+2b=5 \), \( 2b=1 \), \( b=\frac{1}{2} \).

Now that 2 variables are known, substitute both values into equation 1 containing 3 variables, \( 7(\frac{1}{3})+3(\frac{1}{2})+c=4 \), \( \frac{7}{3}+\frac{3}{2}+c=4 \), \( c=4-\frac{7}{3}-\frac{3}{2} \), \( c=\frac{1}{6} \).

Finally, substitute all 3 values into equation 1 containing 4 variables. \( \frac{1}{3}+\frac{1}{2}+\frac{1}{6}+d=1 \), \( d=1-\frac{1}{3}-\frac{1}{2}-\frac{1}{6} \), \( d=0 \).

All variables are now known, so the final equation is:

\( \frac{n^3}{3}+\frac{n^2}{2}+\frac{n}{6} \)
\( \frac{1}{6}(2n^3+3n^2+n) \)
\( \frac{1}{6}n(2n^2+3n+1) \)
\( \frac{1}{6}n(n+1)(2n+1) \)

Therefore \( \sum_{i=0}^{n}i^2=\frac{1}{6}n(n+1)(2n+1) \)

Q.E.D.


----------



## blakedacuber (Apr 4, 2012)

Completely kind of off topic but didnt wanna start a new thread... I was doing an integration question and have subbed the limits and this is what i have ... [ ((8/3)^(3/2)) + 1 ] - [ ((2/3)^(3/2)) + 1] its probably really simple but how do i solve from here? A step by step would help thanks  also the answer should work out to be 20/3


----------



## vcuber13 (Apr 5, 2012)

what was the original question?

this may help though

\( 
x^{\frac{3}{2}} = \sqrt{x^3}
\)


----------



## cmhardw (Apr 5, 2012)

ben1996123 said:


>


 


Spoiler



I thought of the spiral parametrically.

x point converges to:
\( \phi-\frac{1}{\phi}+\frac{1}{\phi^3}-\frac{1}{\phi^5}+\frac{1}{\phi^7}-\ldots \)

This converges to:
\( \frac{1+2\phi}{2+\phi} \)

The y point converges to:
\( \frac{1}{\phi^2}-\frac{1}{\phi^4}+\frac{1}{\phi^6}-\ldots \)

This converges to:
\( \frac{1}{2+\phi} \)

So the spiral is converging toward the point:
\( \left(\frac{1+2\phi}{2+\phi} , \frac{1}{2+\phi} \right) \)


----------



## blakedacuber (Apr 5, 2012)

vcuber13 said:


> what was the original question?
> 
> this may help though
> 
> ...


 
integrate ( x^(1/2) + 1/x^(1/2) ) dx with the limits 4 and 1


----------



## vcuber13 (Apr 5, 2012)

Not math but I hope someone can help, just working on the synthesis of Hexaphenylbenzene for a chemistry lab, and I was just wondering if this mechanism seems reasonable?

**I really wasn't sure about the E1CB OH elimination **

PS: Ignore the names of the products they are a joke for my teacher



Spoiler










edit:


blakedacuber said:


> integrate ( x^(1/2) + 1/x^(1/2) ) dx with the limits 4 and 1





Spoiler


----------



## blakedacuber (Apr 5, 2012)

vcuber13 said:


> Not math but I hope someone can help, just working on the synthesis of Hexaphenylbenzene for a chemistry lab, and I was just wondering if this mechanism seems reasonable?
> 
> **I really wasn't sure about the E1CB OH elimination **
> 
> ...


 
Thanks


----------



## IanTheCuber (Apr 8, 2012)

Math videos are now on my channel!


----------



## Hyrtsi (Apr 14, 2012)

Found nice tutorials on MIT Youtube channel. Really worth checking them out!

Also, looking for a proof for this:


----------



## jeff081692 (Apr 14, 2012)

Just got this question in my discrete math class homework lol.



Spoiler



When one disassembles a standard 3X3X3 Rubik's Cube one discovers that it is just a fixed
3D cross connecting the center squares, and a bunch of edge and corner pieces that move
around the stationary cross. Consider the state diagram for the conguration space of all
assembled cubes, that is one state for each and every possible way of putting the cube back
together. In order not to count a state multiple times (eg placing it upside down) we will x
the orientation of the center squares (ie the red center square will always be up and the blue
center square will always be to the right).
(a) Write down an expression for the number of nodes/states of this diagram, explaining the
reasoning for each term. How many decimal digits does this number have? Is it feasible
to keep track of all the nodes?
(b) Consider all of the obvious legal (without disassembly) basic minimal moves/actions/edges
for going from one assembled state to another (while preserving our fixed orientation of
the center squares). What are these moves? How many arrows/edges are there leading
out of each node? and how many are leading in? [Note: the diagram is not connected
since one can assemble unsolvable cubes.]
(c) For these actions how many times does one have to repeat such an action to get back to
the original state?



Edit: Text didn't paste perfectly and might be some words missing but I thought it was cool I got a rubiks cube question.


----------



## Stefan (Apr 14, 2012)

Hyrtsi said:


> Found nice tutorials on MIT Youtube channel. Really worth checking them out!



I just watched one and it's fantastic, the best video I've seen in a long time:
http://www.youtube.com/watch?v=wsOoClvZmic


----------



## Keroma12 (Apr 14, 2012)

From http://www.speedsolving.com/forum/showthread.php?26461-Mathematics-marathon&p=721993#post721993:



Keroma12 said:


> Anybody know how to prove det(AB) = det(A)*det(B) using only the permutation definition of the determinant function? Completely forgotten how to type in math here, otherwise I would type out the definition. http://en.wikipedia.org/wiki/Leibniz_formula_for_determinants
> 
> (I am aware that this is a terrible way to prove this and that there are much much nicer ways.)


----------



## AudreyRose (Apr 16, 2012)

Hardest? Doesn't matter. I had my most fun learning about groups with my cube in hand


----------



## cubernya (Apr 16, 2012)

Somebody do what is in my signature, and you'll be a millionaire


----------



## Hyrtsi (Apr 16, 2012)

theZcuber said:


> Somebody do what is in my signature, and you'll be a millionaire


 
I would spend a lifetime with those problems. But not for the money, there are far better reasons to do that.


----------



## HelpCube (Apr 16, 2012)

I'd much rather try to prove the Riemann hypothesis, that's a million dollar proof too .


----------



## vcuber13 (May 8, 2012)

how do you prove

\( 
\frac{Tan \theta + Cot \alpha}{Cot \theta + Tan \alpha} = \frac{Tan \theta}{Tan \alpha}
\)


----------



## Christopher Mowla (May 8, 2012)

vcuber13 said:


> how do you prove
> 
> \(
> \frac{Tan \theta + Cot \alpha}{Cot \theta + Tan \alpha} = \frac{Tan \theta}{Tan \alpha}
> \)


I can verify that it's true using basic identities and algebra.


Spoiler



\( \text{Prove (verify) that }\frac{\tan \left( \theta \right)+\cot \left( a \right)}{\cot \left( \theta \right)+\tan \left( a \right)}=\frac{\tan \left( \theta \right)}{\tan \left( a \right)}. \)

\( =\frac{\frac{\sin \left( \theta \right)}{\cos \left( \theta \right)}+\frac{\cos \left( a \right)}{\sin \left( a \right)}}{\frac{\cos \left( \theta \right)}{\sin \left( \theta \right)}+\frac{\sin \left( a \right)}{\cos \left( a \right)}} \)

\( =\frac{\frac{\sin \left( \theta \right)\sin \left( a \right)+\cos \left( a \right)\cos \left( \theta \right)}{\cos \left( \theta \right)\sin \left( a \right)}}{\frac{\cos \left( \theta \right)\cos \left( a \right)+\sin \left( a \right)\sin \left( \theta \right)}{\sin \left( \theta \right)\cos \left( a \right)}} \)

\( =\frac{\sin \left( \theta \right)\sin \left( a \right)+\cos \left( a \right)\cos \left( \theta \right)}{\cos \left( \theta \right)\sin \left( a \right)}\frac{\sin \left( \theta \right)\cos \left( a \right)}{\cos \left( \theta \right)\cos \left( a \right)+\sin \left( a \right)\sin \left( \theta \right)} \)

\( =\left( \frac{\sin \left( \theta \right)\sin \left( a \right)+\cos \left( a \right)\cos \left( \theta \right)}{\cos \left( \theta \right)\cos \left( a \right)+\sin \left( a \right)\sin \left( \theta \right)} \right)\left( \frac{\sin \left( \theta \right)\cos \left( a \right)}{\cos \left( \theta \right)\sin \left( a \right)} \right) \)

\( =1\times \frac{\sin \left( \theta \right)\cos \left( a \right)}{\cos \left( \theta \right)\sin \left( a \right)} \)

\( =\frac{\frac{\sin \left( \theta \right)}{\cos \left( \theta \right)}}{\frac{\sin \left( a \right)}{\cos \left( a \right)}}=\frac{\tan \left( \theta \right)}{\tan \left( a \right)} \)


----------



## ben1996123 (May 9, 2012)

Finished every past exam paper for C2 in 3 days. Started C3 on wednesday last week. Finished C3 today. Starting C4 tomorrow. In college (I start in September), I'm hopefully doing C3, C4, M1, M2, S2, FP1, FP2, FP3, FP4, D1, D2 and maybe S3, S4 or M3, M4.

My teacher told me today that I should be able to do C3, C4, M1, S2, FP1, FP2, FP3, FP4 and D1 all in the first year, but I'm not quite sure about that 

Did C1 exam in January this year, got 100% in that. Hopefully I will get 100% in C2 in a few weeks.

<3 maths


----------



## Christopher Mowla (May 28, 2012)

*Sum of Powers Image (Revisited)*

I have found an even simpler image which shows how to calculate the sum of powers (using Pascal's Triangle).

The image should be self-explanatory.






​


----------



## MattMcConaha (May 29, 2012)

The hardest class I've taken (and still am taking) is differential equations. The math itself isn't really that hard, but I'm basically learning out of the book because the teacher doesn't really help that much and I don't fully understand everything that's going on.


----------



## ben1996123 (Jun 1, 2012)

\( i^{i}\sqrt{e^{\pi}}+e^{i\pi}=0 \)


----------



## cube fan (Jun 2, 2012)

I'm bad at algebra,but I'm good at the rest of them(I think calculus is interesting)


----------



## Georgeanderre (Jun 2, 2012)

ben1996123 said:


> I'm hopefully doing C3, C4, M1, M2, S2, FP1, FP2, FP3, FP4, D1, D2 and maybe S3, S4 or M3, M4.
> 
> Did C1 exam in January this year, got 100% in that. Hopefully I will get 100% in C2 in a few weeks.
> 
> <3 maths


 
No Numerical Methods =O

and as a side note... that looks like an insane amount of maths but given the overlap in maths these days it probably isn't. Little bit like Mechanics and Physics, buy one get one free A levels

Gratz on 100% on C1! I only got 93% =(

Hope you get results like that for C2 and whatever else you took in May, I know I messed up Q7 & Q10 in C2 so not expecting much more than 80%


----------



## Christopher Mowla (Jul 4, 2012)

Here's another argument that 0^0 could be 0 or 1 (this example shows that we actually have a choice in the matter, as opposed to limit examples from Wikipedia which demand it to be one or the other. In other words, we can give it both values in the same example).



Spoiler: Argument



From the sum of positive integer powers generalized formula,

\( \sum\limits_{i=1}^{n}{\left[ i^{R} \right]}=\sum\limits_{i=1}^{n}{\left[ \left( i^{R}-\left( i-1 \right)^{R} \right)\left( n-\left( i-1 \right) \right) \right]} \) (well, they are equal for positive integers \( \ge \) 1).

\( =\sum\limits_{i=1}^{n}{\left[ \left( i^{R}-\left( i-1 \right)^{R}-\left( i-1 \right)^{R-1}+\left( i-1 \right)^{R-1} \right)\left( n-\left( i-1 \right) \right) \right]} \)

\( =\sum\limits_{i=1}^{n}{\left[ \left( i^{R}-\left( i-1 \right)^{R}-\left( i-1 \right)^{R-1} \right)\left( n-\left( i-1 \right) \right)+\left( i-1 \right)^{R-1}\left( n-\left( i-1 \right) \right) \right]} \)

\( \text{For }R=1,\text{ that is, for }\sum\limits_{i=1}^{n}{i^{1}}=\sum\limits_{i=1}^{n}{i}, \)

\( =\sum\limits_{i=1}^{n}{\left[ \left( i^{1}-\left( i-1 \right)^{1}-\left( i-1 \right)^{1-1} \right)\left( n-\left( i-1 \right) \right)+\left( i-1 \right)^{1-1}\left( n-\left( i-1 \right) \right) \right]} \)

\( =\sum\limits_{i=1}^{n}{\left[ \left( 1-\left( i-1 \right)^{0} \right)\left( n-i+1 \right)+\left( i-1 \right)^{0}\left( n-i+1 \right) \right]} \)

=
\( \left[ \left( 1-\left( 1-1 \right)^{0} \right)\left( n-1+1 \right)+\left( 1-1 \right)^{0}\left( n-1+1 \right) \right]+ \)

\( \left[ \left( 1-\left( 2-1 \right)^{0} \right)\left( n-2+1 \right)+\left( 2-1 \right)^{0}\left( n-2+1 \right) \right]+ \)

\( \left[ \left( 1-\left( 3-1 \right)^{0} \right)\left( n-3+1 \right)+\left( 3-1 \right)^{0}\left( n-3+1 \right) \right]+ \)

\( \left[ \left( 1-\left( 4-1 \right)^{0} \right)\left( n-4+1 \right)+\left( 4-1 \right)^{0}\left( n-4+1 \right) \right]+ \)

\( \left[ \left( 1-\left( 5-1 \right)^{0} \right)\left( n-5+1 \right)+\left( 5-1 \right)^{0}\left( n-5+1 \right) \right]+ \)

\( \left[ \left( 1-\left( 6-1 \right)^{0} \right)\left( n-6+1 \right)+\left( 6-1 \right)^{0}\left( n-6+1 \right) \right]+\cdot \cdot \cdot \)

\( =\left[ \left( 1-0^{0} \right)n+0^{0}n \right]+\left[ \left( 1-1^{0} \right)\left( n-1 \right)+1^{0}\left( n-1 \right) \right] \)

\( +\left[ \left( 1-2^{0} \right)\left( n-2 \right)+2^{0}\left( n-2 \right) \right]+\left[ \left( 1-3^{0} \right)\left( n-3 \right)+3^{0}\left( n-3 \right) \right] \)

\( +\left[ \left( 1-4^{0} \right)\left( n-4 \right)+4^{0}\left( n-4 \right) \right]+\left[ \left( 1-5^{0} \right)\left( n-5 \right)+5^{0}\left( n-5 \right) \right]+\cdot \cdot \cdot \)


\( =\left[ \left( 1-0^{0} \right)n+0^{0}n \right]+\left[ \left( 1-1 \right)\left( n-1 \right)+1\left( n-1 \right) \right] \)

\( +\left[ \left( 1-1 \right)\left( n-2 \right)+1\left( n-2 \right) \right]+\left[ \left( 1-1 \right)\left( n-3 \right)+1\left( n-3 \right) \right] \)

\( +\left[ \left( 1-1 \right)\left( n-4 \right)+1\left( n-4 \right) \right]+\left[ \left( 1-1 \right)\left( n-5 \right)+1\left( n-5 \right) \right]+\cdot \cdot \cdot \)


\( =\left[ \left( 1-0^{0} \right)n+0^{0}n \right]+\left[ 0\left( n-1 \right)+1\left( n-1 \right) \right] \)

\( +\left[ 0\left( n-2 \right)+1\left( n-2 \right) \right]+\left[ 0\left( n-3 \right)+1\left( n-3 \right) \right] \)

\( +\left[ 0\left( n-4 \right)+1\left( n-4 \right) \right]+\left[ 0\left( n-5 \right)+1\left( n-5 \right) \right]+\cdot \cdot \cdot \)

Just looking at \( \left[ \left( 1-0^{0} \right)n+0^{0}n \right] \), we need to choose a value for \( \text{0}^{0} \) so that the result in that bracket is \( \left( n-0 \right)=n. \)

Since the second value in the second bracket is \( \left( n-1 \right), \) the value in the third bracket is \( \left( n-2 \right), \) etc.,

we can either choose \( \text{}0^{0}=1\text{ or }0^{0}=0,\ \) since

\( \left[ \left( 1-\left[ 1 \right] \right)n+\left[ 1 \right]n \right]=\left[ \left( 1-\left[ 0 \right] \right)n+\left[ 0 \right]n \right]=\left[ 0n+n \right]=\left[ n+0n \right]=n=\left( n-0 \right) \).


----------



## ben1996123 (Jul 4, 2012)

cmowla said:


> Here's another argument that 0^0 could be 0 or 1 (this example shows that we actually have a choice in the matter, as opposed to limit examples from Wikipedia which demand it to be one or the other. In other words, we can give it both values in the same example).
> 
> 
> 
> ...



Can't \( 0^0 \) have any value, not just 0 or 1?

\( 0^{0}=0^{n}\times 0^{-n}=\frac{0^{n}}{0^{n}}=\frac{0}{0} \), which is indeterminate and can have any value, eg.

\( \lim_{x\rightarrow 1} \frac{x}{x-1}-\frac{1}{ln(x)}=\lim_{x\rightarrow 1} \frac{xln(x)-x+1}{xln(x)-ln(x)}\rightarrow \frac{0}{0} \)

Using L'hopital's rule, this limit must be the same as \( \lim_{x\rightarrow 1} \frac{\frac{d}{dx}(xln(x)-x+1)}{\frac{d}{dx}(xln(x)-ln(x))} \)

\( \frac{d}{dx}(xln(x)-x+1)=\frac{d}{dx}(x)ln(x)+\frac{d}{dx}(ln(x))x-1=ln(x)+\frac{x}{x}-1=ln(x) \)

\( \frac{d}{dx}(xln(x)-ln(x))=\frac{d}{dx}(x)ln(x)+\frac{d}{dx}(ln(x))x-\frac{d}{dx}(ln(x)) \)\( =ln(x)+\frac{x}{x}-\frac{1}{x}=ln(x)+1-\frac{1}{x} \)

\( \lim_{x\rightarrow 1} \frac{\frac{d}{dx}(xln(x)-x+1)}{\frac{d}{dx}(xln(x)-ln(x))}=\lim_{x\rightarrow 1} \frac{ln(x)}{ln(x)+1-\frac{1}{x}}\rightarrow \frac{0}{0} \)

Using L'hopital's rule again:

\( \lim_{x\rightarrow 1} \frac{ln(x)}{ln(x)+1-\frac{1}{x}}=\lim_{x\rightarrow 1} \frac{\frac{d}{dx}(ln(x))}{\frac{d}{dx}ln(x)+1-\frac{1}{x}} \)

\( \frac{d}{dx}(ln(x))=\frac{1}{x} \)

\( \frac{d}{dx}(ln(x)+1-\frac{1}{x})=\frac{1}{x}+\frac{1}{x^{2}} \)

\( \lim_{x\rightarrow 1} \frac{\frac{d}{dx}(ln(x))}{\frac{d}{dx}ln(x)+1-\frac{1}{x}}=\frac{\frac{1}{x}}{\frac{1}{x}+\frac{1}{x^{2}}}=\frac{1}{2} \)

So in this case, \( \frac{0}{0}=\frac{1}{2} \), which also means that (in this case) \( 0^{0}=\frac{1}{2} \). Maybe I'm not noticing something, but I think this is correct.


----------



## Christopher Mowla (Jul 4, 2012)

ben1996123 said:


> Can't \( 0^0 \) have any value, not just 0 or 1?


Oops! I edited my post just as you quoted me! Well, the reason I edited my post is because I realized that I made the mistake of dividing by zero (so 0^0 doesn't equal 0/0 because you would have to accept that 0/0 is defined when it is not). Besides, the limit as x->_a_ of a function (or in the case of L'hopital's rule) doesn't actually equal the function evaluated at _a_ unless the function is defined at x=_a_. So I don't think we can say that \( \underset{x\to 1}{\mathop{\lim }}\,\left( \frac{x}{x-1}-\frac{1}{\ln \left( x \right)} \right) \) approaches 0/0 because that doesn't make sense. We say that "..." 0/0 in order to say that we are currently not looking (analyzing) the given function in the correct manner.

So sorry for the confusion, but I do think that my argument is correct for 0^0.


----------



## CarlBrannen (Jul 4, 2012)

I voted for Basic Algebra. The toughest class I ever had used a text titled "Basic Algebra I" and "Basic Algebra II". It's also known as "Jacobson".

It has something to do with Rubik's cubes. Section 1.7 is about orbits and cosets:





[/IMG]


----------



## DYGH.Tjen (Jul 7, 2012)

Went to a small competition yesterday, will probably be cake to some of you so here are the questions  hope I can get steps/workings plus solutions within the hour  Thanks!

1. Find the area of a convex quadrilateral which has perpendicular diagonals of lengths 15 and 18.

2. A sequence a<sub>0</sub>, a<sub>1</sub>, a<sub>2</sub> ... is defined by a<sub>0</sub> = 2012 and a<sub>k+1</sub> = a<sub>k</sub>^2 +1 for all k ≥ 0. Find the last digit of a<sub>2012</sub>. whaaat I can't type subscripts. Hope you guys know what I mean. On a side note, what program/online tool do you use to type math symbols and the like?

3. Given three distinct positive integers a,b,c such that a!b!c! = 10!, find a+b+c.

4. An obtuse triangle has side lengths d,30,40 where d is an integer. How many possible values of d are there?

5. The product of two four-digit positive integers is 4^8 + 6^8 + 9^8. What is the smaller integer?

6. A positive integer ending with 8888 has 16 odd positive factors. How many even positive factors does this number have?

Part B

1. Given a triangle ABC and a point M on the side BC. Let [1 and [2 be the circumcircles of triangles ABM and ACM respectively. The perpendicular bisector of BC intersects AM at P. Line BP intersects [1 at D (different from B), and line CP intersects [2 at E (different from C). Prove that ED is parallel to BC.

Note: the circumcircle of a triangle XYZ is the unique circle that passes through X, Y and Z.

2. Let T<sub>n</sub> = 1 + 1/n - 1/(n^2) - 1/(n^3)

Find the smallest integer k such that T<sub>2</sub>T<sub>3</sub>T<sub>4</sub>...T<sub>k</sub> > 2012

3. There are 15 keys on a keyboard, arranged in a straight line. Two keys are one semitone apart if they are adjacent, and are one tone apart if they are separated by one key. A general scale is a sequence of keys from left to right such that the first key is the leftmost key, and two consecutive keys are either one tone or semitone apart.

Find the number of general scales with 8 keys.


----------



## Stefan (Jul 7, 2012)

*3. Given three distinct positive integers a,b,c such that a!b!c! = 10!, find a+b+c.*
I will. As soon as they're actually given.

*6. A positive integer ending with 8888 has 16 odd positive factors. How many even positive factors does this number have?*
48


----------



## DYGH.Tjen (Jul 7, 2012)

Reasons/workings/steps please Stefan?  Especially for Q6?


----------



## Stefan (Jul 7, 2012)

You can divide the number by 2 three times, so its prime factorization includes 2^3. For every odd factor x, you get even factors x*2, x*4, x*8. Thus 16*3=48 even factors.

*On a side note, what program/online tool do you use to type math symbols and the like?*
http://www.speedsolving.com/forum/showthread.php?18755-LaTeX-on-Forum-and-Wiki


----------



## mr. giggums (Jul 7, 2012)

Stefan said:


> *3. Given three distinct positive integers a,b,c such that a!b!c! = 10!, find a+b+c.*
> I will. As soon as they're actually given.



3, 5, 7

So the answer is 15.


----------



## Stefan (Jul 8, 2012)

Bah, you should have only given me the three numbers.


----------



## DYGH.Tjen (Jul 9, 2012)

DYGH.Tjen said:


> Went to a small competition yesterday, will probably be cake to some of you so here are the questions  hope I can get steps/workings plus solutions within the hour  Thanks!
> 
> 1. Find the area of a convex quadrilateral which has perpendicular diagonals of lengths 15 and 18.
> 
> ...



=O bump, can anyone help to complete those questions? :/ I thought they would be easy considering we have people like qq and Ben here 

@qqwref @ben1996123


----------



## Hyprul 9-ty2 (Jul 9, 2012)

Question 3 is just logic/brute force if you will.

10! is just 10x9x8..x2. Leave the biggest prime, 7, as a factorial because that way you no longer need to think about replicating primes.
Now you're left with 10x9x8x7!
Prime factorize 10, 9 and 8.. and then have fun?

10 = 5 2
9 = 3 3
8 = 2 2 2

5x2x2x3 x 3x2
5x4x3 x 3x2

---
I think you're trying to say \( "a_{k+1}=a_{k}^2+1" \)

a_0 = 2012
a_1 = a_0 ^2 + 1 = 2012 ^ 2 + 1 = .....4 + 1 = ...5
a_2 = a_1^2 + 1 = ....5^2 + 1 = ....25+1 = .....6
So on and so forth. It loops back at a_6 = .....2

Which leads me to believe that the last digit of a_2012 is 6. I'm sure I've done something/everything wrong, I'm so tired it's not even funny >_>


----------



## DYGH.Tjen (Jul 10, 2012)

Hyprul 9-ty2 said:


> Question 3 is just logic/brute force if you will.
> 
> 10! is just 10x9x8..x2. Leave the biggest prime, 7, as a factorial because that way you no longer need to think about replicating primes.
> Now you're left with 10x9x8x7!
> ...



Yay it's Jon! <3 Unfortunately those two questions you just did are the ones I already know how to do lolol. Yep I got 6 as well, you're not wrong in any way. 

Does no one else know how to do the other questions?


----------



## Hyprul 9-ty2 (Jul 10, 2012)

Well, I think 1 is 135.


\( T_n = 1 + \frac{1}{n} -\frac{1}{n^2} - \frac{1}{n^3} \)

Find \( k \subset N \) such that \( T_1 \times T_2 \times T_3...T_{k-1} \times T_k > 2012 \)

You can rewrite \( T_n \) as

\( T_n \)
\( = 1 + \frac{1}{n} -\frac{1}{n^2} - \frac{1}{n^3} \)
\( =\frac{n^3 + n^2 - n -1}{n^3} \)
\( =\frac{(n+1)^2 (n -1)}{n^3} \)

Using this new representation of \( T_n \), through substituting values for \( n = 2,3,4,5,...k-1,k \) we have

\( T_1 \times T_2 \times T_3....T_{k-1} \times T_k = \frac{3^2 (1)}{2^3} \times \frac{4^2 (2)}{3^3} \times \frac{5^2 (3)}{4^3} \times \frac{6^2 (4)}{5^3} \times ... \frac{k^2 (k-2)}{(k-1)^3} \times \frac{(k+1)^2 (k-1)}{k^3} \)

Simplifying this and blabla using LaTeX is so hard you end up with

Products of Tn (where n is 2,3,..,k) = (k+1)^2 / 4k , for any integer k >=2
Solve for >2012

You end up with 8046


--

4^8 + 6^8 + 9^8
= 2^(8*2) + (2^8 3^8) + 3^(8*2)
= (2^8 + 3^8)^2 - (2^8 3^8)
= (2^8 + 3^8 + 2^4 3^4) (2^8 + 3^8 - 2^4 3^4)
= 8813 * 5521


----------



## ben1996123 (Jul 10, 2012)

Hyprul 9-ty2 said:


> Well, I think 1 is 135.



Yeah it is, really easy question.


----------



## Hyprul 9-ty2 (Jul 10, 2012)

Why have 4*9*7.5 when you can have 18*15? :S

Edit: Wow Carl, thanks. I feel so dumb now hahaha. I didn't think to use triangles.


----------



## CarlBrannen (Jul 10, 2012)

He's doing 4 triangles.

Edit: Hey, don't feel dumb. Taking half of the 18x15 rectangle is faster than 4 triangles. And this IS a speedsolving website.


----------



## ben1996123 (Jul 10, 2012)

So here's a proof that there are \( 2^{n} \) subsets in a set of n elements that I just randomly thought of when I was eating some pizza (it was delicious).

The amount of subsets is the amount of subsets containing 0 elements + subsets containing 1 element + ... + subsets containing n elements (the original set). The amount of subsets containing X elements is the amount of ways of choosing X elements from n elements, which is \( {^nC_X} \). The total amount of subsets is therefore \( \sum_{X=0}^{n}{^nC_X}=2^{n} \) (proof that this adds to \( 2^{n} \) here).


----------



## Yuxuibbs (Jul 11, 2012)

Could someone explain how to use this? I know how to find the number (cycle length with quickie K) I'm just confused on how to use it. How to use it = what to do after finding the cycle length to get a solution to the goal.

I didn't finish taking Algebra 2 yet so I don't think a lot of people here would know this including college students maybe. I got confused because it kept using mod stuff instead of K.* I only get about 1 minute to figure out the solution.* 
I don't really want my opponents to find this and use it against me so if you want an explanation of the game I'll PM you. I'm pretty sure not a lot of people in Academic Games are cubers.


----------



## Christopher Mowla (Jul 11, 2012)

ben1996123 said:


> So here's a proof that there are \( 2^{n} \) subsets in a set of n elements that I just randomly thought of when I was eating some pizza (it was delicious).
> 
> The amount of subsets is the amount of subsets containing 0 elements + subsets containing 1 element + ... + subsets containing n elements (the original set). The amount of subsets containing X elements is the amount of ways of choosing X elements from n elements, which is \( {^nC_X} \). The total amount of subsets is therefore \( \sum_{X=0}^{n}{^nC_X}=2^{n} \) (proof that this adds to \( 2^{n} \) here).


I did this proof in the second spoiler of my Methods for Forming 2-Cycle Odd Parity Algorithms for Big Cubes in order to fully justify how I got the average formula for "The Holy Grail" Edge Flip alg.

​And here's more recent math findings of mine (mainly about computing the Bernoulli Numbers):


Spoiler



I found on mathisfunformum.com that you can find the power sum formula for the next power by:



> Step 1) Multiply to clear the denominator of the first term
> Step 2) Integrate the expression
> Step 3) Add k*n such that ƒ(1)=1



For example,

\( \sum\limits_{i=1}^{n}{i}=\frac{n\left( n+1 \right)}{2}=\frac{n^{2}}{2}+\frac{n}{2} \)

To find \( \sum\limits_{i=1}^{n}{i^{2}} \), 

[1] We multiply all of \( \sum\limits_{i=1}^{n}{i} \)'s terms by 2 (the denominator of the first term)

\( 2\left( \frac{n^{2}}{2}+\frac{n}{2} \right)=n^{2}+n \)

[2] We integrate all terms:

\( \int{\left[ n^{2}+n \right]dn}=\frac{n^{3}}{3}+\frac{n^{2}}{2} \)

[3] We add k*n such that ƒ(1)=1

Well currently _f_(1) = \( \frac{\left( 1 \right)^{3}}{3}+\frac{\left( 1 \right)^{2}}{2}=\frac{1}{3}+\frac{1}{2}=\frac{2}{6}+\frac{3}{6}=\frac{5}{6} \)

So we need to add k = \( 1-\frac{5}{6}=\frac{1}{6} \).

To have: \( \frac{n^{3}}{3}+\frac{n^{2}}{2}+\frac{n}{6}=\frac{n\left( n+1 \right)\left( 2n+1 \right)}{6} \).

This algorithm knighthawk posted with integration can be expressed as:

\( \sum\limits_{i=1}^{n}{i^{R}}=\int{\left[ R\sum\limits_{i=1}^{n}{i^{R-1}} \right]dn}+n\left( 1-\int\limits_{0}^{1}{\left[ R\sum\limits_{i=1}^{n}{i^{R-1}} \right]dn} \right) \)

It turns out that:

\( \text{Bernoulli}\left[ R \right]=1-\int\limits_{0}^{1}{\left[ R\sum\limits_{i=1}^{n}{i^{R-1}} \right]dn}\text{ for }R\ge 2. \)

(We can get the Bernoulli Numbers this way).

Just in case you've never heard of the Bernoulli Numbers, you can see as many as you like at wolframalpha.com
Copy and paste this into the input bar: BernoulliB[{0,Range[25]}]

In fact, this means we can have an "Adjusted Pascal's Triangle" to compute the Bernoulli Number sequence too!

Recall the "Adjusted Pascal's Triangle" I constructed for power sums:



cmowla said:


> I have found an even simpler image which shows how to calculate the sum of powers (using Pascal's Triangle).
> 
> The image should be self-explanatory.
> 
> ...




All we do is adjust my triangle for the Power Sum formulas by:

[1] Integrate all terms in the triangle and multiply each row by the denominator of the fractions on the far left (to cancel them):



Spoiler











[2] 
a) Substitute 1 as _n_ in all terms (this converts all terms into fractions) 

b) multiply each fraction (only where the summations used to be) by \( \left( 1-B_{m+1} \right) \) where the summation \( \sum\limits_{i=1}^{n}{i^{m}} \) used to be.

c) Subtract all rows (except for the first one) by 1.

(Note that \( B_{2} \) = BernoulliB[2] = 1/6 and so forth.)


Spoiler








(Right click on the picture and select "view image" to be able to see it better.)


I then wrote the following recursion formula from the triangle:

\( \sum\limits_{i=m}^{n}{\left[ \left( 1-\frac{1}{i+1}-\frac{1}{i}-\sum\limits_{k=2}^{i-1}{\left[ \left( \begin{matrix}
i-1 \\
k \\
\end{matrix} \right)\left( -1 \right)^{k}\left( 1-b_{i-k+1} \right)\left( \frac{1}{i-k+1} \right) \right]} \right)b_{i} \right]} \)

, where \( m,n\ge 2\text{ and }n\ge m \)

This means that we can choose m=n if we only one one Bernoulli number in terms of all previous Bernoulli numbers (except for the first two which are 1 and -1/2 or B0 and B1), or m=a and n>a to get a range of Bernoulli Number values (that's why I have multiplied the inner summation by B_ so that we could get a sum of the compositions of each of the Bernoulli numbers (you just can replace the plus sign with a comma and delete the B multiplied by each term).

For those who have Mathematica, just so you don't have to type all of that out, here is the formula in plaintext:
Sum[Subscript[B, i]*(1-1/i-1/(1+i)-Sum[((-1)^k*Binomial[-1+i,k]*(1-Subscript[B,1+i-k]))/(1+i-k),{k,2,-1+i}]),{i,m,n}]

So, for example, to if you calculate B[8], you let m = n = 8 to get:






And to calculate B[2] to B[8], we let m = 2 and n = 8 to get:






I also programmed this algorithm in my Ti-83 Plus Calculator (in Basic), and I found that in that language, it requires \( 1+\sum\limits_{i=2}^{m}{\left( 1+1+\sum\limits_{k=2}^{i-1}{\left( k \right)}+1 \right)}=\frac{m^{3}}{6}+\frac{11m}{6}-1 \) assignment lines of code.

Since this thread is also about calculators, here's the code (note that it can be shortened to be less bytes).



Spoiler: TI-83 Plus Program Code











(I downloaded a program from ticalc.org that does Bernoulli numbers, but it digresses from the answers after a certain Bernoulli Number, whereas mine is as accurate as possible).

I've read on Wikipedia that David Harvey developed a very efficient algorithm for computing the Bernoulli numbers.

http://en.wikipedia.org/wiki/Bernoulli_number#Efficient_computation_of_Bernoulli_numbers

I wonder how my algorithm's efficiency level compares with that (is the number of assignments counted as arithmetic operations? Maybe someone could explain what is meant by "arithmetic operations" in coding).


I also simplified the results from the formula above to write Bernoulli[3] through Bernoulli [20] in terms of Bernoulli[2] = 1/6 to see if there was a pattern (with the intention of possibly coming up with a simpler recursion relation), but no luck. Here are the results: (Note that I had to set all odd Bernoulli numbers to zero to get the even Bernoulli numbers).



Spoiler: Results



\( B_{2}=\frac{1}{6} \)
\( B_{3}=-\frac{1}{12}+\frac{1}{2}B_{2} \)
\( B_{4}=\frac{1}{20}-\frac{1}{2}B_{2} \)
\( B_{5}=\frac{1}{36}-\frac{1}{6}B_{2} \)
\( B_{6}=-\frac{17}{168}+\frac{3}{4}B_{2} \)
\( B_{7}=-\frac{1}{36}+\frac{1}{6}B_{2} \)
\( B_{8}=\frac{41}{120}-\frac{9}{4}B_{2} \)
\( B_{9}=\frac{1}{20}-\frac{3}{10}B_{2} \)
\( B_{10}=-\frac{335}{176}+\frac{95}{8}B_{2} \)
\( B_{11}=\frac{1}{20}-\frac{3}{10}B_{2} \)
\( B_{12}=\frac{361657}{21840}-\frac{807}{8}B_{2} \)
\( B_{13}=-\frac{5}{36}+\frac{5}{6}B_{2} \)
\( B_{14}=-\frac{10171}{48}+\frac{10227}{8}B_{2} \)
\( B_{15}=\frac{691}{1260}-\frac{691}{210}B_{2} \)
\( B_{16}=\frac{5134583}{1360}-\frac{181561}{8}B_{2} \)
\( B_{17}=-\frac{35}{12}+\frac{35}{2}B_{2} \)
\( B_{18}=-\frac{1142709635}{12768}+\frac{8597079}{16}B_{2} \)
\( B_{19}=-\frac{43867}{252}+\frac{43867}{42}B_{2} \)
\( B_{20}=\frac{14375521549}{5280}-\frac{261423915}{16}B_{2} \)

Since even Bernoulli numbers are non-zero, I calculated the next five of them as well to add more numbers.

\( B_{22}=-\frac{76041542929}{736}+\frac{9919056565}{16}B_{2} \)
\( B_{24}=\frac{208853198153009}{43680}-\frac{459026329623}{16}B_{2} \)
\( B_{26}=-\frac{25436915554739}{96}+\frac{25437052404387}{16}B_{2} \)
\( B_{28}=\frac{80355735032859727}{4640}-\frac{1662535069585901}{16}B_{2} \)
\( B_{30}=-\frac{302038416081847761985}{229152}+\frac{126534794275369995}{16}B_{2} \)


I was wondering if either the sequence of numbers multiplied by \( B_{2} \) or the number sequence just added exist already. I first thought to look here (link needed: http://oeis.org/), but then I realized that they only have integer sequences!_


----------



## IanTheCuber (Jul 22, 2012)

Pascal's Triangle FTW

I use it as a similar reference to the Fibonacci Sequence. Anyone disagree?

Fibonacci-1+1=2 2+1=3 3+2=5 5+3=8 8+5=13 13+8=21 21+13=34, and so on.
Pascal-1+1=2 2+1=3, then a branch to 3+1=4 and 3+2=5. Like a family tree. I think a similar method can be applied to Fibonacci Sequence, eh?


----------



## Christopher Mowla (Jul 22, 2012)

IanTheCuber said:


> Pascal's Triangle FTW
> 
> [...]
> 
> I think a similar method can be applied to Fibonacci Sequence, eh?


Not exactly. I mean it's even more simple to apply Pascal's Triangle to calculate the Fibonacci numbers: you don't have to adjust the pascal's triangle at all. Just look at Wikipedia. They show that

\( F_{n}=\sum\limits_{k=0}^{\left\lfloor \frac{n-1}{2} \right\rfloor }{\left( \begin{matrix}
n-k-1 \\
k \\
\end{matrix} \right)} \)​ 
and they show this image which represents that:​ 


​


----------



## IanTheCuber (Jul 29, 2012)

I just wanted to make it more "in depth"


----------



## Ranzha (Aug 6, 2012)

*A Problem I'm Not Quite Sure How To Solve*

I got some errors that look like this:
Warning: touch() [function.touch]: Utime failed: Permission denied in [path]/includes/class.latex-vb.php on line 167

Warning: touch() [function.touch]: Utime failed: Permission denied in [path]/includes/class.latex-vb.php on line 167

Warning: touch() [function.touch]: Utime failed: Permission denied in [path]/includes/class.latex-vb.php on line 167

anyway, that's not the problem I have for you guise.

*Backstory:* So there's this game my friend Shiaohan showed me in middle school involving a shuffled deck of cards. It was a pretty stupid game, looking back, but the gameplay was simple--draw the top card off the deck, turn it over on the table, and say "Ace."
If the card is an Ace, you get zero points, your game is over, and you must shuffle the cards and start over from zero points.
If the card isn't an Ace, you get one point, and you repeat the process of drawing cards, each successive time proclaiming the next value ("Two", "Three",... "King", and wrap around to "Ace" again), racking up as many points as you can before you have to start over.
The goal is to get 52 points, aka going through the entire deck without fail.
It quickly occurred to me that you can troll this game by having a sorted deck of cards and then placing one card from the top to the bottom. In this way, the result obviously comes out to 52 points, even if the deck wasn't completely shuffled.
*Problem:* What is the probability of playing this game and receiving a result of 52 points?


----------



## ben1996123 (Aug 7, 2012)

Ranzha V. Emodrach said:


> I got some errors that look like this:
> Warning: touch() [function.touch]: Utime failed: Permission denied in [path]/includes/class.latex-vb.php on line 167
> 
> Warning: touch() [function.touch]: Utime failed: Permission denied in [path]/includes/class.latex-vb.php on line 167
> ...



I think it would just be \( \left(\frac{12}{13}\right)^{52}\approx1.56\% \)


----------



## Ranzha (Aug 7, 2012)

ben1996123 said:


> I think it would just be \( \left(\frac{12}{13}\right)^{52}\approx1.56\% \)



Um, no.


----------



## ben1996123 (Aug 7, 2012)

Ranzha V. Emodrach said:


> Um, no.



oh yeah. i just realised it's a deck of cards.


----------



## Ranzha (Aug 7, 2012)

ben1996123 said:


> oh yeah. i just realised it's a deck of cards.
> 
> facehoof



It's okay xD

I think it's more of a binary pass/fail intuition system that I have to figure out.


----------



## 5BLD (Aug 28, 2012)

So over lunch I thought of this problem, and instead of solving it with just, the volormula of a sphere I decided to have a crack at integration. Of course, being me, I accidentally did it for a cylinder, not a sphere. So I chatted to ben about rotating it about the x axis, because I forgot how to do it and didn't think of doing it, and yeah here's the solutions. 

He brought up another interesting point about chopping the sphere into n segments. Anyway enough build up:


Spoiler: question



Ok so, if you have a perfectly spherical meatball and want to chop it into four equal volumed pieces with only 3 vertical, parallel cuts, where would the cuts need to be?





Spoiler: solution



So I tried writing without my tablet. I integrated the equation \( y=\sqrt{1-x^{2}} \)which is a semicircle because implicits annoy me. 

\( \int\sqrt{1-x^{2}} dx=\frac{x\sqrt{1-x^{2}}+arcsin(x)}{2} \)

--
this is where I made a boo boo and assumed it was a cylinder.
I said okay so let's set this to -pi/8 and solve for x to get like -0.404


Spoiler










silly me.
--
So anyway I chatted to ben about it and he reminded me of revolving around the x axis and finished it
[18:17:28] Bacon: or you could use the volume of a sphere formula
[18:17:32] fivebldcubing: but thats boring
[18:17:35] Bacon: kso
[18:17:44] Bacon: you have y=√1-x²
[18:18:02] Bacon: imagine that curve rotated τ radians around the x axis to form a sphere
[18:18:05] Bacon: k?
[18:18:24] fivebldcubing: yeah
[18:18:32] Bacon: to get the volume of that
[18:18:38] Bacon: integrate pi y² dx
[18:18:56] Bacon: so pi*integral 1-x²dx from -1 to 1 = volume
[18:19:13] Bacon: =pi[x-x³/3] from -1 to 1
[18:19:19] Bacon: =4pi/3

so whole volume = 4pi/3
[18:21:09] Bacon: so each piece volume = pi/3
[18:21:36] Bacon: so integrate pi y² dx from -1 to n = pi/3
[18:21:49] Bacon: integrate y² dx from -1 to n = 1/3
[18:21:58] Bacon: etc
[18:22:06] Bacon: replace n with x because n is stupid
[18:22:18] Bacon: multiply by 3 to get rid of fractions n stuff
[18:22:27] Bacon: and you get x³-3x-1=0
[18:22:38] Bacon: and the solution is -0.347296etc.

the other cuts are at 0 and +0.347296 of course.



then we talked about chopping into more/fewer pieces. Weirdly it turns out than for -1<=x<=1 one of the cuts should be






Any thoughts?


----------



## Endgame (Aug 28, 2012)

I'm hungry as ****, but s'graven haeg dude.


----------



## StachuK1992 (Sep 12, 2012)

Anyone care to help me figure these two problems out from Abstract Algebra I?

If a|(b + c) and gcd(b, c) = 1, prove that gcd(a, b) = 1 = gcd(a, c).

and

Show that if n lines are drawn on the plane so that none of them are parallel, and so that
no three lines intersect at a point, then the plane is divided by those lines into (n^2+n+2)/2 regions.


The second one, I simply have no idea how to approach it. We've done nothing similar to this that I can recall.
The first one, we've done stuff similar, but I'm not sure how to start it. Help me just start this one?
Thanks


----------



## CarlBrannen (Sep 12, 2012)

If gcd(x,y) = 1, then you can find M and N with xM + yN = 1. Apply that fact to your three statements about gcd's. Now think about factoring something to show that you've got a contradiction.

On the second, consider the difference between n lines and n-1 lines. This is the number of new regions created by that last line. It should be pretty simple and then recursion.


----------



## MTGjumper (Sep 12, 2012)

Also, it might be useful to note that \( \frac{1}{2}(n^2 + n + 2) = \frac{1}{2}n(n+1) + 1 \)

I was going to ask a group theory question here, but then I realised that if G is a group, and H is cyclic subgroup of G, then the fact that H is abelian does not imply that H is a normal subgroup of G.


----------



## blakedacuber (Sep 22, 2012)

can someone figure this out? iv tried like 6 times and still cant get it right.

A runner runs 7.03 km in 21.9 min and then takes 37.0 min to walk back to the starting point.What is the magnitude of the average velocity for the total trip?


----------



## Stefan (Sep 22, 2012)

That seems trivial. What results did you get, and what's the supposed correct answer? And why ask for the "magnitude"?


----------



## blakedacuber (Sep 22, 2012)

Stefan said:


> That seems trivial. What results did you get, and what's the supposed correct answer? And why ask for the "magnitude"?


I got 4.28 m/s, 3.97 m/s both twice and my other 2 answers were ridiculously wrong. unfortunately I don't know, it's part of an assignment for university. I'm not quite sure because in the question they ask for the average speed for the total trip? which turned out to be 3.97m/s


----------



## Stefan (Sep 22, 2012)

What do you not know? Their answer? Then how do you know that you _"cant get it right"_?

I'd say 3.98 m/s, but I'm still confused by the "magnitude" thing and that this is a university level question.


----------



## blakedacuber (Sep 22, 2012)

Stefan said:


> What do you not know? Their answer? Then how do you know that you _"cant get it right"_?
> 
> I'd say 3.98 m/s, but I'm still confused by the "magnitude" thing and that this is a university level question.



I don't know their answer  because its online, so basically they give u the question online and u work it out however you want then type your answer in a box on the website and you can click "check answer" or "submit" if you click submit it locks the correct answers if you click check answers it just says which ones are correct and which are in correct.

Yeah and we only just started university (1st years  )


----------



## Stefan (Sep 23, 2012)

Ah ok, makes sense. Are you sure they want it in m/s and with two digits after the point?


----------



## blakedacuber (Sep 23, 2012)

They didn't specify but in previous questions it was only correct if it was in m/s with 2-3 digits after the decimal point.


----------



## conn9 (Sep 26, 2012)

Just a simple, quick question on circle geometry:
Lets say I'm given 4 points on a circle: A, B, C and D. If I were to draw the perpendicular bisector of A and B, and the perpendicular bisector of C and D, is the point of intersection of these two lines always the centre of the circle?


----------



## Stefan (Sep 26, 2012)

conn9 said:


> Just a simple, quick question on circle geometry:
> Lets say I'm given 4 points on a circle: A, B, C and D. If I were to draw the perpendicular bisector of A and B, and the perpendicular bisector of C and D, is *the point of intersection* of these two lines always the centre of the circle?



No. It's possible that the two lines are the same, and then there's no _"the point of intersection"_ but infinitely many, and only one of them is the center of the circle.


----------



## conn9 (Sep 26, 2012)

Stefan said:


> No. It's possible that the two lines are the same, and then there's no _"the point of intersection"_ but infinitely many, and only one of them is the center of the circle.



I understand. But is the intersection the centre of the circle if the two lines don't have the same equation?

Edit: Maybe this question is more relevant: Is the perpendicular bisector of two points on a circle always a diameter of that circle?


----------



## vcuber13 (Sep 26, 2012)

blakedacuber said:


> I got 4.28 m/s, 3.97 m/s both twice and my other 2 answers were ridiculously wrong. unfortunately I don't know, it's part of an assignment for university. I'm not quite sure because in the question they ask for the average speed for the total trip? which turned out to be 3.97m/s





blakedacuber said:


> can someone figure this out? iv tried like 6 times and still cant get it right.
> 
> A runner runs 7.03 km in 21.9 min and then takes 37.0 min to walk back to the starting point.What is the magnitude of the average velocity for the total trip?


youve asked 2 different questions. average velocity is 0, average speed i get 3.98 m/s


----------



## Stefan (Sep 26, 2012)

Ah, thanks... now I understand what they mean with "magnitude". In German, I don't think we have two separate words for velocity and speed, and I only knew "magnitude" as in "order of magnitude".

Magnitude of velocity is speed, but they asked for _"magnitude of the average velocity"_ and not _"average magnitude of velocity"_, so I'd say you're right and it's zero.


----------



## ThomasJE (Sep 30, 2012)

conn9 said:


> Edit: Maybe this question is more relevant: Is the perpendicular bisector of two points on a circle always a diameter of that circle?



Yes.


----------



## ben1996123 (Oct 6, 2012)

ok so don't open the spoiler if you're offended by some harmless words

@mods, I warned people. you can't ban me for that.



Spoiler



[17:59:39] 5BLD: okay soe
[17:59:52] 5BLD: if x(!)=log(sin(1/!))
[17:59:59] Fluttershy: lol
[17:59:59] 5BLD: and ! is a function of +
[18:00:01] 5BLD: then
[18:00:05] 5BLD: theres no variable
[18:00:07] 5BLD: just funxions
[18:00:10] 5BLD: its riek sayin
[18:00:12] Fluttershy: and
[18:00:14] Fluttershy: no
[18:00:16] Fluttershy: nonono
[18:00:17] 5BLD: d/dx of sin
[18:00:21] Fluttershy: sin is a variable
[18:00:25] 5BLD: lol
[18:00:37] 5BLD: but then ! is a function?
[18:00:38] Fluttershy: s*n*√-1
[18:00:58] Fluttershy: sin(1/!) = sn*i/!
[18:01:06] 5BLD: aha
[18:01:08] 5BLD: okay...
[18:01:16] 5BLD: impricit with 4 variabelles letsgoo
[18:01:20] Fluttershy: i/! is of course a function too
[18:01:21] 5BLD: *3
[18:01:26] Fluttershy: and of quorce its an odd function
[18:01:30] 5BLD: wut
[18:01:37] Fluttershy: because

i/!

pi radiance rotational simmatry
[18:01:41] Fluttershy: i/!

LOL!!!!!!
[18:01:42] 5BLD: rol
[18:01:51] 5BLD: wait
[18:01:55] 5BLD: log is also a variable right?
[18:02:02] 5BLD: so...
[18:02:04] 5BLD: log(sin(1/!)) is
[18:02:14] Fluttershy: no
[18:02:26] Fluttershy: log is a function of dx
[18:02:34] 5BLD: l.o. g((sqrt(-1).(s.n))/!)
[18:02:39] 5BLD: where . means tiems ofc
[18:02:44] Fluttershy: lol
[18:02:49] 5BLD: and g is a funxion of s, n and !
[18:03:04] Fluttershy: and g(i.s.n/!) is a function where i.s.n/! = x
[18:03:07] 5BLD: and where sqrt(-1).(s.n)
[18:03:10] Fluttershy: l.o.g(x)
[18:03:17] 5BLD: (s.n) is part of the module sqrt(-1)
[18:03:19] Fluttershy: lo*g(x)
[18:03:24] 5BLD: it's
[18:03:25] 5BLD: like math.sqrt(1)
[18:03:29] Fluttershy: also
[18:03:31] 5BLD: sqrt(-1).(sn)
[18:03:39] 5BLD: so basically the Tin function
[18:03:43] 5BLD: of module sqrt(-1)
[18:03:47] 5BLD: cuz Sn is tin
[18:03:53] Fluttershy: 1 is a function of e^pi*arcsec(!)
[18:04:02] 5BLD: lol
[18:04:10] Fluttershy: sin(x) is the imaginary tin function
[18:04:18] 5BLD: but theres no e, pi, or a, r , c, or s in the funxion 1
[18:04:22 | Edited 18:04:31] Fluttershy: where function is a variable containing the string "variable";.
[18:04:31] 5BLD: so 1(e,pi,a,r,c,s,e,c)=?
[18:04:38] Fluttershy: = 1/cot(!)
[18:04:48] Fluttershy: LOL 1/cot = TAN ! ! !! ! ! !! LOL O!¬O !O !O !O OW)AGF{S)GIPR OTPlrg
[18:05:05] Fluttershy: where ! ! !! ! ! !! LOL O!¬O !O !O !O OW)AGF{S)GIPR OTPlrg is a function of Li
[18:05:05] 5BLD: I sang " 'Applejack' jugs of cider on the wall, 'Applejack' jugs of cider," Applejack got one less.
[18:05:22] Fluttershy: oh ??????????????????
[18:05:33] 5BLD: and where tan is actually the Ta rithmic integral
[18:05:36] Fluttershy: art thou listenizing to the smilesmilesmilewremicks??? ?? ??
[18:05:41] 5BLD: like Li is the logarithmic integral
[18:05:45] Fluttershy: Ta = tantalum
[18:05:48] Fluttershy: Li = lithium
[18:05:50] 5BLD: ah
[18:05:55] 5BLD: so Li is the Lithium funxion
[18:05:57] Fluttershy: MATHS = CHEMISTRY OMFG NEW DISCOVERY
[18:06:18 | Edited 18:06:28] Fluttershy: CoS = COBALT SULFIDE OMFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
[18:06:36] 5BLD: SIN= SULPHUR NITRIDERATE
[18:06:47] Fluttershy: LOL ! ! !
[18:06:51] 5BLD: THARFOR
[18:06:54] Fluttershy: SIN = SULFUR INDIUMIDE
[18:06:56] 5BLD: COSINE IS
[18:07:09] 5BLD: (COS)i (N)e
[18:07:11] Fluttershy: COS = CSO = CSO4 BECAUSE 4 = 1 = CARBON SULFATE
[18:07:27] 5BLD: which is i lots of Cobalt Sulphide
[18:07:29] Fluttershy: SIN = INDIUM SULFIDE
[18:07:29] 5BLD: and e lots of nitrogen
[18:07:42] Fluttershy: TAN = TANTALUM NITRIDE
[18:07:57] Fluttershy: DIVIDE BY TAN AND YOU GET TALUM NITRIDE/TAN = 1
[18:08:08] 5BLD: AND W IS THE TUNGSTENIAL INTEGWAL
[18:08:13] Fluttershy: LOL ! ! !
[18:08:14] 5BLD: NOT THE LAMBERT FUNXION
[18:09:03] Fluttershy: INVERSE X^X = LN(X)/TUNGSTEN(LN(X)) = LITHIUM NITRIDE(X)/TUNGSTEN(LITHIUM NITRIDE(X))
[18:09:23] 5BLD: LOL YOU FORGOT TO BALANCE YOU'R IQUASHUN NUB
[18:09:31] Fluttershy: NO
[18:09:36] Fluttershy: OWAIT YEAH I DID
[18:09:38] Fluttershy: BOOSHIT
[18:09:40] 5BLD: AND LUL ^ IS NOT AN ELEM'NT
[18:10:00] Fluttershy: REPLACE ALL THE LITHIUMS WITH LITHIUM.3 BECAUSE . = *
[18:10:13] 5BLD: WHERE . = and * ARE FUNXIONS
[18:10:22] Fluttershy: AND LITHIUM PROLLABY HATH A VALEN'T'CY OF 1 AND NITTRIJJEN HATH A VALEN'T'CY OF 3
[18:10:25] Fluttershy: 3LI = N
[18:10:35] Fluttershy: OWEIGHT
[18:10:42] Fluttershy: LITHIUM = LI, NOT L
[18:10:54] Fluttershy: REPLACE LITHIUM WITH 3/i (LITHIUM)
[18:11:06] Fluttershy: BUT 1/i = -i
[18:11:13] 5BLD: BUT NOW SUB IN LOGARITH'MIC INTEGWAL FOR LITHIUM
[18:11:19] Fluttershy: REPLACE LITHIUM WITH -LITHIUM√-9
[18:11:19] 5BLD: AND CANCEL YOUR FRAXIONS FURVER
[18:11:28] 5BLD: WIT PARCIAL FRAXXIONES
[18:12:03] Fluttershy: BREST = BREAST = BoOB = BOOSHIT BORON OXIDE
[18:13:02] 5BLD: BUT BUT BUT Bo(x) IS THE Booshit FUNXION
[18:13:08] Fluttershy: OH ****
[18:13:18] 5BLD: AND ITS OXYGEN BORONIDE YOU MORON
[18:13:19] Fluttershy: OK SO
[18:13:23] Fluttershy: OH YEAH BOOSHIT
[18:14:41] Fluttershy: THE INTEGRAL OF E^X/X IS Ei(X) WHERE Ei(X) IS THE INTEGRAL OF E^X/X
[18:14:48] Fluttershy: http://www.wolframalpha.com/input/?i=integrate+e^x+/x
[18:16:18] Fluttershy: = E^X (SUMFROM1TO∞ (N-1)!/X^N)
[18:16:39] 5BLD: it's the Eileen funxion
[18:16:58] Fluttershy: oh
[18:18:56] Fluttershy: (24ln2 + 19)/(17 - 4√2) squiggly equals pi
[18:19:19] Fluttershy: = 3.14159168164etc.
[18:20:56] Fluttershy: ln√2 = arccoth(3)
[18:21:16] Fluttershy: trouxdat
[18:21:27 | Edited 18:21:29] Fluttershy: oops
[18:21:48] Fluttershy: arctanh(1/3) = ln√2
[18:22:01] 5BLD: sqrt(6 zeta(2)) is about pie
[18:22:01] 5BLD: *pi
[18:22:05] 5BLD: closar than yours atreast
[18:22:16] Fluttershy: lol
[18:22:22] Fluttershy: its exactry pie/e
[18:22:29] Fluttershy: L.O.L. !
[18:22:30] 5BLD: ik
[18:22:31] 5BLD: amazing huh
[18:22:34] 5BLD: how did i doit
[18:23:00] Fluttershy: riemannzeta2=(pi^(e^ln2))/6 LOL ! ! ! ! !
[18:23:31] Fluttershy: iwannafind d exac valeux of zeta(3)
[18:23:46] Fluttershy: it annoys me sometimes
[18:24:21] 5BLD: maek prouxgram
[18:24:28] Fluttershy: butbut not egg-sact
[18:24:34] Fluttershy: zeta3 = 1.20205690315959428539973816151144999076498
[18:24:37] Fluttershy: etc.
[18:24:46] Fluttershy: but noboooooooodeeh knows what the exac valeux is
[18:25:04] 5BLD: plot a graff silly
[18:25:08] Fluttershy: but but
[18:25:10] Fluttershy: not exac
[18:25:16] Fluttershy: in terms of pie n booshit rike that
[18:25:21] Fluttershy: haux to integrate x²/1+e^x
[18:25:35] 5BLD: idk why ask me for integwashion
[18:25:40] Fluttershy: lol
[18:25:42] 5BLD: btw
[18:25:55] 5BLD: I FOUND THE EXACT VALUE FOR ZETA(3)!!!!!
[18:26:04] Fluttershy: ITS ZETA(4-1) OMFG
[18:26:11] 5BLD: NO SILLY
[18:26:14] 5BLD: I AM MORE AQUARATE
[18:26:20] 5BLD: ITS APÉRY'S CONSTANT
[18:26:24] 5BLD: TROLOLOLOL
[18:26:24] 5BLD: I WIN
[18:26:25] Fluttershy: INO
[18:26:27] Fluttershy: LOL !!!!!!!!!!!!!!!!!!!!!
[18:27:03] 5BLD: btw
[18:27:05] Fluttershy: IT 2/3 INTEGRALX²/1+E^X FROM 0TOSIDEWEIGHS8
[18:27:12] 5BLD: you'r integwal cannot be done without lifium
[18:27:19] Fluttershy: ino
[18:27:33] Fluttershy: lithium is now my least favouxrite elemen't
[18:27:41] 5BLD: lol
[18:27:48] 5BLD: i hate tungsten moar
[18:28:10] Fluttershy: nah
[18:28:15] Fluttershy: i hate lithium mõar
[18:28:17] Fluttershy: cuz
[18:28:22] Fluttershy: tungsten = wolfram
[18:28:31] 5BLD: nein
[18:28:38] 5BLD: tungsten = lambert function
[18:28:46] 5BLD: cuz sum stupith math'maticians cant spell
[18:28:48] 5BLD: its not
[18:28:49] 5BLD: wambert
[18:28:51] 5BLD: siwwwy
[18:28:55] Fluttershy: lol
[18:29:17] Fluttershy: imma be like whoever the **** wambert is and invent my own function
[18:29:18] Fluttershy: ok so
[18:29:47 | Edited 18:29:55] Fluttershy: i have found the exact value of zeta(x)
[18:29:49] Fluttershy: loln
[18:29:55] 5BLD: zeta of thumb down?
[18:29:57] 5BLD: hmm
[18:30:21] Fluttershy: zeta(x) = 1/Boosack(x^sin(x))
[18:30:31] 5BLD: its the boosack funxion
[18:30:44] Fluttershy: where boosack(x) is whatever you get whenever you rearrange that equation for boosack(x)
[18:30:46] 5BLD: integwate B(2)
[18:30:51] Fluttershy: ok
[18:30:55] Fluttershy: B²+c
[18:30:56] Fluttershy: LOL ! ! ! ! ! !
[18:30:57] Fluttershy: dB
[18:31:01] Fluttershy: Dessybelle's
[18:31:04] 5BLD: lol
[18:31:05] 5BLD: but
[18:31:09] 5BLD: B is the boosack funxion
[18:31:16] 5BLD: moron
[18:31:28] Fluttershy: dB is the derivative of the Boosack function
[18:31:47] Fluttershy: ok so
[18:32:15] Fluttershy: zeta(x) = 1/(1/zeta(ln(e^x)))
[18:32:20] Fluttershy: OMFG NEW DISQUOVARREIX
[18:32:39] 5BLD: this is what i don't understand in the Wambert funxion
[18:32:44] 5BLD: you defien the funxion
[18:32:47] 5BLD: using the funxion
[18:32:50] 5BLD: its rike sayin
[18:33:00] 5BLD: i caem up with a new funxion:
[18:33:06] 5BLD: the Aluminium funxion
[18:33:10] 5BLD: okay lets call the G(x)
[18:33:31] 5BLD: G(x)=G(x)^G(x)/ln(x)
[18:33:37] 5BLD: it maek no sence
[18:34:06] Fluttershy: OK SO THE FUNCTION X! IS WIERD BECAUSE ! IS WIERD N BOOSHIT OK SO HERES MY FUNCTION. D/DX X! = BOOHAT(X) WHERE BOOHAT(X) IS THE DERIVATIVE OF X!
[18:35:03] Fluttershy: imma post this booshit in the math's thred on spidslovving
[18:35:16] 5BLD: kay
[18:35:20] 5BLD: inb4 deweated D:
[18:35:24] 5BLD: andén i repost
[18:35:26] 5BLD: http://www.youtube.com/watch?v=UA8QQZffIlM
[18:36:39] Fluttershy: ill have to put it all in a spoiler so the mods dont cry about me saying booshit
[18:37:09] 5BLD: nah
[18:37:10] 5BLD: dont
[18:37:14] 5BLD: its just boos hit
[18:37:15] 5BLD: like
[18:37:17] 5BLD: boos from marii
[18:37:19] 5BLD: *mario
[18:37:20] 5BLD: being hit
[18:37:25] Fluttershy: L.O.L. !
[18:37:34] 5BLD: you can poest that as a disclaemer if needbie
[18:37:38] Fluttershy: at the top of the post, ill just put something like
[18:37:48] Fluttershy: "dont open this spoiler if youre offended by harmless words"
[18:38:10] 5BLD: yeah
[18:38:12] 5BLD: dovat


----------



## 5BLD (Oct 7, 2012)

*Calculator/Math Thread*

How do you guys solve equations like 6x^2+3xy=270

Don't care about answers, only methods


----------



## ThomasJE (Oct 7, 2012)

5BLD said:


> How do you guys solve equations like 6x^2+3xy=270
> 
> Don't care about answers, only methods



Hmmm... Let's see...

Get all x/y's on one side, factorise if possible, and then get x on its own. I'll work that one out now. Also, is there a guide to the bb-code for math tags?

Right... Here's what I did to make x the subject.

6x^2 + 3xy = 270
So, we can factorise straight away, and we get:
x(6^2 + 3y) = 270
Divide by (6^2 + 3y) and we end up with:
x = 270 / 6^2 + 3y
Simplify, and we finish with:
x = 90 / 12 + y

If we make y the subject:
6x^2 + 3xy = 270
- 6x^2
3xy = 270 - 6x^2
/ 3x
y = 270 - 6x^2 / 3x
Simplify, and we end up with:
y = 90 - 2x^2 / x


----------



## ben1996123 (Oct 7, 2012)

ThomasJE said:


> Hmmm... Let's see...
> 
> Get all x/y's on one side, factorise if possible, and then get x on its own. I'll work that one out now. Also, is there a guide to the bb-code for math tags?
> 
> ...



he mean't finding integer solutions, not just rearranging.


----------



## ThomasJE (Oct 7, 2012)

ben1996123 said:


> he mean't finding integer solutions, not just rearranging.



That's impossible with two unknowns.


----------



## 5BLD (Oct 7, 2012)

*Calculator/Math Thread*

Ben speaks the truth. I forgot to mention x,y subset bold Q whoops



ThomasJE said:


> That's impossible with two unknowns.



No it's not.



ThomasJE said:


> Spoiler
> 
> 
> 
> ...



Lol I know how to rearrange. I want *all* solutions in terms of, say w. Where w is any integer.

Yesterday ben and I were solving linears. Him with his program and me by hand with this silly method I came up with:



Spoiler



NB: yes, i did not mod the solutions down because I didn't bother. You can probably do it yourself.
NB2: in the answers, I use 'w' to represent ANY integer.

[06/10/2012 20:00:10] Fluttershy: 23x + 61y = 4068
[06/10/2012 20:24:46] fivebldcubing: x=(31-61w)
[06/10/2012 20:26:36] fivebldcubing: and y = 55+23w

23x + 61y = 4068
61y = (4068-23x)
y = (4068-23x)/61
y= 66+(42-23x)/61

r=(42-23x)/61
x=(42-61r)/23
x=1-2r + [ 19-15r ]/23

q=[ 19-15r ]/23
r=(19-23q)/15
r=1-q + [ 4- 8q ]/15

q=[ 4- 15p ]/8
q=-p + [4-7p]/8

t=[4-7p]/8
p=[4-8t]/7
p=-t+ [4-t]/7

t= [4-7w]
--

p=[8w-4]

q=[ 8- 15w]

r=(23w-11)

x=(31-61w)

--
713-1403w + 61y = 4068
61y = 3355+1403w
y = 55+23w


x=31-61w
y = 55+23w
--


----------



## MTGjumper (Oct 9, 2012)

Do you know what the Euclidean algorithm is?


----------



## vcuber13 (Oct 10, 2012)

5BLD said:


> How do you guys solve equations like 6x^2+3xy=270
> 
> Don't care about answers, only methods



i would do something like this (i dont know if this will always work or if it will yield all solutions)

simplify to \( y=\frac{90}{x}-2x \)

separate into the individual terms and analyze

\( \frac{90}{x} \) will give an integer solution when x is a divisor of 90: 1, 2, 3, 5, 6, 9, 10, 15, 18, 30, 45, 90, and their negatives

\( 2x \) will give an integer solution for all integers of x

combining the two, the 24 integer solutions are \( x = \pm1, \pm2, \pm3, \pm5, \pm6, \pm9, \pm10, \pm15, \pm18, \pm30, \pm45, \pm90, \)


----------



## 5BLD (Oct 10, 2012)

*Calculator/Math Thread*

Thats what i did at first, trying to get a fraction of some sort etc.
Nice method. 

However. Are you sure you haven't LOST any solutions by getting rid of the square root?


----------



## vcuber13 (Oct 10, 2012)

what do you mean by get rid of the square root?

wolfram gets 24 solutions
http://www.wolframalpha.com/input/?i=+6x^2%2B3xy%3D270


----------



## 5BLD (Oct 10, 2012)

*Calculator/Math Thread*

Ah i was being silly. Nice work. I didnt actually realise i could use negative factors. Idk why.


----------



## 5BLD (Oct 10, 2012)

*Calculator/Math Thread*

A similar question i came up with is:
6x^2+3xy+1441=y^2

I did reduce it to stuff but it ended up with trying to find perfect squares that satisfy weird stuff and root(33)s being juggled around everywhere. The answer wolfram gives is interesting. And here they CAN be expressed as F(n) where n is any integer.

I will look at it once more tomorrow but id just like to see if there are any blindingly obvious ways i havent tried yet. 
Maybe dividing sides by stuff rather than rooting may work. Idk ill try tomorrow.

Yeah diophantine equations fascinate me. I may try solving stuff like the 6x^2+3xy=270 with continued fractions. I heard its possible for x^2-ky^2=c....

Edit: quadratic formula may work, but it's kinda silly...


----------



## ben1996123 (Oct 11, 2012)

5BLD said:


> A similar question i came up with is:
> 6x^2+3xy+1441=y^2
> 
> I did reduce it to stuff but it ended up with trying to find perfect squares that satisfy weird stuff and root(33)s being juggled around everywhere. The answer wolfram gives is interesting. And here they CAN be expressed as F(n) where n is any integer.
> ...



ill try some stuff tomorrow if i feel like it.


----------



## CarlBrannen (Oct 11, 2012)

6x^2 + 3xy = 270 so
2x^2 +xy = 90 so
x(2x+y) = 90 = (2)(3)(3)(5)
Solutions are read off by noting that x can be any divisor of 90, i.e. the products {1,2}{1,3,9}{1,5} = { 1, 2, 3, 5, 6, 9, 10, 15, 18, 30, 45, 90}.
From that, you get y by putting y = (90/x) - 2x.

So I get 12 solutions, not 24. Did I do something wrong?


----------



## vcuber13 (Oct 11, 2012)

as i said you can use the negatives


----------



## ben1996123 (Oct 11, 2012)

5BLD said:


> x,y subset bold Q







is for rational numbers,




is for in'teger's.


----------



## 5BLD (Oct 11, 2012)

*Calculator/Math Thread*

Mk. I was being silly again. People usually get N and Z mixed up but i get Z and Q mixed up.

Allsoux, i mean't elemen't not subse't


----------



## vcuber13 (Oct 11, 2012)

why does wolfram say there are no real roots?

http://www.wolframalpha.com/input/?i=x**3+2x**2-9x-19


----------



## stannic (Oct 11, 2012)

vcuber13 said:


> why does wolfram say there are no real roots?
> 
> http://www.wolframalpha.com/input/?i=x**3+2x**2-9x-19



It shows three roots of form a + bi where |b| is very close to 0. Probably rounding error?

Edit: with last coeff -18 instead of -19, works nice. With last coeff -20, shows one real root and two complex.


----------



## ben1996123 (Oct 12, 2012)

ok so, something really cool I found today (well, I think its cool because stuff like this really interests me).

\( 0.4^{0.4}\approx ln(2) \)



\( 0.4^{0.4}\approx 0.69314484\cdots \)

\( ln(2)\approx 0.69314718\cdots \)

\( ln(2)-0.4^{0.4}\approx 0.000002337\cdots \)


----------



## gaussgenius (Oct 20, 2012)

Might be helpful tool for you guys.... This is a project my friends and I are working on, and is academic/educational oriented (this is like TI-83 or TI-89 on steroids, and usable on your mobile devices):


http://rapidcalculator.com is a free mobile computing platform. You have the ability to perform heavy calculations on the web or on their mobile devices like the Iphone, Ipad, Android phones, Samsung Galaxy Tablet, etc. Perform intensive math/science/engineering calculations, matrix operations like multiplication/inverses, plot graphs of functions, operations on polynomials like multiplication/differentiation/integration, evaluate Fast Fourier Transforms, manipulate complex numbers and much more! Does not require any installation or plugin.

This tool is currently still under development, but we appreciate your feedback! Let us know what math functions that we should add, and what features would generally be useful for students or teachers. We hope this will be useful for students/teachers/researchers of math/science/engineering. And especially the Speedcubing community, where most people are interested in math and computation.

To start you guys off, you could perhaps expand the polynomial (x^2+2x+1)^999. This is hard by hand, but in RapidCalculator you will just type the command:

poly_x(1,2,1)^999

and see the results!  Your graphing calculator will probably crash on this, but not our platform!

Cube on!


----------



## ben1996123 (Oct 20, 2012)

It's not correct though.


----------



## gaussgenius (Oct 20, 2012)

ben1996123 said:


> It's not correct though.




Thanks for the feedback! Which one is not correct? Is it the poly_x(1,2,1)^999 ? Btw, the output is correct, just that the format is probably a little confusing, so to read the format 

1 x^1998 + 1998 x^1997 + 1.995e+06 x^1996 + .....

The 1.995e+06 should read as 1.995*10^6 (this is the standard notation http://www.aaastudy.com/g6_71gx1.htm). There is some rounding involved in some of the coefficients due to some of them being extremely large in magnitude. Also, we need to allocate computational resources fairly, so in the case of extremely large computations some results might be rounded slightly.

For example, trying a smaller example will give the correct non-rounded value:

(x^2+2x+1)^2 can be evaluated using the command poly_x(1,2,1)^2 which gives 1 x^4 + 4 x^3 + 6 x^2 + 4x + 1

http://rapidcalculator.proalgorithms.com/syntax.html gives some examples on how to use the calculator for many other functions. For example, to plot the graph of x^2, you will do plot[x^2].

And for your post above, regarding ln(2) and 0.4^0.4, typing the command log(2)-0.4^0.4 gives the value

2.33740479894e-06

which is what you found above.

Do you have any suggestions for features that you would use in school? We could try to add it in!

http://rapidcalculator.com or http://rapidcalculator.proalgorithms.com --- try it out!


----------



## ben1996123 (Oct 22, 2012)

\( (x^2+2x+1)^{999} \) gives stuff with negative signs in.


----------



## ThomasJE (Oct 22, 2012)

How would you guys sole this without using trial and improvement?
\( x^3+2x=4 \)
I must have spent half an hour trying to figure this out, but I didn't get anywhere.


----------



## ben1996123 (Oct 22, 2012)

ThomasJE said:


> How would you guys sole this without using trial and improvement?
> \( x^3+2x=4 \)
> I must have spent half an hour trying to figure this out, but I didn't get anywhere.



cubic formeuler.


----------



## MTGjumper (Oct 22, 2012)

Rearrange to \( x^3 + 2x - 4 = 0 \) and then use the substitution \( x = y - \frac{2}{3y} \). Good things should happen.


----------



## conn9 (Oct 22, 2012)

We learned factor theorem and factorising cubics in maths recently so I'll show you the method we learned.
This only works for cubic equations with integer answers, which yours isn't.


Spoiler



x^3 + 2x = 4
x^3 + 2x - 4 = 0
Factors of -4 (c value) are 1, -4, 2, -2, -1, 4.
Plug all of these into f(x) = x^3 + 2x - 4. 
If one gives you an answer of 0, turn it into (x - a) where a is the value you plugged in to get 0. This is a factor.
You can either keep substituting into f(x) to find the three 0 values, or Do long division: (x^3 + 2 -4) / (x - a) to get a quadratic equation, and factorise it to get the remaining two factors.
You'll get f(x) = (x-a)(x-b)(x-c) where a, b and c are three values where f(x) = 0.
Then solve (x-a)=0, (x-b)=0, (x-c)=0, to get the three (it could be one or two) x values.
I guess cubic formula is more helpful.


----------



## 5BLD (Oct 22, 2012)

*Calculator/Math Thread*

Quick question:
When is the real part of i^x equal to its imaginary part, and define its value. Don't gimme lots of decimal places just gimme exact valüę. Lets see who does it first.

As for something I have been thinking about... Is x^x really a function? I mean, it doesn't have an inverse function. Although y=>x is a one to many function the same goes for y=x^2, where x=±sqrt(x), a one to many function. But how about arcsinx. Hmmmmmm. 

Also my new favourite function is (-1)^x because of its interesting graph.

@ben:
Hast youdunit? Sorry am not on skiep because well you know why. Show me what you've got when i am back on skiep.


----------



## stannic (Oct 22, 2012)

5BLD said:


> Quick question:
> When is the real part of i^x equal to its imaginary part, and define its value. Don't gimme lots of decimal places just gimme exact valüę. Lets see who does it first.





Spoiler



_i_ ^ (1/2) = sqrt(2)/2 + _i_ * sqrt(2)/2





5BLD said:


> Is x^x really a function? I mean, it doesn't have an inverse function. Although y=>x is a one to many function the same goes for y=x^2, where x=±sqrt(x), a one to many function. But how about arcsinx. Hmmmmmm.



I think x[SUP]x[/SUP] is a function but it is not always invertible.


----------



## 5BLD (Oct 22, 2012)

*Calculator/Math Thread*

Yeah thats right, nice. Prove it fully though.
As for x^x, well it acts weirdly. You can't integrate it... And some other funny stuff...


----------



## stannic (Oct 22, 2012)

5BLD said:


> Yeah thats right, nice. Prove it fully though.





Spoiler



i = 0 + 1i = cos (pi/2) + i sin (pi/2)
i^(1/2) = cos ((pi/2 + 2*pi*k)/2) + i sin ((pi/2 + 2*pi*k)/2), k=0..1
i^(1/2) = cos (pi/4 + pi*k) + i sin (pi/4 + pi*k), k=0..1

k=0: pi/4 + pi*k = pi/4
i^(1/2) = cos (pi/4) + i sin (pi/4) = sqrt(2)/2 + i sqrt(2)/2

k=1: pi/4 + pi*k = 5*pi/4
i^(1/2) = cos (5*pi/4) + i sin (5*pi/4) = -sqrt(2)/2 - i sqrt(2)/2


I'm really need to learn how to type math.


----------



## MTGjumper (Oct 22, 2012)

5BLD: Argand diagrams make your question easy. Also, a function doesn't have to have an inverse to make it a function. In that case, it's a bijection.


----------



## ben1996123 (Oct 22, 2012)

stannic said:


> Spoiler
> 
> 
> 
> ...



another way of doing it:



Spoiler



i^x = e^ixpi/2 = cos(xpi/2) + isin(xpi/2)
Re(i^x)=Im(i^x) when cos(xpi/2)=sin(xpi/2)
cos(pi/4)=sin(pi/4), so xpi/2 = pi/4
x=1/2





5BLD said:


> Is x^x really a function? I mean, it doesn't have an inverse function.



well it dose but W(stuff) and tungstenizing stuff is stupid.



5BLD said:


> @ben:
> Hast youdunit? Sorry am not on skiep because well you know why. Show me what you've got when i am back on skiep.



the Im(stuff) = 0 question? noux, not done anything on that since thou died from skiep. also i dost not know why thou died from skiep .


----------



## gaussgenius (Oct 23, 2012)

ben1996123 said:


> \( (x^2+2x+1)^{999} \) gives stuff with negative signs in.



Thanks for the feedback! We limited the memory to the computational platform that is why some parts got approximated. We fixed that by increasing the memory limit way higher. In addition, we improved the command so that it is even more convenient to type polynomials. For x^2000-1 you used to have to type poly_x(1,0,0,...,-1). Now you can just type poly_x[x^2000-1]

And for the problem, poly_x[(x^2+2*x+1)^999] now gives the exact correct solution (you will have to wait a while though due to the intensive computation going on...)

By the way, thanks for letting us know! 

The RapidCalculator Team

Try RapidCalculator at:

http://rapidcalculator.com
http://rapidcalculator.proalgorithms.com

instructions on how to use at 

http://rapidcalculator.proalgorithms.com/syntax.html


----------



## 5BLD (Oct 23, 2012)

*Calculator/Math Thread*



ben1996123 said:


> another way of doing it:
> 
> 
> 
> ...



-that is how i did it, too, stannic your ways interesting tho. 
-lol tungsten function. And Li(x) is the lithium function.
-cuz i am nothear and entonces just fohen. Meh i havent done much on it at all, cuz no skiep. Will do moar tomorrow when I am here



MTGjumper said:


> 5BLD: Argand diagrams make your question easy. Also, a function doesn't have to have an inverse to make it a function. In that case, it's a bijection.



Yeah they do indeed, i did it algebraically but you can do it with the complex plane too as you say.

And yeah the function thing... I didn't say a function needs an inverse but i just thought it was strange that it did not have nor has an integral function...


----------



## IanTheCuber (Oct 25, 2012)

I never knew this thread would become so popular: try and think of some math puzzles. Here's mine:

Pick a 3-digit number. However, the first and last digits must have a difference of more than 1. So, 493 Would not work sonce 4-3=1. Also, for you smart-alecs, you can't do 036 or 092 XD. So, your number is 427.

Flip the number and subtract so that the result will be a positive number. 724-427=297.

Now, flip the number and ADD the numbers. 792+297=1089. The answer is ALWAYS 1089. Why? Honestly it is VERY hard to put it in mathematical terms. So, if anyone else knows how, do it.

PS: To admins, I was joking around about the smart-alec thing.


----------



## 5BLD (Oct 25, 2012)

*Calculator/Math Thread*

let number be 100a+10b+c
by subtracting its reverse (100c+10b+a) we get
99(a-c)
[Or more like abs(the stuff)]
Which is always a three digit multiple of 99 assuming a and c differ by more than two (aha).

All multiples of 99 of 3 digits have the middle digit as 9, and the first and last digits always add up to 9. Hence you will always have 909+2*(90) when adding its reverse which is 1089


----------



## vcuber13 (Oct 26, 2012)

i also solved it, a bit differently though

but i dont see why you cant have a 0 or have a difference of 2:

number: 940
940-049=891
891+198=1089

number: 554
554-445=990
990+099=1089


----------



## ben1996123 (Nov 1, 2012)

ok so, today me and 5bld just torked about fractals and the mandelbrot set and julia sets. lol julia was a man. 5bld made a program to generate an image of the mandelbrot set so I decided to do it with opengl but then I didn't feel like doing any programming today. heres a cool image from 5blds program:



Spoiler: image


----------



## 5BLD (Nov 1, 2012)

*Calculator/Math Thread*

Ohai ben. Tomorrow (EDIT: today-- jeez it's late, or early, do you ever sleep?) lets both make julia set prodders. Also heres some stuff:

If |z|>2, |z^2+c|>=|z^2|+|c|>2|z|-|c|
If |z|>|c|, 2|z|-|c|>|z|
So |z^2+c|>|z|
Therefore its increasing

also, about 86% but imma hybërñæt it.


----------



## ben1996123 (Nov 20, 2012)

hi can somepony help me with this question pree

find the telegraphic fourier set potential when the riemann surface begins to integrate through the pair of simultaneous multi-variable exponentially polynomial 5-parameter complex functions, and then from this deduce why there's no euler surface for this sort of plane. give your answer in terms of ∫.


----------



## 5BLD (Nov 20, 2012)

ben1996123 said:


> hi can somepony help me with this question pree
> 
> find the telegraphic fourier set potential when the riemann surface begins to integrate through the pair of simultaneous multi-variable exponentially polynomial 5-parameter complex functions, and then from this deduce why there's no euler surface for this sort of plane. give your answer in terms of ∫.



extension: invent a new theorem by pythagoras based on your findings


----------



## Ickathu (Nov 25, 2012)

So these are two problems in one of the Mandlebrot Competition tests that I can't solve. I'm in a mandelbrot club, and we were assigned these sets of problems, and I'm stuck on 2 of them.
The problems get progressively harder (8 in each test) and I think this is the best I've gotten so far on any of the practice tests.

"6. The quantity
(tan(pi/5)+i) / (tan(pi/5)-i)
is a tenth root of unity. In other words, it is equal to cos(2npi/10) + isin(2npi/10) for some integer n between 0 and 9 inclusive. Which value of n?"

No idea where to even start on that one.

"8. There is a unique triangle ABC such that AC = 14, cos(A) = 4/5, and the radius of the inscribed circle is r = 4. Find the area of this triangle."

I drew the picture, but I'm not really sure where to go from there.


----------



## CarlBrannen (Nov 26, 2012)

On (6) it's easy to see that (tan(pi/5) + i)^10 = (tan(pi/5) - i)^10 but the two sides are complex conjugates. For them to be equal they must both be real.

Therefore tan(pi/5) +i is a 10th root of a real number. But its squared magnitude is tan^2(pi/5) + 1 = sec^2(pi/5), so therefore:

(tan(pi/5) + i)/sec(pi/5) = cos(2n pi/10) + i sin(2n pi/10)

and so cos(pi/5) = sin(2n pi/10) which is easy to solve, one finds n=2:

sin (2x2 pi/10) = sin( 2 pi/5) = cos( pi/2 - 2 pi/5) = cos(pi/5), as desired.


----------



## CarlBrannen (Nov 26, 2012)

(8) It's easy to make mistakes on this sort of problem. Here's a quick attempt. I'm sure it's the right way of doing it, but I'll leave it to you to figure out where any errors are.

It's very useful to know that if you choose an arc BC of a circle, the measure of the arc (which will be between 0 and 359.999... degrees) will always be twice the angle you would get by choosing any point on the arc A, and measuring the angle BAC (which will be between 0 and 179.999... degrees).

Thus the angular measure of side A is twice the arc cosine of 4/5. Half this angle gives half the measure of the arc. So this defines a "little right triangle" with ratios of sides of 3/5 to 4/5 to 1. The right angle of this "little right triangle" is on the midpoint of side A, so we can use this "little right triangle" to find the length of A. The hypotenuse of the "little right triangle" is a radius of the circle so has length 4. Thus the other sides have lengths 4(3/5)=12/5 and 4(4/5)=16/5. To figure out the length of A we want the 3/5 side (i.e. the sine side rather than the cosine side) so we have A = 2 (12/5) = 24/5. Since AC = 14, this gives C = 14/(24/5) = 35/12.

I don't recall all the trig formulas, but I do recall that sin(A)/A = sin(B)/B = sin (C)/C. And sin(A) = 3/5 so this gives me sin(C) = (3/5)(35/12)/(24/5) = 35/96.

Now to measure the area, break it into two parts by drawing a perpendicular from point B down to side B. By trig, this perpendicular has length C cos(A) = (35/12)(4/5) = 7/3. The area of the triangle is therefore half of (7/3) B = (7/6)B.

But B = C cos(A) +- A cos(C). I put +- because you don't know from the equations whether angle B is acute or obtuse. To figure that out, simply look at sin(A)=3/5 and sin(C) = 35/96. Does angle A and C add up to less than or more than 90 degrees? If less than, use the obtuse case, if more than, use the acute case. In the event, both sin(A) and sin(C) are smaller than sqrt(1/2) and so A and C are less than 90 degrees so they add up to less than 90 degrees. Therefore angle B is obtuse and we must use the + sign.

From here it's a matter of substitution.


----------



## TheNextFeliks (Nov 26, 2012)

I am in Geometry. It is not hard but the proofs are a pain in the neck.


----------



## Ickathu (Nov 26, 2012)

CarlBrannen said:


> On (6) it's easy to see that (tan(pi/5) + i)^10 = (tan(pi/5) - i)^10 but the two sides are complex conjugates. For them to be equal they must both be real.
> 
> Therefore tan(pi/5) +i is a 10th root of a real number. But its squared magnitude is tan^2(pi/5) + 1 = sec^2(pi/5), so therefore:
> 
> ...



hmmm. I looked in the answer book and they said something along the lines of "One can look at this equation and reasonably assume that the answer is n = 3."
And that's the answer they gave. :/



TheNextFeliks said:


> I am in Geometry. It is not hard but the proofs are a pain in the neck.



I hated geometry. Darn proofs...


----------



## CarlBrannen (Nov 26, 2012)

Ickathu, it's easy to do the calculation with a calculator.

(a) Compute the angle of tan(pi/5) + i.
(b) Compute the angle of tan(pi/5) - i.
(c) Subtract. Should give you a multiple of 2 pi/10.

The difference between the n=2 and n=3 answers amounts to a minus sign in the imaginary part. So if I got it wrong (seems likely), look for a sign error.

*edit*

Yep, I get n=3. The angle of tan (pi/5) +- i = +- (pi/2 - pi/5) = +- 3 pi/10, so the overall angle is 3 pi/10 - -3pi/10 = 6pi/10 and n=3.


----------



## Ickathu (Nov 26, 2012)

CarlBrannen said:


> Ickathu, it's easy to do the calculation with a calculator.
> 
> (a) Compute the angle of tan(pi/5) + i.
> (b) Compute the angle of tan(pi/5) - i.
> ...



Oh yes, I forgot to mention that we are not allowed to use calculators on these tests  oh well, even the teacher and math pro who just finished his college degree in engineering and mathematics wasn't able to solve this one  but I see what you did, so that clarifies it some.


----------



## IanTheCuber (Dec 2, 2012)

*Gemetry Guide to Noobs*

This is a geometry guide for the average noob.



Spoiler



Area of a triangle: 1/2bh
Area of a circle: (pi)r[SUP]2[/SUP]
Circumference of a circle: 2(pi)r or (pi)d



I'll continue it later


----------



## 5BLD (Dec 3, 2012)

IanTheCuber said:


> This is a geometry guide for the average noob.
> 
> 
> 
> ...



Can you prove these? Namely the area of the circle one, I'm interested in your meffod.


----------



## vcuber13 (Dec 3, 2012)

heres the one i know:


Spoiler



cut circle along radius
unwrap it to make a triangle
dimensions are r by 2pi r
A=2pi*r^2 /2
=pi*r^2


----------



## 5BLD (Dec 5, 2012)

thats not a proof


----------



## vcuber13 (Dec 5, 2012)

how isnt it?

http://en.wikipedia.org/wiki/Area_of_a_circle#Triangle_method


----------



## 5BLD (Dec 5, 2012)

prove its a triangle


----------



## vcuber13 (Dec 5, 2012)

how about this then:

\( \int_0^r \! 2\pi x \, \mathrm{d} x = \pi r^2 \)


----------



## 5BLD (Dec 5, 2012)

Yes, that was the proof i was thinking of. You didn't prove it was a triangle for me for the other one though.


----------



## vcuber13 (Dec 5, 2012)

i know, the only thing i can think of is this:
y=2pi*r
y'=2pi
therefore it increases linearly and will make a triangle


----------



## 5BLD (Dec 5, 2012)

*Calculator/Math Thread*

You can do that even with polar functions? Ooh


----------



## brandbest1 (Jan 23, 2013)

I feel like bumping this thread cuz I'm a math noob.

How do you factor x^n *+* y^n with a factor of x *+* y?


----------



## vcuber13 (Jan 23, 2013)

it varies with n


----------



## TheNextFeliks (Jan 23, 2013)

Geometry:
Sides of a triangle are 4x+6, 2x+1, and 6x-1. 6x-1 is the longest. For which values of x is the triangle obtuse. I keep applying quadratic formula and getting a negative in the discriminant.

EDIT: Nevermind, I multiplied wrong.


----------



## 5BLD (Jan 23, 2013)

*Calculator/Math Thread*

Right guys. Harmonic series from 1 to k closed form? Is there? Also on a related note how do you guys prove zeta2= pi^2/6? This is my way i thought of today though its not really mine cuz i think i saw it somewhere last year.



Spoiler



ye got ye expansion of sinx:
sinx=x-x^3/3!+x^5/5!-x^7/7!+x^9/9!-...

(sinx)/x=1-x^2/3!+x^4/5!-x^5/6!+...

cuz polynomial, you can write it using its roots. (remembering tis periodic in x, so roots at x=npi, where n element Z but not zero)
(sinx)/x=(1-x/pi)(1+x/pi)(1-x/(2pi))(1+x/(2pi))(...
sinx/x=(1-x^2/pi^2)(1-4x^2/pi^2)(...

i forgot how newton's identities let you multiply it out and collect x^2 terms. But someone told me you can. But yeah so the coefficient of x^2 in the series expansion will be therefore:

-1/pi^2-1/4pi^2-1/9pi^2-...
=-(1/pi^2+1/4pi^2+1/9pi^2+...)
=-1/pi^2 sigma k=1 to inf 1/k^2 = -1/pi^2 zeta2

looking at the original mclaurin series of (sinx)/x the coefficient of the x^2 tis -1/3!=-1/6

-1/pi^2 zeta2= -1/6
zeta2= pi^2/6


----------



## ducttapecuber (Jan 24, 2013)

Well, since the this thread was bumped....

I currently take Algebra 1, which is (sadly) the highest level of math my school offers. Next year I am taking Geometry Honors IB (aka standard geometry course with extra enrichment, application, and more work) and I think I am also taking trig or algebra 2, not sure.
I want to go into a physics field, which requires a lot of math. I enjoy math and science a lot!


----------



## MTGjumper (Jan 24, 2013)

5BLD said:


> Right guys. Harmonic series from 1 to k closed form? Is there? Also on a related note how do you guys prove zeta2= pi^2/6? This is my way i thought of today though its not really mine cuz i think i saw it somewhere last year.
> 
> 
> 
> ...



That's precisely how Euler did it. But you haven't justified being able to manipulate some of your infinite series


----------



## ben1996123 (Jan 30, 2013)

IT WASNT ME, i DID IT!


----------



## 5BLD (Jan 30, 2013)

*Calculator/Math Thread*

Lol why did i actually laff at it, the 3 times that i watched it


----------



## ThomasJE (Feb 5, 2013)

Anybody in the UK doing the UKMT Intermediate Maths Challenge?


----------



## ben1996123 (Feb 10, 2013)

ThomasJE said:


> Anybody in the UK doing the UKMT Intermediate Maths Challenge?



I did it last year and got gold

omeglepeople are morons

Question to discuss: Teach me something!
You: ok
You: e^x is periodic
Stranger: ok this will work no matter what
Stranger: think of a number
You: x
Stranger: times it by two
You: 2x
Stranger: add 60
You: 2x+60
Stranger: then subtract half of the original number you thought of
You: 3x/2 + 60
Stranger: and your answer will always be 30
Stranger: no matter what
You: no it wont
Stranger: yes.. it will 
You: sure, all numbers are the same as -20 arnt they


----------



## Ryntak94 (Feb 10, 2013)

Im a senior in high school I'm currently in Calculus AB. (Calculus 1). The hardest math class I've taken was Algebra I in 8th grade, and Calculus so far has been the easiest. I think I'm screwed up but oh well.


----------



## 5BLD (Feb 10, 2013)

*Calculator/Math Thread*



ben1996123 said:


> I did it last year and got gold
> 
> omeglepeople are morons
> 
> ...



Lol juanbei disgai is so stchewpith
Also last year ididit and got górd and did olympiad aswerr... Oarso i had to do it this year and presumably next year aswerr
I wana do thy senior one though cuz interesting


----------



## ben1996123 (Feb 11, 2013)

http://www.wolframalpha.com/input/?i=fluttershy+curve
http://www.wolframalpha.com/input/?i=my+little+pony+curve

HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ONBE


----------



## 5BLD (Feb 11, 2013)

*Calculator/Math Thread*

We should make a parametric curve formula thingy generator (just loads of heaviside step and stuf) and make a proper fluttershy curve.


----------



## ThomasJE (Feb 13, 2013)

ben1996123 said:


> I did it last year and got gold



Same; I got 93; the best in my school.



5BLD said:


> Lol juanbei disgai is so stchewpith
> Also last year ididit and got górd and did olympiad aswerr... Oarso i had to do it this year and presumably next year aswerr
> I wana do thy senior one though cuz interesting



I also got through to the Olympiad and got 36.

I did the Junior challenge in 2011 (Y8) and also got to the Olympiad where I got 28. So I've got through to the Olympiad in the two I've done.

The results for this year are up.
http://www.mathcomp.leeds.ac.uk/individual-competitions/intermediate-challenge/


----------



## ben1996123 (Feb 13, 2013)

ThomasJE said:


> Same; I got 93; the best in my school.
> 
> 
> 
> ...



erkie so im gonna do that now cuz im board

...

ok done. I did every question and got them all right, with 25 seconds left, 135 marqs



edit: alsoe doing definite integración mentally is funny. in maff last week one of the questions was \( \int_0^{\frac{\pi}{4}}tan(x)sec^3(x)dx \) = what, and after rike 20 seconds, I wrote down \( \frac{2\sqrt{2}-1}{3} \) and the teacherizer was liek, "how did u do that"


----------



## vcuber13 (Feb 14, 2013)

dont forget your dxs


----------



## brandbest1 (Feb 14, 2013)

In layman's terms, can someone tell me and describe what the hook-length formula is?

Btw, I am taking honors geometry right now in school but I know most of algebra 2 and stuff like that and am attempting to learn a little calculus. I recently learned what a riemann sum is and what indefinite integration is.
I am also a math contest freak, that's why I am asking the above cuz I'm afraid it the first one might show up on the AMC. i might qualify for the AIME though, I got a 118.5 on the 10A.
If you're not from the US, you'll think I'm weird.


----------



## Ickathu (Feb 15, 2013)

Does anyone else here do the Mandelbrot Competitions? http://mandelbrot.org/


----------



## brandbest1 (Feb 15, 2013)

Ickathu said:


> Does anyone else here do the Mandelbrot Competitions? http://mandelbrot.org/



I do!


----------



## Ickathu (Feb 16, 2013)

brandbest1 said:


> I do!



Cool! What were your scores for the rounds so far this year? It's my first year doing it; I got 2 (lol) on round 1 (Nov), 5 on round 2 (Dec), 4 (Jan), and 5 (Feb). I've been the highest score in my group of 6 each time.
What math have you done? I've done Algebra 1 and 2, Geometry. I'm doing a Counting and Probability course formally (I suppose; I'm homeschooled but this is the one that my mom has "assigned" me, even though I do extra on my own anyway). I'm also working through the last bit of Precalculus/Trigonometry and a Number Theory course in my own spare time.
Also, do you do the team play? My team got 12 on the first round this year. The second round was REALLY hard though, I don't think we even got close to 12, although I did do some pretty cool infinite sequences stuff to prove some of the things, so if I did it right (fingers crossed since I was the only one in my team that knows how to do it, so I'm gonna be the one to blame if we fail miserably ) then I think we got at least a few points (maybe 8-10)


----------



## brandbest1 (Feb 16, 2013)

Ickathu said:


> Cool! What were your scores for the rounds so far this year? It's my first year doing it; I got 2 (lol) on round 1 (Nov), 5 on round 2 (Dec), 4 (Jan), and 5 (Feb). I've been the highest score in my group of 6 each time.
> What math have you done? I've done Algebra 1 and 2, Geometry. I'm doing a Counting and Probability course formally (I suppose; I'm homeschooled but this is the one that my mom has "assigned" me, even though I do extra on my own anyway). I'm also working through the last bit of Precalculus/Trigonometry and a Number Theory course in my own spare time.
> Also, do you do the team play? My team got 12 on the first round this year. The second round was REALLY hard though, I don't think we even got close to 12.



I'm not sure if we do the Team Play, I'm only a freshman though, so we probably do.

As I've stated before, I've taken Algebra 1 (or Integrated Algebra, as it's called here) and Geometry, as (informally) Algebra 2. I've looked at it but didn't actually take it yet. Algebra 2 and Trig are mixed into a full-year course for us also.
Wait, there are formal Probability courses? I never knew that, looks like my school doesn't offer those, probably have to take it through ArtofProblemSolving.

I think I threw away my past Mandelbrot competitions (lol) but my most recent one (4) I got an 8. I think I might have also slipped in a 9 somewhere, can't remember. My first one was an 8 too.

By the way, what grade are you in? Cuz from your profile picture I thought you were like 8 years old


----------



## Ickathu (Feb 16, 2013)

brandbest1 said:


> I'm not sure if we do the Team Play, I'm only a freshman though, so we probably do.
> 
> As I've stated before, I've taken Algebra 1 (or Integrated Algebra, as it's called here) and Geometry, as (informally) Algebra 2. I've looked at it but didn't actually take it yet. Algebra 2 and Trig are mixed into a full-year course for us also.
> Wait, there are formal Probability courses? I never knew that, looks like my school doesn't offer those, probably have to take it through ArtofProblemSolving.
> ...



ooh an 8 is really good. I'm not a good test taker, so I always get panicky and nervous when I do the test and end up forgetting really simple equations or making stupid math errors. The probability course I'm taking right now is actually the "Introduction to Counting and Probability" from Art of Problem Solving, haha.
And yeah, my profile picture is really old haha, I'm a sophomore this year  I should update it so I actually look like a 16yo, since that picture is 1.5 years old lol (EDIT: Is this pic better? I'm the one on the left. It's from my most recent karate belt promotion test, the one that I broke my foot on)


----------



## brandbest1 (Feb 17, 2013)

Ickathu said:


> ooh an 8 is really good. I'm not a good test taker, so I always get panicky and nervous when I do the test and end up forgetting really simple equations or making stupid math errors. The probability course I'm taking right now is actually the "Introduction to Counting and Probability" from Art of Problem Solving, haha.
> And yeah, my profile picture is really old haha, I'm a sophomore this year  I should update it so I actually look like a 16yo, since that picture is 1.5 years old lol (EDIT: Is this pic better? I'm the one on the left. It's from my most recent karate belt promotion test, the one that I broke my foot on)



Yeah,I guess that picture works better lol.


----------



## ben1996123 (Feb 21, 2013)

ok so. what the hell. i just ζ(3) exac waleu.

also,




= 4.



Spoiler: pruf



ok so ln(2) = 1-1/2+1/3-1/4+1/5-blablabla, thats obvious
do e^boef sides: 2 = (e e^1/3 e^1/5 e^1/7)/(e^1/2 e^1/4 e^1/6) blablabla = infprod e^(1/(2n-1))/e^(1/(2n)) = infprod e^(1/(2n-1)-1/(2n)) = infprod e^(1/(4n^2-2n)) = infprod sqrt(e)^(1/(2n^2-n))
sqaar both sides (you can do this csch its obvious really): 4 = infprod e^(1/(2n^2-n))


----------



## Christopher Mowla (Feb 22, 2013)

ben1996123 said:


> ok so ln(2) = 1-1/2+1/3-1/4+1/5-blablabla, thats obvious


Well, I guess it's obvious to those who substitute 2 for x in the Maclaurin Series for ln(x), sure.



ben1996123 said:


> do e^boef sides: 2 = (e e^1/3 e^1/5 e^1/7)/(e^1/2 e^1/4 e^1/6) blablabla = infprod e^(1/(2n-1))/e^(1/(2n)) = infprod e^(1/(2n-1)-1/(2n)) = infprod e^(1/(4n^2-2n)) = infprod sqrt(e)^(1/(2n^2-n))


Okay, some basic algebra.



ben1996123 said:


> sqaar both sides (you can do this csch its obvious really)


Can you explain this more? And also, what do you mean by ζ(3)?

Also, for those who like the Ti-84 plus calculator, TI has recently made a new version and will release it in the spring of this year. The screen has more pixels, is in color, and displays math in pretty print similar to the Ti-89 or any other CAS. I personally won't buy one because looking at the graphing calculator comparison page, it has even less RAM than the Ti-84 plus silver edition and it's CPU wasn't improved (I don't care about ROM that much, so the 3.5 MB ROM doesn't excite me at all). Instead of needing four AAA batteries, it's rechargeable...


----------



## 5BLD (Feb 22, 2013)

*Calculator/Math Thread*

Zeta function is sigma k=1 to inf 1/k^x for Re(x)>1 and is analytically continued for the others
I dont think he'd found zeta 3 tho considering it's been unknown for a while.


----------



## ben1996123 (Feb 22, 2013)

5BLD said:


> Zeta function is sigma k=1 to inf 1/k^x for Re(x)>1 and is analytically continued for the others
> I dont think he'd found zeta 3 tho considering it's been unknown for a while.



yeah im lying HAAA LOL

yeah i know infprod e^stuf = 4 is easy to pruf i just thought it seems kind of cool

infprod sqrt(e)^(1/(2n^2-n)) = sqrt(e)*sqrt(e)^(1/6)*sqrt(e)^(1/15)*sqrt(e)^(1/28)*blablabla
sqaar it and distribute the powár through each term = e*e^(1/6)*e^(1/15)*blablabla = infprod e^(1/(2n^2-n))


----------



## brandbest1 (Feb 24, 2013)

Just ordered an Art of Problem Solving Volume 2 textbook to prepare for the AIME's because I qualified them.
I already knew I qualified for them before they announced the cutoff.


----------



## Smiles (Feb 24, 2013)

Compared to you guys, I suck at math.
anyway, I have a math question. Use image as a reference.

NOTE: the triangle in the image is actually a cone, and the circles are actually spheres.
dark blue = radius
light blue = water left in the cone, its volume is 2016 pi.

_A cone is filled with water. Two solid spheres are placed in the cone and water spills out. (The spheres are touching each other, each sphere touches the cone all of the way around, and the top of the top sphere is level with the top of the cone.) The larder sphere has radius twice that of the smaller sphere. If the volume of the water remaining in the cone is 2016π, what is the radius of the smaller sphere?_

So i solved the whole thing, but I might have done something wrong cause the multiple choice answers don't match.

Anyway, here's my solution process:



Spoiler



volume of cone - volume of sphere1 - volume of sphere 2 = 2016π
(1/3)πr^2h - (4/3)πr^3 - (4/3)πr^3
(h = height, r = 3 different radii) bear with the laziness

finding h of cone
triangle EAF ~ triangle DHE (both are right triangles along CF)
DH/EA = x/x = 1
∴ triangle EAF = triangle DHE
HE = 3x = AF
h = GB + BA + AF = 2x + 3x + 3x = *8x = h*

finding r of cone
r = CG
triangle CGF ~ triangle EAF
GF/AF = CG/EA
8x/3x = r/x
8x^2 = 3x(r)
*8x/3 = r*

subbing into old equation
(1/3)πr^2h - (4/3)πr^3 - (4/3)πr^3 = 2016π
(1/3)π(8x/3)^2(8x) - (4/3)π(2x)^3 - (4/3)πx^3 = 2016π

π(8x/3)^2(8x/3) - (4/3)π(2x)^3 - (4/3)πx^3 = 2016π

π(8x/3)^3 - π(4/3)((2x)^3 - x^3) = 2016π

π(512/27)x^3 - π(4/3)(8x^3 + x^3) = 2016π

π(512/27)x^3 - π(4/3)(9x^3) = 2016π

(512/27)x^3 - 12x^3 = 2016

512x^3 - 324x^3 = 54432

188x^3 = 54432

x^3 = 13608/47

x = (13608/47)^(1/3) or cube root of it

x ≈ 6.6






edit: i'm asking if there are any errors in my solution.
if you did the solution without looking at mine, did you get the same answer?


----------



## vcuber13 (Feb 24, 2013)

i got


Spoiler



6.952...
tried it again and got 5.122...


----------



## Ickathu (Feb 24, 2013)

I got


Spoiler



x = (13608/65)^1/3
x =~ 23.87/4.02
x =~ 5.94



I'll see if I can find an error in a solution, either mine or yours, then I'll scan and post my solution (I did it on actual paper and I don't feel like typing it up)

EDIT: I found an error in your solution


> subbing into old equation
> (1/3)πr^2h - (4/3)πr^3 - (4/3)πr^3 = 2016π
> (1/3)π(8x/3)^2(8x) - (4/3)π(2x)^3 - (4/3)πx^3 = 2016π
> 
> π(8x/3)^2(8x/3) - (4/3)π(2x)^3 - (4/3)πx^3 = 2016π



because (1/3)pi(8x/3)^2(8x) =/= pi(8x/3)^2(8x/3)
so I'll rearrange and stuffs to that equation to show that they aren't equal.
divide by (8x/3)^2 to get rid of that from both sides
(1/3)pi(8x) = pi(8x/3)
owait hold on... that's actually correct... I'll be back in a minute with an update.

mkay so I'm gonna type up my solution now and see if I can catch in error that way. I'll through in comments/explanations with {swirly tags}


Spoiler



cone - sphereB - sphereA = 2016pi
{thought process}
(1/3)(pi(r1)^2)(h) - (4/3)(pi)(r2)^3 - (4/3)(pi)(r3)^3 = 2016 pi
{generalized form}
((pi)((gc)^2)(gf))/3 - ((4)(pi)(8x^3))/3 - ((4)(pi)(x^3))/3 = 2016pi
{substitute in sides for lengths and rearrange with common denominator}
((gc^2)(gf)(pi) - (4pi(8x^3)) - (4pix^3))/3 = 2016pi
{subtract fractions}
(gc^2)(gf)(pi) - ((32)(pi)(x^3)) - ((4)(pi)(x^3)) = 6048pi
{multiply by 3}
(gc^2)(gf)(pi) - ((28)(pi)(x^3)) = 6048pi

Okay so there's an error in mine. Let me fix that and see what I get now.



Continuing where I last left off (before the error):


Spoiler



(gc^2)(gf)(pi) - ((32)(pi)(x^3)) - ((4)(pi)(x^3)) = 6048pi
(gc^2)(gf)(pi) - (((32)(pi)(x^3)) + ((4)(pi)(x^3))) = 6048pi
(gc^2)(gf)(pi) - (36)(pi)(x^3) = 6048pi
(gc^2)(gf) - (36)(x^3) = 6048
{divide by pi}

Now I can use this equation later once I find gc and gf, so I don't have to deal with the nasty stuff like you did.

*FIND gf*
gf = 2x + 2x + x + af = 5x + af
edh ~ fea, therefore:
he/af = x/x
he=af
edh =~ fea
he = 2x+x = 3x
af = 3x
gf = 5x+af
*gf = 8x*
{same method as you used}

*FIND gc*
gcf ~ aef
gc/ae = gf/af
gc/x = 8x/3x
*gc = 8x/3*

Okay, so now I can plug in my values for gc and gf into the equation I got a minute ago
(gc^2)(gf) - (36)(x^3) = 6048
((8x/3)^2)(8x) - 36x^3 = 6048
((64x^2)/9)(8x) - 36x^3 = 6048
(64x^2)(8x) - 324x^3 = 54 432
512x^3 - 324x^3 = 54 432
188x^3 = 54 432
x^3 = (54 432)/(188)
*x =~ 6.62*



that's the answer you got, isn't it? It should be correct. As far as I can tell, my solution is correct, and so is yours. Anyone else wanna post a solution?


----------



## Ickathu (Feb 25, 2013)

So I was doing some of the old mandelbrot tests cuz I'm bored and I've got my final indiv round of the 2012-2013 season tomorrow:
Puzzle theory problem

The goal of this puzzle is to transform the left-hand position into the right hand position. On each move you may rotate any 2x2 subsquare (such as the set of four shaded squares) by 90, 180, or 270 degrees. What is the fewest number of moves needed?

FFF......FCT
CCC.->.FCT
TTT.....FCT

I haven't actually attempted it yet, but it seemed cool and like some people here might find it fun.


----------



## ben1996123 (Feb 25, 2013)

Ickathu said:


> So I was doing some of the old mandelbrot tests cuz I'm bored and I've got my final indiv round of the 2012-2013 season tomorrow:
> Puzzle theory problem
> 
> The goal of this puzzle is to transform the left-hand position into the right hand position. On each move you may rotate any 2x2 subsquare (such as the set of four shaded squares) by 90, 180, or 270 degrees. What is the fewest number of moves needed?
> ...



I read that and saw this straight away:



Spoiler



FFF.....FCC.....FCC....FCC.....FCT
CCC-->CFF-->CFT-->FTT-->FCT
TTT....TTT.....TFT....FCT.....FCT


----------



## Ickathu (Feb 25, 2013)

ben1996123 said:


> I read that and saw this straight away:
> 
> 
> 
> ...



Nice. I got 1 more than that on my first attempt (which I thought was decent since that's what the guy who created the problem got on his first try). After I saw what the correct number of moves was I saw it almost immediately.


----------



## brandbest1 (Feb 26, 2013)

Ickathu said:


> Nice. I got 1 more than that on my first attempt (which I thought was decent since that's what the guy who created the problem got on his first try). After I saw what the correct number of moves was I saw it almost immediately.



OH YEAH i forgot my mandelbrot was tomorrow also lol.
For some reason, I do better on the Mandelbrot relative to most people in my school than on other much easier contests. Same happened on the AMC.


----------



## vcuber13 (Mar 3, 2013)

when a function is divided by x-1 the remainder is 2, when the same function is divided by x+2 the remainder is -19, what is the remainder when the function is divided by (x-1)(x+2)


----------



## kunparekh18 (Mar 3, 2013)

Not sure if to post this, but co-ordinate geometry is my worst subject... Anyone else feel this hard?


----------



## ben1996123 (Mar 3, 2013)

kunparekh18 said:


> Not sure if to post this, but co-ordinate geometry is my worst subject... Anyone else feel this hard?



vectors are hardest for me (well, mechanics actually but not puremaf so dunqaar) 



vcuber13 said:


> when a function is divided by x-1 the remainder is 2, when the same function is divided by x+2 the remainder is -19, what is the remainder when the function is divided by (x-1)(x+2)





Spoiler



7/2


----------



## vcuber13 (Mar 3, 2013)

the answer is something like:


Spoiler



7x-5 or something


----------



## ben1996123 (Mar 3, 2013)

vcuber13 said:


> the answer is something like:
> 
> 
> Spoiler
> ...



thats silly.


----------



## brandbest1 (Mar 4, 2013)

vcuber13 said:


> the answer is something like:
> 
> 
> Spoiler
> ...





Spoiler



7x-5 is right. use remainder theorem.


----------



## vcuber13 (Mar 5, 2013)

Spoiler



show me how then


----------



## ben1996123 (Mar 5, 2013)

vcuber13 said:


> Spoiler
> 
> 
> 
> show me how then



oh ok, i get it. it's easy now.



Spoiler



\( f(x)=x^2+8x-7 \) csch obvious really
\( \frac{x^2+8x-7}{x^2+x-2}= \) stuff remænder 7x-5


----------



## vcuber13 (Mar 5, 2013)

how do you find f(x)?


----------



## ben1996123 (Mar 5, 2013)

vcuber13 said:


> how do you find f(x)?



remainder theorem: f(-2) = -19 and f(1) = 2

assume its a quadratic because it probably is
f(1) = a(x-1)^2+b(x-1)+2
when x = -2, 9a-3b+2 = -19, 9a-3b = -21, 3a-b = -7
let a = 1 for simplicity
3-b = -7, b = 10

f(x) = (x-1)^2+10(x-1)+2 = x^2+8x-7


----------



## Ickathu (Mar 5, 2013)

Who wants to play 24?
http://www.speedsolving.com/forum/showthread.php?40791-Twenty-Four-Marathon


----------



## brandbest1 (Mar 6, 2013)

Someone explain to me the purpose of the dot product and cross product?


----------



## vcuber13 (Mar 6, 2013)

a cross b gives the vector perpendicular to a and b (right hand rule), with magnitude equal to the area of the parallelogram formed by a and b
a dot b is equal to magnitude of a times the magnitude of b times cos theta


----------



## brandbest1 (Mar 6, 2013)

vcuber13 said:


> a cross b gives the vector perpendicular to a and b (right hand rule), with magnitude equal to the area of the parallelogram formed by a and b
> a dot b is equal to magnitude of a times the magnitude of b times cos theta



No, I meant what the purpose of these are. I saw that it it used somewhere in the law of cosines or something like that.

And someone solve this question:
Find the ordered triple (x,y,z) of positive integers with x<y<z that satisfies xyz+xy+yz+xz+x+y+z=384.


----------



## vcuber13 (Mar 7, 2013)

if vector c is vector a minus vector b then: (where vectors a, b, and c are the sides of a triangle)
\( 
c \cdot c = (a-b) \cdot (a-b)
\)
\( 
= a \cdot a - a \cdot b - b \cdot a + b \cdot b
\)
\( 
=a^2 - 2 a \cdot b + b^2
\)
\( 
c^2 = a^2 + b^2 - 2ab Cos \theta
\)


----------



## ben1996123 (Mar 7, 2013)

brandbest1 said:


> And someone solve this question:
> Find the ordered triple (x,y,z) of positive integers with x<y<z that satisfies xyz+xy+yz+xz+x+y+z=384.



4,6,10

also tudae i got mein results for c3 and fp1. 93/100, 100/100. in c3 there was a stupid pruf question so i prollaby got that "wrong". pruf 3^x never ends in 5 for possitif integer x. apparently noticing the pattern in the last digit: 3,9,7,1,3,9,7,1,blablabla is a rigorous enuf pruf but prufing the fundamental theorem of arithmetic and saying that if 3^x never ends in 5 then 3^x (mod 5) is nevar 0, wich it isnt because 3^x = 3*3*3*3*blablabla and 3 is prime and 3 is not 5 is not a rigorous enuf pruf.


----------



## ben1996123 (Mar 10, 2013)

ok so, i have disproven everything

[15:16:54] Dashie: ok so
[15:17:00] Dashie: sgn(0) is 0 rye ?
[15:17:19] 5BLD: yes
[15:17:28] Dashie: and sgn(x) = e^iarg(x)
[15:17:50] Dashie: so sgn(0) = e^undefined
[15:17:53] Dashie: LOL !
[15:18:06] Dashie: e^iundefined*
[15:18:22] Dashie: there four iundefined = ln(0) so undefined = -iln(0)
[15:18:36] Dashie: = ∞i
[15:18:39] Dashie: wol
[15:18:45] 5BLD: nise reasoning
[15:18:51] 5BLD: cuz inf=inf in all cases rye
[15:18:55] Dashie: shore LOL !
[15:19:01] Dashie: 1/0 = ∞i
[15:19:07] Dashie: diwideing by inf
[15:19:11] Dashie: 1/(0∞) = i
[15:19:16] Dashie: 1/undefined = i
[15:19:20] Dashie: undefined = -i
[15:19:36] Dashie: undefined = -i = -iln(0) = ∞i
[15:19:42] Dashie: therefore ln(0) = 1 and ∞ = -1
[15:19:47] Dashie: therefore e = 0
[15:19:48] Dashie: LOL !


----------



## 5BLD (Mar 14, 2013)

First of all, prove theres always solutions to kx²+1=y² where k,x,y ∈ *N* for all k

then describe the growth of the smallest x solution to
(2ⁿ-1)x²+1=y²
where n,x,y ∈ *N*
as n increases


----------



## ben1996123 (Mar 14, 2013)

5BLD said:


> First of all, prove theres always solutions to kx²+1=y² where k,x,y ∈ *N* for all k
> 
> then describe the growth of the smallest x solution to
> (2ⁿ-1)x²+1=y²
> ...



noob y dnt u just make a progrm 2 chek all da numbers

oarso, hear is mein "pruf" of fermats last theorem


----------



## redbeat0222 (Mar 14, 2013)

Why you no join maff team?


----------



## 5BLD (Mar 14, 2013)

ben1996123 said:


> noob y dnt u just make a progrm 2 chek all da numbers



yeah, cuz we can check every natural number


----------



## ben1996123 (Mar 14, 2013)

redbeat0222 said:


> Why you no join maff team?



me? csch i got no maff team to joixn



5BLD said:


> yeah, cuz we can check every natural number



yes u can computer's r instante rye


----------



## 5BLD (Mar 14, 2013)

*Calculator/Math Thread*

just sorve my prahblem moron

Tis like saying cuz its tru for n<100 tis tru for all n.
i mean like look at this 'pruf' (related to my problem btw).

Conjecture: there are no numbers n where 991n^2+1 is a square number.

Pruf: You can test to like, quadrillions (iirc) and you wont find one

Atchiry theres quite a large answer as the smallest x which works.


----------



## vcuber13 (Mar 15, 2013)

nice variable consistency


----------



## Ickathu (Mar 17, 2013)

Proving that the product of the positive divisors of a perfect cube is a perfect cube. How's this proof?


Spoiler


----------



## vcuber13 (Mar 17, 2013)

or you could prove it like this

if you have a^3 its divisors are a and a^2, if a is factored and multiplied the factors will always have a degree of 3 and thus is a cube


----------



## kunparekh18 (Mar 17, 2013)

*Re: Calculator/Math Thread*



vcuber13 said:


> or you could prove it like this
> 
> if you have a^3 its divisors are a and a^2, if a is factored and multiplied the factors will always have a degree of 3 and thus is a cube



Yeah, this is way simpler

Sent from my A75 using Tapatalk 2


----------



## redbeat0222 (Mar 17, 2013)

2+2 equals 4. <_<
>_>
Q.Q


----------



## ben1996123 (Mar 17, 2013)

redbeat0222 said:


> 2+2 equals 4. <_<
> >_>
> Q.Q



pruf


----------



## ben1996123 (Mar 18, 2013)

oo this is koo, everyjuan knows that \( e^{i\frac{\tau}{2}}=-1 \), but apparencely \( (\frac{\tau}{2})^{ie}\approx-1 \) too


----------



## vcuber13 (Mar 18, 2013)

dont like pis eh?


----------



## CarlBrannen (Mar 18, 2013)

Looking for an excuse to try out the math mode, here's a little puzzle: reduce: \( i^i \)


----------



## 5BLD (Mar 18, 2013)

*Calculator/Math Thread*



CarlBrannen said:


> Looking for an excuse to try out the math mode, here's a little puzzle: reduce: \( i^i \)



e^ipi=-1
e^ipi/2=i
e^i(ipi/2)=i^i
=e^-pi/2


----------



## ben1996123 (Mar 22, 2013)

some of these seem pretty interesting



Spoiler






Spoiler: Parabolic Rectangle









AB = 2x, BC = 4-x²
x = AB/2
BC = 4-(AB)²/4

ABCD is a square when 2x = 4-x² and x>0
x² + 2x - 4 = 0
x = √5-1
side length is 2x = 2√5-2





Spoiler: Circles and Squares








need to find the red area

x = 1/2 because its the radius of the circle and the diameter is 1
y² + y² = x²
2y² = 1/4
\( y=\frac{1}{2\sqrt{2}} \)

\( 2y=\frac{1}{\sqrt{2}} \)

area of the smaller square = (2y)² = 1/2
red area = area of circle - area of square = \( \pi x^2-1/4=\frac{\pi-1}{4} \)





Spoiler: Weird Operations



\( a(+)b=\frac{1}{\frac{1}{a}+\frac{1}{b}}=\frac{ab}{a+b} \)
\( a(-)b=\frac{1}{\frac{1}{a}-\frac{1}{b}}=\frac{ab}{b-a} \)



Spoiler: (1)



\( a(-)b = \frac{b}{a} \)

\( \frac{ab}{b-a}=\frac{b}{a} \)

\( a^2b=b^2-ab \)

\( a^2b+ab-b^2=0 \)

\( a^2+a-b=0 \)

\( b=a^2+a \)





Spoiler: (2)



\( a(+)b=2a(-)b \)

\( \frac{ab}{a+b}=\frac{2ab}{b-2a} \)

\( ab(b-2a)=2ab(a+b) \)

\( ab^2-2a^2b=2a^2b+2ab^2 \)

\( b-2a=2a+2b \)

\( b=-4a \)





Spoiler: (3)



\( a(-)b=b \)

\( \frac{ab}{b-a}=b \)

\( ab=b^2-ab \)

\( 2ab=b^2 \)

\( b=2a \)








Spoiler: Tangents



Only 1 solution exists when y = x + c is a tangent to \( y=2^x \) and \( \frac{d}{dx}2^x=1 \)

\( 2^xln(2)=1 \)

\( 2^x=\frac{1}{ln(2)} \)

\( xln(2)=ln(\frac{1}{ln(2)})=-ln(ln(2)) \)

\( x=\frac{-ln(ln(2))}{ln(2)} \)

The tangent has gradient 1 and goes through \( (\frac{-ln(ln(2))}{ln(2)},\frac{1}{ln(2)}) \)

\( y-\frac{1}{ln(2)}=x-\frac{-ln(ln(2))}{ln(2)} \)

\( y=x+\frac{1+ln(ln(2))}{ln(2)} \)

\( c=\frac{1+ln(ln(2))}{ln(2)} \)






dunfeeerye doing anymore now


----------



## ben1996123 (Mar 25, 2013)

okso what is i^j and i^^i?

ithink i^j = -k but it seems wrong because it seems like it should be transcal/transcendal/transcendental/transcendentenal/transcendentenendal


----------



## Ickathu (Mar 25, 2013)

what is j and k and stuff? I've heard of them, but I can't find what they are exactly...


----------



## Noahaha (Mar 25, 2013)

*Calculator/Math Thread*



Ickathu said:


> what is j and k and stuff? I've heard of them, but I can't find what they are exactly...



i = (1,0,0)
j = (0,1,0)
k = (0,0,1)


----------



## ben1996123 (Mar 25, 2013)

Noahaha said:


> i = (1,0,0)
> j = (0,1,0)
> k = (0,0,1)



stuf

z=a+bi+cj+dk where a,b,c,d are real numbers

i^2 = j^2 = k^2 = -1

i*j = k
i*k = -j
j*i = -k
j*k = i
k*i = j
k*j = -i

in the set of quaternions, there are iniffity sqruts of -1 which is cool


----------



## Ickathu (Mar 26, 2013)

cool stuff...

Is it possible for a number in one base to be written the same way in another base? I'm thinking that it's not possible for them to ever be the same (except with single digit numbers, ofc).
Here's my "proof" for 2 digit numbers:

Call the 2 digit number in base m BA with B=/=0
BA_m can be rewritten in base 10 as:
B*m+A
Assume that BA_m = BA_n
BA_n can be rewritten in base 10 as B*n+A
BA_m = BA_n --> B*m+A=B*n+A
using algebra:
B*m=B*n
m=n
contradiction, so BA_m =/= BA_n, if m=/=n and B =/= 0

I started working on a similar proof for 3 digit numbers, but I got stuck when I got to this (A is the base^0 digit, B is base^1 digit, C is base^2, etc...):
B+C(n+m)+D(n^2+nm+m^2)=0

I could explain how I got to that, but I don't think it's really going to work.


----------



## CarlBrannen (Mar 27, 2013)

Zero is always written as "0" no matter what base, and one is always written "1". Other than that, no solutions.


----------



## 5BLD (Mar 27, 2013)

*Calculator/Math Thread*

He said except for single digit numbers AND wanted a pruf


----------



## ben1996123 (Mar 28, 2013)

okso its tru because the only real solution to a^x = b^x where x is real and a!=b is x=0 => a^0=b^0 => 1=1 => sniggledigit


----------



## Ickathu (Mar 28, 2013)

Cool, also I asked some other people about this and they said to use that if m>n, then m^k>n^k for k>0, so therefore a*m^k =/= a*n^k


----------



## TheNextFeliks (Mar 28, 2013)

sgn(0)=:fp


----------



## ben1996123 (Mar 28, 2013)

TheNextFeliks said:


> sgn(0)=:fp



sgn(0) = 0 moron

also am pretty sure i^j = -k now. i just need to prove that ln(a^b)=bln(a) for some quaternionstuf

okso ln(x) = (x-1) - (x-1)^2/2 + (x-1)^3/3 - dotdotdot when -2<x<0 fugginel duncare ill assume its trú for quaternions too if tis tru for x = 1+i
ln(i+1) = ln(2)/2 + ipi/4
ln(i+1) = i - i^2/2 + i^3/3 - i^4/4 + i^5/5 - i^6/6 + i^7/7 - i^8/8 + ... = i + 1/2 - i/3 - 1/4 + i/5 + 1/6 - i/7 - 1/8 + ...
= (1/2 - 1/4 + 1/6 - 1/8 + ...) + i(1 - 1/3 + 1/5 - 1/7 + ...)
= 1/2(1 - 1/2 + 1/3 - 1/4 + ...) + i(1 - 1/3 + 1/5 - 1/7 + ...)
= 1/2 ln(2) + ipi/4
= tru, therefore ln(x+1) qonverges for all quaternions if |q|<1 or |q|=1 because I gave 1 example rye

ln(x+1)-ln(x) = ln(1/x + 1) rye so ln(1+i^j)-ln(1+i^-j) = ln(i^j)

ill assume moar stuff that maeby isnt true but whoqaers because maff is about making stuff up rye

ln(1+i^j) = i^j - i^2j/2 + i^3j/3 - i^4j/4 + i^5j/5 - ... = i^j + 1^j /2 - i^j/3 - 1^j /4 + i^j/5 - ... = i^j(1-1/3+1/5-...) + 1^j(1/2-1/4+1/6-...)
lettuce assume that 1^j = 1
ln(1+i^j) = i^j pi/4 + ln(2)/2
okso lettuce assume that ln(1+q) = qpi/4 + ln(2)/2 because I gave 2 examples rye

ln(1+i^-j) = i^-j pi/4 + ln(2)/2
so ln(i^j) = ln(1+i^j)-ln(1+i^-j) = (i^j pi/4 + ln(2)/2) - (i^-j pi/4 + ln(2)/2) = pi/4 (i^j - i^-j)
i^j - i^-j = i^-j(i^2j-1) = i^-j(-1^j - 1)
-1^j = e^ipij = e^kpi = -1
i^-j(-2) = -2i^-j = 2i^j maeby
ln(i^j)= pi/4 (2i^j) = i^j pi/2
ln(i) = i pi/2
jln(i) = jipi/2 fugginel thats not i^j pi/2 it was supposed to work perfectly stupid maff
okso i^j = e^(i^j pi/2) = fugginel its still got i^j inside of it

fugginel why dose stuff always work for euler but not for me


----------



## mark49152 (Mar 29, 2013)

ben1996123 said:


> fugginel why dose stuff always work for euler but not for me


That made me LOL


----------



## 5BLD (Mar 29, 2013)

Right guys so ive been trying to work out the principal value of (a^b)^c
but first. what's the principal value of ln(a^b)?

We define the principal natural logs to have an imaginary part between -pi and pi but only by adding multiples of 2pi
Re(ln(a^b))+Im(ln(a^b)) mod 2pi gives you an imaginary part between -2pi and 2pi and we need to somehow add either -pi or pi to get it right

So this is what I'm left with:
b*ln(a)+2ipi(floor(b*ln(a)/(2pi))) (+/-pi???)

hmmmh
Edit: I'm being siwwy, i cant just add or take away pi randomly

Needs to "line up" with taking away multiples of 2pi


----------



## kunparekh18 (Mar 31, 2013)

5BLD said:


> Right guys so ive been trying to work out the principal value of (a^b)^c
> but first. what's the principal value of ln(a^b)?
> 
> We define the principal natural logs to have an imaginary part between -pi and pi but only by adding multiples of 2pi
> ...



Do they really teach you all of that in school? :O What grade/standard are you in?


----------



## 5BLD (Mar 31, 2013)

*Calculator/Math Thread*



kunparekh18 said:


> Do they really teach you all of that in school? :O What grade/standard are you in?



Lol youfink I'd talk about school maths here
Im 15 but i know a bit higher maths just for fun. I haven't worked it out yet, its silly.

3pi/2 rad =>-pi/2
-3pi/2 rad =>pi/2

Hmmh gah its so obvious but cant work it out
Log(a^b)=> b log a - 2ipi floor (1/2 - Im(b log a)/2pi) seems to do the trick but hmmmh


----------



## kunparekh18 (Mar 31, 2013)

I'm 15 too, but yeah, I can't understand some of the higher maths. Why don't we have a question-answer sort of thing. My first question:

If the sum of m terms of an arithmetic progression is the same as the sum of it's n terms show that the (m+n)th term (of the AP) is the negative of the first term.


----------



## 5BLD (Mar 31, 2013)

kunparekh18 said:


> I'm 15 too, but yeah, I can't understand some of the higher maths. Why don't we have a question-answer sort of thing. My first question:
> 
> If the sum of m terms of an arithmetic progression is the same as the sum of it's n terms show that the (m+n)th term (of the AP) is the negative of the first term.


I dont quite understand the question, gimme an example.



Spoiler: partial working



Let the formula for the nth term of the progression= kx+c
sum of all n terms= 1/2 n (2 c+k n+k)
terms from a to a+m= 1/2 (m+1) (k (2 a+m)+2 c)

set them equal to each other and simplify:


----------



## kunparekh18 (Mar 31, 2013)

5BLD said:


> I dont quite understand the question, gimme an example.
> 
> 
> 
> ...



Okay, let the AP be 2,4,6,8,10...

Let's suppose m is 2 and n is also 2

then sum of m terms of the AP becomes 6, and sum of n terms is also 6

We have to show that the sum of (m+n) terms (4 terms), which in this case is 20 should be equal to -2 in the AP (negative of the first term).

Ofc 20 != -2, but I think this should be good for an example.


----------



## ben1996123 (Mar 31, 2013)

okso thats a terriburr example because its obvious that it can only be tru if n != m

serii: a+(n-1)d
sum of serii: n/2 (2a+(n-1)d)
lettuce say that n/2 (2a+(n-1)d) = m/2 (2a+(m-1)d) where n != m
you'r statement is tru if the n+mth term is -a: a+(n+m-1)d = -a
n/2 (2a+(n-1)d) = m/2 (2a+(m-1)d)
an + dn²/2 - dn/2 = am + dm²/2 - dm/2
2an + dn² - dn = 2am + dm² - dm
2a(n-m) + d(n²-m²) - d(n-m) = 0
d(n²-m²) + (2a-d)(n-m) = 0
d(n+m)(n-m) + (2a-d)(n-m) = 0
(n-m) != 0 because n != m, so you can diwide by it
d(n+m) + 2a-d = 0
d(n+m-1) + 2a = 0
a + (n+m-1)d = -a
huzzah


----------



## 5BLD (Mar 31, 2013)

I did exactry dat D:
look at mein exampru when i misunderstood thy kweshun damit, tis exactry thy saexm

Owel isuck. Here's my question:

solve y+y'+y''+y'''+...+y^(n)=0

ben dont sorve it cosech i know you know


----------



## ben1996123 (Mar 31, 2013)

5BLD said:


> I did exactry dat D:
> look at mein exampru when i misunderstood thy kweshun damit, tis exactry thy saexm
> 
> Owel isuck. Here's my question:
> ...





Spoiler: anser



characteristic equation: 1+r+r^2+r^3+...+r^n = 0
(r^(n+1)-1)/(r-1)=0
r^(n+1)=1, r != 1
r = e^((2iπk)/(n+1)), k = 1,2,3...n
y = ae^(e^(2iπ/(n+1)) x)+be^(e^(4iπ/(n+1)) x)+ce^(e^(6iπ/(n+1)) x)+...

\( y=\sum_{k=1}^n c_k e^{e^{\frac{2i\pi k}{n+1}} x} \) where c_1,c_2...c_n are constants


----------



## 5BLD (Mar 31, 2013)

ben1996123 said:


> Spoiler: anser
> 
> 
> 
> ...



Correct but i did say, ben don't answer it cuz we've torked about this problem before anyway


----------



## ben1996123 (Mar 31, 2013)

5BLD said:


> Correct but i did say, ben don't answer it cuz we've torked about this problem before anyway



ino but i was on dispaeg rike 1meenut after you posted thine post wicht was befour thou editized it moron


----------



## Lchu613 (Apr 6, 2013)




----------



## ben1996123 (Apr 6, 2013)

Lchu613 said:


>



what are you ing at?


----------



## Ickathu (Apr 7, 2013)

There are exactly 4 positive integers such that (n+1)^2/(n+23) is a positive integer. Compute the largest such n.

I figured out a bunch of stuff about the possible answers, but wasn't able to solve it until I used trial and error (using my limitations that I had already discovered)

What are your solutions?


----------



## ben1996123 (Apr 7, 2013)

Ickathu said:


> There are exactly 4 positive integers such that (n+1)^2/(n+23) is a positive integer. Compute the largest such n.
> 
> I figured out a bunch of stuff about the possible answers, but wasn't able to solve it until I used trial and error (using my limitations that I had already discovered)
> 
> What are your solutions?





Spoiler



21, 98, 219, 461


----------



## 5BLD (Apr 7, 2013)

*Calculator/Math Thread*

Dunnit

[spoiler: solution]
Also lets try polynomial division
n -21
n+23|n^2+2n+1
n^2+23n
-21n+1
-21n-483
484

So the division simplifies to (n-21)+484/(n+23)
The factors of 484 are 1,2,4,11,22,44,121,242,484
so the only suitable ns will be 21,98,219 and 461

Yae i did it
[/spoiler]


----------



## Ickathu (Apr 7, 2013)

Yeah, I feel really stupid now.


Spoiler



That was the first thing I tried, but when I got the remainder of 484, I didn't make the connection that that meant that n-23 was a factor of 484. I could have solved it so much faster :fp


----------



## ben1996123 (Apr 7, 2013)

i just made an prouxgræm to do it four me

arek: your avatar is qt but you should put mour of dashíe inside of it


----------



## TopCuber (Apr 7, 2013)

No way, for me maths is way eaaaaaaaasy


----------



## A Leman (Apr 7, 2013)

Does anyone know an alternate way of solving ʃ y^2√(4+2y^2) dy without transforming it into ʃsec^3(θ)tan^2(θ) dθ ? 
I have tried switching coordinate systems, but I am not really knowledgeable about that stuff.


----------



## brandbest1 (Apr 8, 2013)

lim_(x->0) (8 (1/2+x)^8-1/32)/x = 1/2

How to evaluate without expanding the binomial?


----------



## TheNextFeliks (Apr 9, 2013)

Does anyone know how to change the base on a calculator if it is possible?


----------



## TheNextFeliks (Apr 9, 2013)

Accomplishment: taught someone to simplify square roots over text. Skill


----------



## A Leman (Apr 9, 2013)

brandbest1 said:


> lim_(x->0) (8 (1/2+x)^8-1/32)/x = 1/2
> 
> How to evaluate without expanding the binomial?



I don't know if you know l'hospital's rule yet, but that makes it very easy.you take the derivative of the numerator and the denominator and then evaluate the new limit. 
Lim_(x->0)(64(1/2+x)^7)=64/128=1/2 



TheNextFeliks said:


> Does anyone know how to change the base on a calculator if it is possible?



It depends on the calculator. Almost all scientific and graphing calculators offer the option. My ti-89 has it at mode->base->[Dec, Hex, Bin]. I have been able to use Ti-basic to work with other bases. Things are at different places on different calculators. Google the model and you should be able to get a user's manual.

Edit: Btw, I managed to come up with another way of solving the Integral I asked about before by converting the expresion into a series and working with it like that. It is cool that there are so many different ways to approach problems.


----------



## TheNextFeliks (Apr 9, 2013)

Ok thanks.


----------



## brandbest1 (Apr 9, 2013)

@A Leman yeah I just learned l'hopitals rule just recently (as well as maclaurin and Taylor series).

EDIT: Mathematica... I tried the free trial just now... 4 GB lol.


----------



## CarlBrannen (Apr 10, 2013)

Well I'm starting to work on my thesis. It's going to be in gravitation. The calculations are messy but easy so I'm using the computer algebra software "MAXIMA".

Some of you might find it handy. It does some of the things Mathematica does but has the advantage of being free:
http://maxima.sourceforge.net/


----------



## CarlBrannen (Apr 13, 2013)

Cmowla, last time I was in college I got a free or cheap version of mathematica. But I'd rather use the free product.


----------



## CarlBrannen (Apr 14, 2013)

At one time I had high hopes for Mathematica and other computer algebra systems. Let me pose here a problem that I've not seen one of these systems solve, but which is fairly easy for a human with a little time. This is a generalization of quadratic equations, that is, instead of one quadratic equation in one unknown you begin with several quadratic equations in several unknowns. Here's the version with 6 unknowns. (By the way, this has applications to elementary particle theory.):

There are six complex numbers, I, J, K, R, G, and B and they satisfy the following six equations:

I = I*I + J*K + K*J + R*R + G*G + B*B,
J = I*J + J*I + K*K +R*G + G*B + B*R,
K = I*K + J*J + K*I + R*B + G*R + B*G,
R = I*R + J*G + K*B + R*I + G*K + B*J,
G = I*G + J*B + K*R + R*J + G*I + B*K,
B = I*B + J*R + K*G + R*K + G*J + B*I.

Two easy solutions are (I,J,K,R,G,B) = (0,0,0,0,0,0) and (1,0,0,0,0,0).

Mathematical note: 
If you look at the quadratic terms, all of the 36 possible ways of multiplying one of {I,J,K,R,G,B} by one of the same set show up. Which element things end up with follows the multiplication rules of a finite group, that is, the group of permutations on 3 elements. Then "I" is the identity permutation, "J" and "K" are the permutations that rotate all three elements and "R", "G" and "B" are the three remaining permutations that swap two elements and leave the remaining one unchanged.

The relationship to quantum field theory is that this is a calculation in "Hopf algebra" and from the physics point of view what's being done here is a search for the propagators of the (finite) field theory. That is, you're solving the equation P*P = P for P an element of the Hopf algebra.

The math guys call this multiplication (i.e. the P*P = P) the "group algebra over the complex numbers of the finite group G", where in this case G is the set of permutations on three elements. This is defined in Jacobson's book "Basic Algebra I" in section 7.1 "Definition and Examples of Associative Algebras". In my copy (copyright 1974), it's on page 388.

So the math theory is somewhat involved, but the actual calculation is straight quadratic equations. My experience is that the computer algrebra systems can't handle it. Maybe they've improved since the last time I tried it.


----------



## CarlBrannen (Apr 14, 2013)

At one time I had high hopes for Mathematica and other computer algebra systems. Let me pose here a problem that I've not seen one of these systems solve, but which is fairly easy for a human with a little time. This is a generalization of quadratic equations, that is, instead of one quadratic equation in one unknown you begin with several quadratic equations in several unknowns. Here's the version with 6 unknowns. (By the way, this has applications to elementary particle theory.):

There are six complex numbers, I, J, K, R, G, and B and they satisfy the following six equations:

I = I*I + J*K + K*J + R*R + G*G + B*B,
J = I*J + J*I + K*K +R*G + G*B + B*R,
K = I*K + J*J + K*I + R*B + G*R + B*G,
R = I*R + J*G + K*B + R*I + G*K + B*J,
G = I*G + J*B + K*R + R*J + G*I + B*K,
B = I*B + J*R + K*G + R*K + G*J + B*I.

Two easy solutions are (I,J,K,R,G,B) = (0,0,0,0,0,0) and (1,0,0,0,0,0).

Mathematical note: 
If you look at the quadratic terms, all of the 36 possible ways of multiplying one of {I,J,K,R,G,B} by one of the same set show up. Which element things end up with follows the multiplication rules of a finite group, that is, the group of permutations on 3 elements. Then "I" is the identity permutation, "J" and "K" are the permutations that rotate all three elements and "R", "G" and "B" are the three remaining permutations that swap two elements and leave the remaining one unchanged.

The relationship to quantum field theory is that this is a calculation in "Hopf algebra" and from the physics point of view what's being done here is a search for the propagators of the (finite) field theory. That is, you're solving the equation P*P = P for P an element of the Hopf algebra.

The math guys call this multiplication (i.e. the P*P = P) the "group algebra over the complex numbers of the finite group G", where in this case G is the set of permutations on three elements. This is defined in Jacobson's book "Basic Algebra I" in section 7.1 "Definition and Examples of Associative Algebras". In my copy (copyright 1974), it's on page 388.

So the math theory is somewhat involved, but the actual calculation is straight quadratic equations. My experience is that the computer algrebra systems can't handle it. Maybe they've improved since the last time I tried it. If Mathematica can solve this now, I'd be very motivated to get it. I'm pretty sure that MAXIMA hasn't improved to the point where it can solve this.


----------



## vcuber13 (Apr 20, 2013)

Solve for real values of x.

\( Log_2 (2^{x-1} + 3^{x+1}) = 2x - Log_2 (3^x)
\)


----------



## ben1996123 (Apr 20, 2013)

vcuber13 said:


> Solve for real values of x.
> 
> \( log_2(2^{x-1}+3^{x+1})=2x-log_2(3^x)
> \)



wulfram says its not possible symbolically


----------



## 5BLD (Apr 20, 2013)

ben1996123 said:


> wulfram says its not possible symbolically


It is... there's an answer. I know it but it requires fudging so im still trying to solve it properly


Spoiler: answer



x = -(log(2))/(log(3/2)) = (log(2))/(log(2)-log(3))


----------



## vcuber13 (Apr 20, 2013)

ben1996123 said:


> wulfram says its not possible symbolically



wolfram says there is an exact elementary answer


----------



## 5BLD (Apr 20, 2013)

yay


Spoiler



(log(2^(x-1)+3^(x+1)+(log(3^x))))/(log(2))= 2 x
log(3^x (2^(x-1)+3^(x+1))) = 2 x log(2)
3^x (2^(x-1)+3^(x+1)) = 4^x
and then it gets too long to type out...


----------



## Ross The Boss (Apr 20, 2013)

this thread makes me feel like such an *****. lol

edit: seriously, i d i o t is censored? wow.


----------



## ben1996123 (Apr 20, 2013)

Ross The Boss said:


> this thread makes me feel like such an *****. lol
> 
> edit: seriously, i d i o t is censored? wow.



ino lol tis funee

ïdiot

hear's my question for somepony two solve

pruf that \( \int_{-\infty}^{\infty} e^{\frac{-x^2}{2}}dx=\sqrt{2\pi} \)


----------



## TheNextFeliks (Apr 20, 2013)

Lol. I have proof:
Given circle with points (-1,0) and (1,0)
Prove that equation of circle is x^2-2yk+y^2=1 with center (0,k)
I know k must be 0 but I can't figure out how to prove it.


----------



## vcuber13 (Apr 20, 2013)

k need not be 0
circles have equations in the form (x-a)^2 + (y-b)^2 = r^2, with centre (a,b) and raduis r
x^2+(y-k)^2=r^2
r^2=k^2+1
x^2+y^2-2yk+k^2=k^2+1
x^2-2yk+y^2=1


i dont know if youll like this ben:


Spoiler



d/dx erf(x)=2*Pi^(-0.5)*e^(-x^2)
d/dx erf(2^(-0.5)*x)=(2/Pi)^(0.5)*e^(-0.5*x^2)
erf(2^(-0.5)*t)=(2/Pi)^(0.5)* integral (0,t) [e^(-0.5*x^2)]dx
2*sqrt(Pi/2)* erf(2^(-0.5)*t)=2* integral (0,t) [e^(-0.5*x^2)]dx
sqrt(2*Pi)* erf(inf)=2* integral (0,inf) [e^(-0.5*x^2)]dx
sqrt(2*Pi)=integral (-inf,inf) [e^(-0.5*x^2)]dx


----------



## A Leman (Apr 21, 2013)

ben1996123 said:


> hear's my question for somepony two solve
> 
> pruf that \( \int_{-\infty}^{\infty} e^{\frac{-x^2}{2}}dx=\sqrt{2\pi} \)



I am too lazy to try to type a complete proof on SS because mine is a bit long so I will skip obvious steps. Anyway, the easiest way to solve some problems it to think of a similar problem in an extra demension. In this case, z=e^(-x^2-y^2). If you find the volume under that surface at the verticies (±b,±b). it is 
int([-b,b] e^(-x^2)dx)*int([-b,b] e^(-y^2)dy)=4*(int([0,b] e^(-x^2) dx))^2 
V over the whole xy plane is V=lim(b->∞) 4(int([0,b] e^(-x^2) dx)^2= 4(int([0,∞] e^(-x^2) dx)^2
this can also be found in polar coordinates as V=lim(a->∞) int[0,2pi]int[0,a] (e^(-r^2)*r dr*dθ)=lim(a->∞) pi*(1-e^(-a^2))=pi
so 4(int([0,∞] e^(-x^2) dx)^2=pi
int([0,∞] e^(-x^2) dx=sqrt(pi)/2
int([-∞,∞] e^(-x^2) dx=sqrt(pi)
now u substitute u=x/sqrt(2) so
\( \int_{-\infty}^{\infty} e^{\frac{-x^2}{2}}dx=\sqrt{2\pi} \)

btw, how did you type your integral on SS. I'm curious.


----------



## ben1996123 (Apr 21, 2013)

TheNextFeliks said:


> Lol. I have proof:
> Given circle with points (-1,0) and (1,0)
> Prove that equation of circle is x^2-2yk+y^2=1 with center (0,k)
> I know k must be 0 but I can't figure out how to prove it.





Spoiler



(-1,0) and (1,0) centre (0,k) => radius = 1

x² + y² - 2yk = 1
x² + (y-k)² - k² = 1
x² + (y-k)² = 1+k²

1+k² = 1 => k = 0





vcuber13 said:


> i dont know if youll like this ben:
> 
> 
> Spoiler
> ...



ew erf(x) dunrike it



A Leman said:


> I am too lazy to try to type a complete proof on SS because mine is a bit long so I will skip obvious steps. Anyway, the easiest way to solve some problems it to think of a similar problem in an extra demension. In this case, z=e^(-x^2-y^2). If you find the volume under that surface at the verticies (±b,±b). it is
> int([-b,b] e^(-x^2)dx)*int([-b,b] e^(-y^2)dy)=4*(int([0,b] e^(-x^2) dx))^2
> V over the whole xy plane is V=lim(b->∞) 4(int([0,b] e^(-x^2) dx)^2= 4(int([0,∞] e^(-x^2) dx)^2
> this can also be found in polar coordinates as V=lim(a->∞) int[0,2pi]int[0,a] (e^(-r^2)*r dr*dθ)=lim(a->∞) pi*(1-e^(-a^2))=pi
> ...



thats pretty much what i did

[noparse]\( \int_{-\infty}^{\infty} e^{-\frac{x^2}{2}}dx \)
\( \int \)[/noparse]


----------



## vcuber13 (Apr 21, 2013)

ben1996123 said:


> Spoiler
> 
> 
> 
> ...



what is this showing?


----------



## TheNextFeliks (Apr 21, 2013)

vcuber13 said:


> what is this showing?



k=>0. You got it.


----------



## vcuber13 (Apr 21, 2013)

so, k cannot equal -3?


----------



## ben1996123 (Apr 21, 2013)

orite yeah i misunderstood the question

goes through (0,1), (0,-1), centre (0,k), find ecuación



Spoiler












necks queschun:

find the maximum and minimum curvature of x^n and the coordinates where they occur


----------



## vcuber13 (Apr 22, 2013)

what do you mean by max and min curvature? the sharpest curve?


----------



## vcuber13 (Apr 27, 2013)

is there anyway to evaluate a definite integral by hand, when its anti derivative is not elementary


----------



## A Leman (Apr 27, 2013)

vcuber13 said:


> is there anyway to evaluate a definite integral by hand, when its anti derivative is not elementary



Numerical approximation can be an entire class. It depends upon how accurate you want to be. If you literally mean "by hand". then I would use Simpson's rule. It is quick and easy. If you have a specific problem you want evaluated, please share. There may be a better way for your case.


----------



## ben1996123 (Apr 27, 2013)

vcuber13 said:


> is there anyway to evaluate a definite integral by hand, when its anti derivative is not elementary



you can change from cartesian to polar coordinates sometimes which dose stuff sometimes. like \( \int_{-\infty}^{\infty} e^{-\frac{x^2}{2}}dx \). if you change to polar coordinates then it turns into something else wich you can integræt



vcuber13 said:


> what do you mean by max and min curvature? the sharpest curve?



curvature



A Leman said:


> Numerical approximation can be an entire class. It depends upon how accurate you want to be. If you literally mean "by hand". then I would use Simpson's rule. It is quick and easy. If you have a specific problem you want evaluated, please share. There may be a better way for your case.



ew guessing
or just type it into wulfram or just make a program to do it for you

okso ill do my question because wyenot



Spoiler



\( \kappa =\frac{\frac{d^2y}{dx^2}}{(1+\frac{dy}{dx})^{\frac{3}{2}}} \)

\( \kappa =\frac{n(n-1)x^{n-2}}{(1+(nx^{n-1})^2)^{\frac{3}{2}}} \)

\( \frac{d\kappa}{dx}=n(n-1)x^{n-5}\left ( \frac{(n-2)x^2}{(n^2x^{2n-2}+1)^{\frac{3}{2}}}-\frac{3(n-1)n^2x^{2n}}{(n^2x^{2n-2}+1)^{\frac{5}{2}}} \right )=0 \)

\( n(n-1)x^{n-5}=0 \)

\( x=0 \)

\( \frac{(n-2)x^2}{(n^2x^{2n-2}+1)^{\frac{3}{2}}}-\frac{3(n-1)n^2x^{2n}}{(n^2x^{2n-2}+1)^{\frac{5}{2}}}=0 \)

\( \frac{(n-2)x^2}{(n^2x^{2n-2}+1)^{\frac{3}{2}}}=\frac{3(n-1)n^2x^{2n}}{(n^2x^{2n-2}+1)^{\frac{5}{2}}} \)

\( \frac{(n-2)x^2(n^2x^{2n-2}+1)^{\frac{5}{2}}}{(n^2x^{2n-2}+1)^{\frac{3}{2}}}=3(n-1)n^2x^{2n} \)

\( (n-2)x^2(n^2x^{2n-2}+1)=3(n-1)n^2x^{2n} \)

\( n^2x^{2n}+x^2=\frac{3(n-1)n^2x^{2n}}{n-2} \)

\( n^2+x^{2-2n}=\frac{3(n-1)n^2}{n-2} \)

\( x^{2-2n}=\frac{3(n-1)n^2}{n-2}-n^2=\frac{2n^3-n^2}{n-2} \)

\( x=\left(\frac{n-2}{2n^3-n^2}\right)^{\frac{1}{2n-2}} \)

curvature at that point is \( \kappa=\frac{n(n-1)\left(\frac{n-2}{2n^3-n^2}\right)^{\frac{n-2}{2n-2}}}{\left(\frac{n-2}{2n-1}+1\right)^{\frac{3}{2}}} \)



next question

what is \( \int \frac{1}{1+sin(x)}dx \)


----------



## vcuber13 (Apr 28, 2013)

Spoiler



according to wolfram this is wrong
= int (1 - sinx)/(1-sin^2 x) dx
= int (1 - sinx)/(cos^2 x) dx <---- apparently this is not equal to the previous line
= int sec^2 x dx - int tanxsecx dx
= tanx - secx


----------



## ben1996123 (Apr 28, 2013)

vcuber13 said:


> Spoiler
> 
> 
> 
> ...





Spoiler



hmm...

true, false, true

what ? ? ?

edit: actually its because wulfram doesnt realise that tan²x+1=sec²x means that you can have "+1+c" in an integral, and you can redefine that as "+c" so it says false because there are no solutions to "stuf"="stuf+1"

yeah, its actually tanx-secx-1, and wulfram didnt realise that -1+c is a constant





Spoiler



anyway, this.

\( \int\frac{1}{1+sin(x)}dx \)

\( t=tan(\frac{x}{2}),sin(x)=\frac{2t}{t^2+1},dx=\frac{2}{t^2+1}dt \)

\( \int\frac{1}{1+sin(x)}dx=\int\frac{\frac{2}{t^2+1}}{1+\frac{2t}{t^2+1}}dt=\int\frac{2}{(t+1)^2}dt=\frac{-2}{t+1}+c=\frac{-2}{tan(\frac{x}{2})+1}+c \)


----------



## ben1996123 (May 2, 2013)

okso find an ecuación of a circlewave


----------



## CarlBrannen (May 2, 2013)

Nice problem. Seems like a good target for a Fourier transform. Look for a solution in the form:

a_1 \sin(x) + a_3 \sin(3x) + a_5 \sin(5x) + ...

Make these fit between 0 and 2 pi by integration. Average of sin^2(kx) = 1/2 so get

a_n (2 \pi) (1/2) = \int_0^{\pi} \sin(nx) \sqrt(1-(x-\pi/2)^2/(\pi/2)^2 )dx + \int_\pi^{2\pi} \sin(nx) sqrt(1-(x-3\pi/2)^2/(\pi/2)^2 ) dx.

Solving for a_n gives a formal solution. The two integrals are obviously equal and shifting by pi/2 gives:

a_n = (2/\pi) \int_{-\pi/2}^{+\pi/2} \cos(nx) \sqrt(1-x^2/(\pi/2)^2 ) dx = (4/\pi)\int_0^{+\pi/2} \cos(nx) \sqrt(1-x^2/(\pi/2)^2 ) dx

= 2 \int_0^1 \cos(nx\pi/2) \sqrt(1-x^2) dx

My instinct is that looks like an integral that solves with complex analysis so it can be looked up in a table. Don't have any handy and I'm too lazy to work it out.


----------



## ben1996123 (May 3, 2013)

CarlBrannen said:


> Nice problem. Seems like a good target for a Fourier transform. Look for a solution in the form:



yar or floor(stuf) or sgn(stuf)

I got y=sqrt(1/4-(x-floor(x)-1/2)^2)sgn(sin(pi x)) and arek got y=sqrt(1-((x-1)-2floor((x-1)/2)-1)^2)*(2floor((x+1)/2-2floor((x+1)/4))-1)


----------



## CarlBrannen (May 5, 2013)

Here's another go.

What we're looking for is a modification to y = Cos(x) that changes the shape of y. So how about trying to use the form

y = f ( Cos (x) ) where
y^2 + (x-pi/2)^2 = (pi/2)^2, so
f(Cos(x)) = sqrt((pi/2)^2 - (x-pi/2)^2) = sqrt(x(pi-x))

Replacing x in the above with ArcCos(x) gives:
f(x) = sqrt(ArcCos(x)(Pi- ArcCos(x)) so

y = f(Cos(x)) = sqrt[ArcCos(Cos(x)) ( Pi - ArcCos(Cos(x))) ], which is correct for 0<= x <= pi, but has the wrong signs when Sin(x)<0. So to fix that, we end up with a thing that divides by zero when Sin(x) = 0, at which points we need to get an answer of 0.

y = Sin(x) sqrt[ArcCos(Cos(x)) (Pi - ArcCos(Cos(x)))/(1 - Cos^2(x))].


----------



## A Leman (May 5, 2013)

CarlBrannen said:


> Here's another go.
> 
> What we're looking for is a modification to y = Cos(x) that changes the shape of y. So how about trying to use the form
> 
> ...



This is very cool! I managed to get y=1/2*sgn(Sin(x))*sqrt(2ArcCos(Cos(x))*2ArcSin(Cos(x)+pi)) by rewriting your result.


----------



## Ickathu (May 5, 2013)

Here's a problem that I'm stuck on:
Given m=2n+1, what is the inverse of 2 modulo m in terms of n?

Here's what I tried:
If m=2n+1, then 2n=m-1. Then, we get (2)(n) == -1 mod m. Multiplying each side by -1, we get: (2)(-n) == 1 mod m, which means that the inverse of 2 modulo m is -n, but that's not the right answer.

0 <= mk-n <= m-1
0 <= m-n <= m-1; n <= m and -n <= -1; n >= 1, so that would make m-n the right answer, but once again, it says this is wrong.

If I try k=2, I get:
0 <= 2m-n <= m-1
n <= 2m and m+1 <= n, or m+1 <= 2m, giving 1 <= m.

leaving k as k
0 <= mk-n <= m-1
n <= mk and mk-m+1 <= n, or mk-m+1 <= mk, giving 1 <= m

(2)(mk-n) == 1 mod m
(2)(mk-n) = mk + 1
2mk - 2n = mk+1
mk = 2n+1, which is the original equation, but it's no the answer either.


Also, this is for an online (AoPS) class, so, it might be the correct answer that I have, I could just have it formatted wrong, or something.


----------



## MTGjumper (May 5, 2013)

Is it not just n+1?

2*(n+1) = 2n + 2 = 1 mod m


----------



## Ickathu (May 5, 2013)

yes indeed it is. Thanks! I totally missed that haha


----------



## Ickathu (May 9, 2013)

Find the number of integers 0 \le n \le 10000 that satisfy n^2 == 1 mod 10001
I've already got n=1 and n=10000, because ((b-1)^2 == 1 mod b) and (1^1 == 1 mod x), but are there more solutions? And how do I find them? I thought I'd have to do something the the prime factorization of 10001.
n^2 == 1 mod 10001
n^2 - 1 == 0 mod 10001
(n-1)(n+1) == 0 mod 10001, but I'm not sure what to do from here, since I can't divide and I don't know what the inverses are of (n-1) and (n+1)


----------



## ben1996123 (May 9, 2013)

Ickathu said:


> Find the number of integers 0 \le n \le 10000 that satisfy n^2 == 1 mod 10001
> I've already got n=1 and n=10000, because ((b-1)^2 == 1 mod b) and (1^1 == 1 mod x), but are there more solutions? And how do I find them? I thought I'd have to do something the the prime factorization of 10001.
> n^2 == 1 mod 10001
> n^2 - 1 == 0 mod 10001
> (n-1)(n+1) == 0 mod 10001, but I'm not sure what to do from here, since I can't divide and I don't know what the inverses are of (n-1) and (n+1)





Spoiler: answers



1, 2191, 7810, 10000


----------



## Ickathu (May 9, 2013)

but how? I can plug the congruence into wolfram if I just want the answers.


----------



## Ickathu (May 10, 2013)

Nevermind, I've got it now. It was pretty easy once I realized what to do. That'd be a lot more casework if 10001 was divisible by more than 2 primes...


----------



## Ickathu (May 16, 2013)

Find the number of distinct pairs of integers (x,y) such that 0<x<y and sqrt 1984 = sqrt x + sqrt y.

I tried subtracting sqrt y from each side, then squared the equation, but that just gave me 1984-2sqrt(1984y) + y = x, which I can't really work with.


----------



## ben1996123 (May 16, 2013)

Ickathu said:


> Find the number of distinct pairs of integers (x,y) such that 0<x<y and sqrt 1984 = sqrt x + sqrt y.
> 
> I tried subtracting sqrt y from each side, then squared the equation, but that just gave me 1984-2sqrt(1984y) + y = x, which I can't really work with.





Spoiler: answers



x = 31, 124, 279
y = 1519, 1116, 775





Spoiler: my solution



sqrt 1984 = sqrt x + sqrt y
sqrt y = sqrt 1984 - sqrt x
y = x - 16sqrt(31x) + 1984
y>x, so y=x+k where k is a constant and k>0
31x is a perfect square
x+k = x-16sqrt(31x)+1984
k = 1984-16sqrt(31x)
1984-16sqrt(31x)>0
124>sqrt(31x)
x < 496
31x is a perfect square and 0<x<496
x = 31, 124, 279
y = 1519, 1116, 775

3 pairs


----------



## Ickathu (May 16, 2013)

Cool, I got it a similar way, but once I got to y=x-16sqrt(31x)+1984 I just checked values of x that were multiples of 31 and squares until it was no longer smaller than y.

What about this one:
find the unique triple (x,y,z) of positive integers such that x<y<z and
(1/x)-(1/(xy))-(1/(xyz))=19/97


----------



## 5BLD (May 16, 2013)

Ickathu said:


> Cool, I got it a similar way, but once I got to y=x-16sqrt(31x)+1984 I just checked values of x that were multiples of 31 and squares until it was no longer smaller than y.
> 
> What about this one:
> find the unique triple (x,y,z) of positive integers such that x<y<z and
> (1/x)-(1/(xy))-(1/(xyz))=19/97





Spoiler



1/x - 1/xy -1/xyz = 19/97, x<y<z
z((19x-97)y+97)=-97
z=-97/((19x-97)y+97)
97 is prime so ((19x-97)y+97)=+/- 1 or 97
if it were to be anything but -1 z would be smaller than x or y
(19x-97)y+97=-1
(19x-97)y=-98
y=-98/(19x-97)
19x-97 = +/- 1, 2, 7, 14, 49, 98
19x = -1, 48, 83, 95, 96, 98, 99, 104, 111, 146, 195, 129, 145, 193
only 95 satisfies this so x=5
y=-98/(-2)=49
so x,y,z = 5,49,97

you called it a unique triple so no need to try the others anyway


----------



## Ickathu (May 17, 2013)

5BLD said:


> Spoiler
> 
> 
> 
> ...



Oh okay, I didn't think to rearrange it into a single term like that. Got it now.


----------



## Ickathu (May 20, 2013)

Here's another one:
There is a single sequence of integers a2, a3, a4, a5, a6, a7 such that
5/7 = (a2/2!)+(a3/3!)+(a4/4!)+(a5/5!)+(a6/6!)+(a7/7!),
and 0 =< ai < i for i = 2,3,4,5,6,7. Find a2+a3+a4+a5+a6+a7

I've got no idea on this one.


----------



## uniacto (May 20, 2013)

Ickathu said:


> Here's another one:
> There is a single sequence of integers a2, a3, a4, a5, a6, a7 such that
> 5/7 = (a2/2!)+(a3/3!)+(a4/4!)+(a5/5!)+(a6/6!)+(a7/7!),
> and 0 =< ai < i for i = 2,3,4,5,6,7. Find a2+a3+a4+a5+a6+a7
> ...



haha are you doing these for fun? I'm horrible at maths, but I think I should try to get into doing problems for fun sometime soon.


----------



## ben1996123 (May 20, 2013)

Ickathu said:


> Here's another one:
> There is a single sequence of integers a2, a3, a4, a5, a6, a7 such that
> 5/7 = (a2/2!)+(a3/3!)+(a4/4!)+(a5/5!)+(a6/6!)+(a7/7!),
> and 0 =< ai < i for i = 2,3,4,5,6,7. Find a2+a3+a4+a5+a6+a7
> ...





Spoiler



add the fractions to get 5/7 = (2520a2+840a3+210a4+42a5+7a6+a7)/5040
2520a2+840a3+210a4+42a5+7a6+a7=3600
2520+840+210+42+7+1=3620, so if all of them are 1, this sum is 20 too high
they are all nonnegative, so at least one of them must be 0
let a5 = 0, the sum is 22 = 21+1 = 3*7+1*1 too low, so increase a6 by 3 and a7 by 1
a2 = 1, a3 = 1, a4 = 1, a5 = 0, a6 = 4, a7 = 2
a2+a3+a4+a5+a6+a7 = 9


----------



## Ickathu (May 20, 2013)

Well that was brilliant.
How do you even think of those things?



uniacto said:


> haha are you doing these for fun? I'm horrible at maths, but I think I should try to get into doing problems for fun sometime soon.



Sort of. They're for a math class I'm doing, but I do like doing them, so I suppose that you could say I'm doing them for fun.


----------



## ben1996123 (May 20, 2013)

Ickathu said:


> Well that was brilliant.
> How do you even think of those things?



dunno lol, practise I suppose

more programming related than maff related, but dose anyone else do project euler? I've done 20 problems so far (1-16, 18, 20, 40, 48).


----------



## j0k3rj0k3r (May 20, 2013)

Wow that looks sweet! I'm gonna start sometime this week once i get some free time from work


----------



## vcuber13 (May 22, 2013)

ben1996123 said:


> dunno lol, practise I suppose
> 
> more programming related than maff related, but dose anyone else do project euler? I've done 20 problems so far (1-16, 18, 20, 40, 48).



i just started
if anyone wants:
31654608479670_96c98fb7c79e8671e98f0b5bebb5f4e9


----------



## ben1996123 (May 22, 2013)

okso hears my fiend key for projecteuler

88706198346595_33a796e3ea055fc2b7125047d451785a


----------



## ben1996123 (May 23, 2013)

okso this is 3^2^20 = 3^1048576 because me and arek raced are programs at cackalating it and mine just finished



Spoiler: moar than half a million characters in here so dunclick if your browser will die



788476810003426547135889756681970758108634492343901916650652456335468779647991318341838702766503160497945239367614156592432453907986276210422161395665617411845766088149877340758343132204414762728363172469671383717228257049475104766361175533117890229656674516078546113309561749859854452844096685859110093731597429046914231515849378888659119432573232122513441231566808558659147698121973873565723819199644094029982973436558904655084612940165613188641726623346364641089499782165404850784382264881210423199554707401425571584548296706527550552438834187654685155487715991880710228053092114833209423367286793408494332049018696681236308991630174396208098919093091685549340380909561151363295484782041440782764422959471234077788287664871283454442014172954883614230664956320514727947845301781071875647140206544583442148907778613739359760663244621134450219425749515831838119029905410426457452163925818927054354740290913533113490669295299532776275157390449380640846084870327428504859222784509984474161036429416992224407481365593245918117963633579931681794031707888861104793655057516683452389564111857542862100524113842945620642631002620643167614559468301197065363817831035406859556399856052584017989668499260345928016899386937798609317872097523823248317232353227498185976154846788297335345922124041106682289304899021721912512569707058336525217922720165759434635949572762159053178389425365762302186465884305504647575281127615964460738298181232287137846213055819669850237102965512151945234504675712705474066091365087456378378293209200381105091675173704906559157388089958479261088114570132216090043502448041128438354739965112590155185091817497798841374721629625382527465332309653705971588028401036655279147381527231097815487702360581297200924217752069266052057208911843560309821612695768213842474202215533450059614402603936653527362194964228858325589723818974203026436384562740776444720108453781626447086575225923715024646583351637043922343607735357150318798686882690321231213580458185546570323290816157624651307023238149413635144451873783850317976519301649087446682420347240354768568221653435679090763031763707226189651599458807680295022667312902453566281344804847394334938165790124894710535598248080336356305005572916065469590117492783304812778845800463772136408155039576085327375593213040494860811555869985547508195943036483287853667971884590659662578178487343892915835401676390864063165392235974890144409779198501203083348960273157943898027659788457046160307827028931736580273232509427654358003408671547648702730764014216719625865403517541477882425331439873735480004806473288870626143299186756643046360717248376532645490041598215519742994072475147825726156395447078582289997949834955711512008471782591818851658463582987851498492796190474168417644597549490429790657120922483777214332711048787133911763354236659162694861068566504307902326503109815364394514657456265099554532860995367654987255225497382882850426366599198688622114605449013211769093031532614069152025305156681396219105517217578902784492336688139997280338410533072245085810774329178249378375737844983920604089377930478627511853189603577301463325934143662853294224158205444284776761417009946489555671697053531812242191678834996846749166459841921521065370700377936143514108257834507650237575829017717887761137434718355528140302538460806867115226929423716730916580886127105409911901920314269689458485161001403544204822353458622473409187530760436131653734353322138845137776438103125811423726505205893417684634375422587298325888295384502360105322120102749921906152246566566673119754290127581594082400668590581807727896735092318506338996896018405300577080152655175491398062358923622044480374177200446467215320040955200208104465138559345101178984741415432631197699779559067202681675733535080683610280517127461008817222165086846981031419267170505917496912648159331413985580776687202655598597523753856945431872970622668434058453085126635074831421692731111649607489874228223407081891786121234443452035409679544838289008627582079219969171422427820575590251980712620525509159591252974100472832710789653603388243051027555293865385763217293377193133596079984564922485714835360833245420982343026389059177507104480408944902912625405127614806781535639884281861321971639181166511338959527283666079574312038441819620567567338851305514750704549022883636694464927286801000394602510630917494671641822847447464923828120009721067861397006299422242422513941610385900623580019722920711998996685824806940397445464396631524342431620099732128806647969677283039348472074138278309247982779334431848528330008951949400532979822833537491513028122752426626621236907417096702966176223114781640676453736900527847778836153730723144411455031757909554264170809742952405026270604339403247746077791809112992800982277947516038994994275891125790042318360288535238752138275474456221391911130372567106337161324523878916193439169572471154944987545004133513335111046832919018220796201034324920787507295574485159048706819513286041975850801182216681567865737828537180152991345915350732566117912959226630362150774417482535555654275032490719787788028693996567512356257557125711198324022323440673544445581081393749577273785058745556490535217316071624194400277362055372311320083686168419440214396168329619759438211250750028089175245539945142387616606056788897389412560645802636465086402608069610050062797296774725256494267079235764482599606819351934221753238758473931940752676800228508912922104011236604457246987233558764600786637022690792536908948780850899924324643489835536312406010195651675382654701046511771023173685946182728027100716156859158272397021253205273275692480244257284734846261916179448302594824993046545066036698736237813949490202730885809389798183036040528180981104572715460205025154433404186586768415944908011850887452559271659125354468409195549100943398984264873091493797734415277589544885058784281820926528966794524774423893425201892795404169633888627592254840242845888668941587857200855038976431027986837651624459996946987463923576719364112570405063612163732764186037394483362603295727873865598531663282520324187504742989606665676907446716806870129204018283820483182318762397246709832098769155650300395427854443421644082919562620652685845489987030371477920717310484972284746953898297191430832330725676105538060795382727154890592706079723039527552187726883932326338386870393309304935044385223838174433742300001893582019672396439086041619048671539330079015273992596182817414623108171996820029628688453855012886141843349029634310940222764638094759141206821404280611389300117445799972333508947633201049868939152950920099740719893344384928975003802177316363056661057229248776690874193484612018104077375942041143530430992897600039785631660870161500233122159535643131141819119896535785069265602477516821660209140277639149291433620993566112836951897990437575765533548089986945046090624856890227299270712172493062172776681247855107127185632875097535523604539722525170167242630477558420549077089044483297847254191757189398005823232529078384447535266550064620268180328494615939980591361913646454626065627964574254600751790971293072042490793456178785930667582684575008789374884147191965923712351241297999600363674942551809769919857163129634805347699591370461460322721065765471917690253126102481189886235810627950594951247986742152231988783676540274521058975659865589874810548212747688106962913285963776982469658378596623790438791895466077346313589336199196360318622985382784802033184174441850474571155946572663043777508218207810075700436076861024973253212800725310727048574354502057124904553336263712211158339337827070679256448087412342672208397977544944852743267590122340997030783662177237731265224262644187504552200964515288186937700269805104499802943974366832638961176012341924889669321437410529736311541478527090216311996914874186330994822135157766482381168232241494401945311331416440251887516199323816512301118786301667519496674620668966644587659986417198839180290432783758244051462031824774412432157291181064800788176030758379943979936155962684002017465288886053130101159416880912332756107949689774725417020042685919726531941871960614821434934007220467718760598517833462013904811576802600134005494991737286609068953315394258085619099515748664771286710451008773939956030050681206880039984860106054164068468947491471670928114643075535764936554577756772808177313738510963846856055568836853172842378633168484405542924394537276698439677753523924175950162454742168368824690484599671527342164926382362708291915758316234439903877608247998362646422525976299076752517111741451215902855643006655592207364285210077592971962212077672239734358749934792454177741512851399300922438581316776538182494066022903450319707415534411824150700672232241193909451685272294259093541768463109629791583744641849779813721041073749419791877783792392483127658545366430184998210429046014217623880050051526295883045790870596515971445973185891358256971976036620476808925959417633232703953189806388709669960665506863040059062497117826173421308031612648628494778645346026306158388142099149861347268328271160819064405464353173858474939133336376367926129532426376960702689344812683741190511526399397115808236190446219333386261164166975997711715168039084268791558413343871488454327395058358903524412740483927203368765046062616195666408524106073099151670817141083061583798807846801746290298766118367516372462639031334984513323926940740914721843276441950252655532723595221181062208808722820736082525955996384853775795271111935815020640774731955851248910484332322352906861563799826626736686226144221179928223851856892624464181013427859948854554635741681337390018817424707081055865837426517835171509986932144724325390185053249114374527341786824547276579878681258252242024600542998080943481416926243098859932091770505714558486319750840227255552491878916529188864129417230594764959310902310068376188559342936470815151877931369147113757511726651692927261150946930672471474004478608236603075185639925539496669796883664184245136073801613481288248289025676811422786812399332716929144887827809962005465602453995048407442103959228428691880050713190170860461380973213057032778095145093008399678603631108936410768542248107363507780049971820083882622056003411163557756277595590670794309812428516556132476167419169253200387209591140630189542516161066105411198628096399176549566143477848083865911853249959225567013874675298100702785291200943353450834377786091970263169268508899572590796875336291701586941287311600491308562722596704304718781403114264770947278362039546791037091142078389137818449626219413147162034620188340837026794418632045290631840857267434900940255808339441176025672184404818669249137622401103676737515978266827733930250434259274670656573184530313278575642549127194011445823084782744725216919664455589805714419120794447086600966681631618350412987197387384161974958916875915195504519385649542499502787232137893135502971072222743927483433023532366186280398428067687914589177574333639499993023829379664739754531666461279431644572710086275448405841105320278994820071162440192383878602760243533814294577132489163114702353927078383477990098383832492174927883580768440930644366885675795333762723976587275942951572280639688121134625447310448472782107730751566236392685109144629923140944306033047381574708655429524917839280040085074758567508442504786539467019043971583898940153903731592860657251863408726632798716869417438881797010276046468369418294468741377627895217516773183283069576915622470689408028249534957821472088410401652841536290399088779189305899783476974487137452941641541105920361928150847708924636673188275631667627341636991268272785208102806792367959638294031501961098174928218126456009840334604076318355922281998100728775026818805752686986328082850188129264613296419103034316620852320662108831273291330483773210713843280730608813009228714673272676260399180426397570728308802587926266852395891697229560524685121592508311143267347688422812463475676555824626086170021999766896983003773558019692365349257146078064122884893422253390196244431093600741693811228271387196302756710226252222633326704007449510822336249751552528204596313001133498959132860785642314234663163525258578423910794310973078707724536158776585424871845404940033978679341091248029094963868435132009937676368707871961951632906175503468871833812431899328805765364917396017007027738708777393962162988340494012344944076502692598962780334723364704080265744472803597131466326461922504563008705482330937986418451565047736411319550392089269888168397602272676804680912344420476695482635932441748701252038437867611250173120083307682568791654749185389692857347561889763877038213311863918765420782552380789141413450788113738125821513510153576647090282594360641483835792084424366427515578166455406396006235006335012346755093696044508292062390939478718780597900844397700368446617381613946407418940282249473566378765912095899776355205856786769476565308387433984945577772279556693133069123408341690377549396998166437276321512744996982662939104768281435145852251335959143335802921998756638082026545254667562616636485970056790031600182355049448487588404710625505868681960984356988024147277197960725291093380540703436278611721875888405184567859643041982697739179407113940728279170992682261461899851042565734071316555734661767674303134330867439746516801321079089441633062693155925238946864897051634298498280388699538930724823219868772924727503300104962385227763224527649209598190600701617473858156629478276319343269819375984604346859284828418807188439012448907519449829627288776231778891368307010377140259278217361975540147471656601782030270223246198139103181015000631171285911347564450328372101933761111761312318898943160684199841087033336957735145732154429094401513756339463142162080896392644254355368244257364349245411314622636709973547249156137909460439513010311713571486375268953946509689482090157550685277375703177404609847031473468313955774260751952717137992764093969063968150149739212362955888865755972737814187390800286978894413140382919322794013281494583077361629674395399729499185029218718322454344872340339980910135886599971872820731932875467501531114072438395542663520946465318410706586541892419263539670254509613886979084254674357969708651474068509532212859087168525272469827733045721192246385116266677696273327150435661202792635031809125765739728345616984996077325640875858696846740165573532391290871066583027275655091224810997602305316152050329307449066767874001229847815351788831006380443306088610859139385852091337652161566558777830336211314091662871871702989630084005479563769822527449425821053375220834407234139603510063544325704948081546774092748184785281996415974497506798823164405504178997021673644900694774609528164926763333141285100707796972097655341099844863974924960523424259153099299943216471422257554140254673478867536794944404773584067920368301992768149023123569926001700261177299328883513797360006800148650473948585710436998629331545351342644836808609431742163977883099394264152182884288873563043976372923336099461076302007836373464817293749335498348625549033089273027547601475680117755771582127923599197976883616923901747301535657639251773714726449544173007540154127243868612503778219207077467906621728132650263952231000151987831467595261160525887707264576549198748297555010803991729467580520089907298297754179695513195152091861267947272710393277452545518214559973344516084265248444862016957883985802313551199563396349290513541973082554971325374666691524400849581254597617305928294803134294184263109177913485898563059197561027661853163575382472127474708040213319048111640620473909624639774159779953099287242123784475738988407809788238425613132032976970530955443343561797780025296009991637727556450254210076257317618452987376568867361509675070170579380181812332248299031077074805906976451884450829498909223323931085042962132119991385364499702433304812839594233549119386574002899547150868400250597408154540625530810624987819649600097776497439145521276987753164210901224988328624273527317875466107059017925507482143634820530217686212092004009643965498197138289517573268224134136147636250866753234688008746904149525830279847622074444477900624279550736055866265459823242417641537214517940638570573518732723702488741061559509923753871826149946552500730388085211896592947544960044919013041992950811288737678813870066675947114665572680470067923645527905403295674181341538595589032431095093435589587712331265430260029399548214222663708795819957248304691557598067040706745562303552759167441749402423747814090809563310300297262343064455856297903848988521080180421399404672420731767596351146502090840342023638888417155662344683390686319561365572535453476568661928761426089895411043686449712616663551637514842361298485367405276798669760582857374114135753421750810432493074053562525112880402573427058669872009672876150306447518130537998829926393550940526620237874068644366196607488223044059027691419753966895102310779024099655224665465481651818353771468643774787714696143994795994052473124057718145376827087872758566411724669240315239956452994065328588501172881101846518106894597988067810766614439185610372124502740754997195634019545394709281893121801303348326896733498464376285264382152478157404872367086941538384197320735442855244809564678534472504653095992162240566802578636312327654675391011159706864501812028792536322445560173875052523946692782810328693492619435492173521160099312493478333468313598953711344023984619459901430069700040006685110835878922358319623799205637373039494624391149832828898803997376741242348104496613158613930582489644242689925540690750994218461853708202224378794169849603708265544526878118679650732984626759016088972538127138259549827751696800403803595661882329486292957382057922940989347920079290116041240441997470176515845728127587552336602871145630661422310479437616865807286094484394540479145745377261099906732912963126429304417841917731463051363270683033536383459524548485407462963426327482715019786889284307886397782503611228297384072543095126958163856571361260134319480175323398215071972582937115770758968193490666803128294354701424279435626590879523971879935018682486882453510881926804772139582699997981463619246275568986370916292425172018242383005938374705800563940562980359524687427280817338421567515426229609177453303565100257407802296044716968388896629567020212267371644103329125183628314945283910044506665390563844747711771135295561100618873540341102764116454554512990358718018446064480801052338642838228458998002486986066463605091594453223451832044071783745065379492478162762634259450016841795644259001655714386227259759559822260419970376352163418117815300983704951800939409172800566377450749176003168152896424018387990259126937871301046274805620978588775845959939718013233094086943193931493563336537661508613718625420870502283544349178110229301069939422616145905299490490806416624241179898590112430957452805722930247759970746037215827331727966246941627614734471150460179266279571266565308712654735788418601879799159064845599765861993328381483522389111467420444389288355441016122700539325258689626572286770226050959871890295317885478757364647726908585529721650843338884140633488127216771599154185330713798524654777440087695655495535789482278025750257243039007464087728712267802029547326492340853410379619118082112195343443439297689758172345431520379151493191185639212593245099322255303841519155815519355232286071777253539686447485200655212932698218161427180862784194700783639903133921462031953192319477093591297103630985825550038250928547825811140978726842704533980679953342007535752138105083168220326394881505999257483357146623954036709195336785254689962741175642078539165799392099187654207367223145463284752180831146407263613320109733401077314526867500325729913521577790295426321156266113594760946816551757503995743328834912063256504527178248177886270094181343763689689671677204953121804945418081977072631025351662635408940239291282499271401458845373829073753651904204510825891092367962702860223253637459394755067925348691612213142464015645235991331871388000409744678857033465016940483181887975464991685168759036301957423209706296824540236299280644134362661906606682291507570434473917755750810317254583232658822577677320801717836121686227374401643919848810414815441701140544488922439015555547289223629591152135126077023487721640250407692183556225224751342124463654374233686761339327502635018530549674497270156010043176387801087084937107882376115899780450254064995039954235387995417776789555732421393448866797713133188359498658220242742887730324015271793276720209783701023784172820016197877414748736061561453218868687191240421187699593496593030693073234106060467933603708783816039705179704800254176981046418341920694700500394977272921599916895862402897600824702649886211518948257745324532184169931690081449113285967407282554971844571068994378503547717374096184225910095139978382823256130013191434542402096724644494612923584066185280273994041744928592963725753906206607696119169108296017076956859896063088234454074672790374752855034796285425679416870353385353365192303546499293737859666857569306008151738920072684681960526131902130874452493960756091399907669894568976635932529430786135357746392623593101378669977755300692574510007708371006462680150098074231100377312562001295048722539020052565294151068685919933072073275540523829263597141323673195012808452903397137983775976212142455656900876151128897020262123157457028078271810502698496701161465460623327839101619868342874707452909439243811688304157375951983302691072131168286485871988265525405724174153644925959450777826252036176840045539915881235223182442331094395405496698915760749098374033776918221787443927583383261858742918672116521663791930550881781006490033287435961632845197293850318183434570237920915045057667430672110825159714589236238748326425882467094273774843658991295215947886567244336096224820316080619696499300901035425677028106084371213641531700076172673839858605840453927926937819602587175193000277772823374659799217319215940752178488532312818302014276250812607175929546839104559728464286219913992063918974631972381712867991606717987546008773479671862720589595948719847119553618966641869417637756022443165793804942791519483594398959251201021001533045367143473595610746324744972414238987885876484684179295605585876329060122782274401945425952964163017693279997947633048014657245919709081706734574976954869418501722279278738409500351148837098822118865053542976144393320585307483277101218713210206098857299299384043397979605028815260446196426321635792819336329789741042483940336637513171024776008514529280217607134609582176923258331834233014550314639077993049818446236235145134096888236847105429764242307110093420898322872325922604887689472102577210779503433904486546254100223451654939109368174371291897676925707409269621735977543120533239250553514201306721084361608776596855589031772098365067045869261307633991773730761399473489066543489510324752409166045907602758057055555417551385746038238713382231582004572786807586489180282105967916424901526229611425740155553850196425627774686361678661293301491141100173639732530835743466191750758757033912142202683328909074050505970728957777011088353537435658481329962985702752139055077248877212730413976918638287880763422663026242736927479695385585375729761340709212725088844231695970919636540489627475663318016403503790267282690034303612698445232118071254053043144104859667640187319142450049950201107998441290710450133224759960299754784986559839436062248254097578897164943889084055191501131799815411268949929499298563268425642602544960229274024115724092315611900292892327834052640163114857232761644258505389236514255056636171203538460288910142046992272431334539288665110124231986596346146479346760769578769756051644529756250556307513599495704708700100120237225717849854135034183187111321127792303274455226745011123896249957082491528573166406325240226562405305542677503624475940395608670455515614289625087345981577586583680110761737844197414162498116783851419330943161098694604874106910220193672480903660858655947154049474775352887538112017757529543852041377267959886046439121153193846031741848608698328767006912115913243834397818371690802898426925556676882857400742691682085274467131239290596298479948767203712113592546367311466318424511480660653325108018071532282271501360747998495611791194922647839957951120602982499488630713581816225210409034493078278341959435810713611057964106839971657340091459589787515387186890660204146715754734906481189371428964785059436487290372570235252057776610903839475535149124446978523009909687178053079778165400780491816230622964990119360480940252556872953165962128804787009488366936677742371047690688368253892383059256989137518076605940893158289093234647978595100625353002200774534787516468960007973168971288002141280050475402377092093357561827441629796347174236610610977515187225803758030129360247361536458072906748130216261533352503879466554935929554794151263960557896240140817841869298656320673432643042069068058433921498065125984737013043787703549765301559918699585653767834294721904509384310806326022572755590546696066455001318942236414297249522734229936318111556274158349905617316631393803717516636139829053126349778457429067533736507368728188591128441818020091753099203657385327744802003862693667390272520303970690385169786365476149200575732685996550929929662851075336949669947807764825738318717975806200334033751643951779248319558999925772023432481886871141954581784321164575017586642564169823725601364371537065649323404239145215375994598690774993083060560635267520398247412375875846635285548421901657659928385059138069274807916808440974766991082469697439561622223140473621524975024143659010786783779999455835661288898852024162315956929510742456496492157302265244181066435182170875677566245641443121081627376819886959917373521733351828225626175179283925176777030478297792816940611259679601821867491649356337522795195412565461749968334472595743450057639624114319683971574711016880615267852261570774137232038335930410380459513635631612021428819075813957231728215361828677870667992603814034390229640488748365623310595995428103730486212976894802594662379155036648216692846245131333770068629235975217514193103873300903321107145361906164136439644329799193234454340191203475400444236779420801854651674635106072970899739726270014808225630637927746063702507890290608251911371713721665547010357627788193251339753431023199044779883208435194395525623659520438709166332980525735807305781364243818017755512741419553667794588861850035652960388671366811611461276844297139113779645012461221432853707347245669207139612902506049068853384729892292856588150114461881083200631552965956052595202723162585666088015002684590161114198069652037177954573808711381511881015518208402933185755683741429032103653791358507755800613160520228314209708861999602513872556886111506121801567300665600551371128408616650342815879780088657758352776342066366365239754715907696775362358169759605529042707215130444413711876913026014039107806544438272119111322728959668247916939598826470476112904275636787819955456602599313737675059557556081121548387983912733702610945547150954758242883216146724991447164889529620077798063680589307289134898459167849136853080194257010767365548304933039059061940722973258787171948362246239379391674748015792543025389629343707566799780625099349317577381709570928082375703982482414354656127810204515192206575537300400617948105337550409959983920164126177657184043635436857881380173260332745568031623968722910153603459496537640352672261833860958436573500746968906764167804400570901396254008055957967131786218832005076943894571263349911513972867610075120195289769772868157558316422479015983281502157940564359994408693635452209031223401521473847518054896766418372809004588763091568068433796547139388065325993657737929874066335922413631375347106136240485354770860552311487115158579840183718282117996822412195512921045811986314902432875600546249842374366515676971800508985327476551970210379081293899871888098871865247464526445304833193815144354233506678842448154041586133889887709181907061564606434850388391408755136156494087988396512112890008375019211001790974857244367876050159246624350256436344040837062764407397489967515099236623633766873431089644288796456781610720351236476090844013789657798560620239131596190491309077257125448254593242564969526054170407906220498316841499847439563121858030411254628181946862077878440776950278926122405464813880228114294114890243237389872205890447269521224122922018168114609204437179027201829413820580250768411775719371142452412263656005245507507670841596092187125737278930611452722551267248383894827745513132504733239893397063942706553583303690312901410214039577923930932777009141780178808657688256743079501277262183151332569654067615438985418737291077174468272451992382211712105800788298140824902210717635378950303798707310243126938845941796103077265091665813365533924183528720028821193312078895175779718234436245215308701236076567993456782898631052186257920631318952227963480616213507946160907742855398124625828301152057314651402361027124785950317019337365723503499280982623260239402057066088693739589942013325077067253323089319213348319453682358005243342037300899877842504220818337676084894642971062679283947080613804100829581229086214338605404393284962986589847462100213849988210843549868163573528336965500738319532542550170843109832236793226818305041539178389864723376197182102224809177647163262798993094648249207452670484596054651136996635917732244732897108657947409366227664882952566729436158193706607910336939173616403761942716015878408144000150304013754753380220061125415327737707657052244417178099295758827628313088762723175425583163308743652341781809378290210253103309450223821898013760040159942435992737131103092302937871533003492464807495528591949075746160080154887422053247790917818929283760602710235591093975047125873748167360921517891388629704302796128419085871959871030236160266776922907377197044320198951190722922044590518293781954378597959587521184959502449331429524019835369825571444719922155911048259156228099830104200552601655854389157637049162312584324609806536723608960416549765118480737739226655277299259080295472250363384365309896388417361901535459147375720229748516801545443192356726231624432998935119213279606500267749777598070503274654379746018015205970192750653831389207072852677451611881430690898040676880426185987347315789379357767751621048009499054913117199419248086764562670678661193920658845049034468028409723063352930262319440172166520741437230515898447228452757820719977830734759030151925333837754282992074426773188437310301488893229920585316041254581879815129054696077224712164069807685740992658786902458253987120711026759606616577497628461173580232759921440163866482504531229840294771861475923731395949845067478303017949965148165826256812959462835408210809729535848902312490806316372950547794224218098538789744375079439079517368175928401150096912011470355885605961396607128824112577232157288785941066472550520357720002596886768030535093549451678942478475150848329913638740021959940055189733826466701700524530041416660181685461555680544296762344744713585301599968290747617792047531744696841566486145125938018842655822124919195388257521422228236710925831430881568275530560371037485858465581569890506599482783810907345732853366479263610005235493205852329833208160110308001288630627640094952515127621204732802059382966643059891453445310426649317853588501481482116657099895213832376171639718161236734960507506080205969791814657960618711348690814238051656726322001394333088821174191336598890564999478439744710328089792326371736730872225545937228106586368458227276207264168670825366866538656847339453827088759923805022946461042946663384990282412356585840218525986719727118977986179959286408626114176513493018575133815614849212851433483900100590447604802751982434749317888895234172297111919754661316107901210412099990033506773125328789932320781713457821508890231291563787831397962544495342689178229364452627688481799080181874345552587248353379812922341518955649451159347902667402971753699944682991443469218111800287601197392674081838396106533522738849885648982547938526634783346316097414155459570976268555576113586037911675379758769614206276569123604204227778630622219277897610453187590053963427765055559896502203984194619401408464789362682858981398120778829024927981637370930780544985165100852394911257415119151460393096057568411899681135542775254537924074390703113727249101686412164416656550112996314899891213432054242129553618892780245078543037620710104871167298815321507864849287231552865987059129640707763372814137455022162703355258497403642334783170487727408150928919101699190141617311612848202893673942951293704327003443356176431149991372042591202759938340011649296460977182709261099726843423766006605666045091275040692690854025471744272378344670607379242275980522156453567127744248208346951038810368732436347448287554485488833994270771467444652993651329762184189974237888944309814337612422651311052250233790468008623399673798199168257825142527662792789692909214311950388727611806727967581110523206540318070391282874580401130579614474160499172902249927270702164290457134849782352845589314728120781705575107821864906737072056061499357047829696297843843173582463463360477993246481649743137579551970401308973809305089375567958982269558265616299899738151549842993759785772736885208870299676780916555634908420008651127462707293564791593382809534562656624706525528060657925801648956347293623734052875534281779826867397167690441161772075270201576829343649246341220695266820553958868035208812924615423949745331275089203760882588536285197038534259109465717788726750860707090395733908121053364006099226742760353498490488872693954617386513828902967896044436563679028375935912929653558299759562861249507982786543294829163286947703444655444143154017986426730725008713151135775881345676347258928414324068007508976599759431626096907182672902934925643147589901904446964561957303893886379326327143183882427520359465906143305910655269862214228034100835716449745587937126816051442435124427574174868725001616122214177833259752528572370247316639855620195081558770462149362622788057369977145106638377380176790295984756390842108106989230775496113042737163380490086028572461803611223828112702925370546433160982558156879147469641938679926433215846463403999152796300743445730559949977158109254922981637106994051002956580927787021874946981527747829426969559076668897953203767700337139143690604200570267212585198517599228625384316500416981613910641221947783223864928112602108344809085912456259548398603968821682665325489635567460439300791097897553326102040651579287961226945925130343818816860991139206382997083776501967548457782854185295689870904183544989897297819890671540996469385736471230550153402651976650083111591421566725583501402662686450806166185767132067657667349429898708983125775548496601601488708315998222755265867855095550198645100742036115891408569595029178596045718083922385800171625077101746279179341366689981011847565102073265492094561850260373061836105493351402718680993741892304989682751788324470879274868201741225304029847245620222340527643047809190092278069769781214303652437823676348482504332825660105956291444538200148163384812820278142960843306024753361749653128975067485097776077778417131602241628243943411692036369071581680790665216615427210301277861275559441952512598356931717127086897553097057222289072960883920802282535786060120056082001247359560601088411179860567271723952377474624437035910299878229222789867984441840811981193934526307127280272041505176459134009068973425400708173420012084478247438048602917543025773960584385316261620235141744058266098458739122914204421941117677713285337620638915440157825896566387697059050264870346697264699301503956039299790996414977830532054304710525718898302162598365338788446929641737005675879400615578054110577141942491316142394154894772907456102333345634067029716126200686075222285237835379227959138012209090721094251022982412216090780743186871102762686786964309242181198594797129272732335391463014095965803244813377075972335034522837730895552683448927291126369595030121825487416034501285258071578936586683669311027883743025513750216696920295374740598520184575968134375644458805771051522338070309089245536793956918015855706720951330663380328109269650941924110549283498637918976998763868929303602899711361678711040214342954166964605202169970813200549354464506618187548284448826603889923351437812679728334954673132638436900461357430941909124790777285273544570318999860221176512218567448131815585361514071605397427380198799605721010126136766555863651167838050521439463402738210910969545896286128247361665172998147446326203576675834066582730463061796475961502375103271803284930018693091355212862439424302323975468450935339057176258250311105755171505476600376208566378379818739449494485608134023032186067526812318982386746465474455052931539594564012212631480937327801051068030639969071237213134167983908505360051700254762198946975604906568689092457727705835620233616615526076514763489101798246111832853903763007702655903789027544009162240247718041236020831681460124713809996028308023762835595110465874936006268058106264228095415692596833467488975624900231334198891894436839260035480542411522743941174198273042534668126103042922157394394841468710480113273241138817247719532884833534573583229275473687756291539808494550181270563919542195696166388903877187362206852143365597368279069853181662378789464838595364808827192681452517980918517270630954902121813821673096637623084739447744153320200037567390165600706337879417458813771249022051402593430373983496969987498947250396072301700664446707244839935080140427670219064126570046517917495876899415268676026665674230360957682907976725722515533486675792984545295225104765856921688271440809660960353063467768572828716861577891718265303881559677634437865045437383900095780680928151075783459594130681462479689540636248875732719473747910252544504481420502921134427720727499259259951301785020882798483280625332745574175015017418195207655313001799320905134704883561213955259029429559029623081130305024570892098783651262456631328129530036690562847381883317871508778414727376988848101421140137422046269025259891899994012151681629304056221573509163375334218680308553786667936735908596960216742046863798558247298885862948264788482693322976800248027048041022296312059135869083543297065728764276563919893721848464445477732911262632577625098378681749050237394939322661557285635604022869525028831029027332447441575342391756194321494368062037156189377048575831779747017121865437499438751823849977852402079633923380338951748844964698315958053980233478046180994081360119430006949852575627013014112173806653742789067223702081634415478054262834408944203625514027622659871424381297221624487632167536471959914915734711963674722648234335097048477737066784514419461101830653339006072376551031828831685785008237487175095571882633521526982420122223839163307887675110530327304586942514501508620853976980505008279047191849846769620595897110585151131205435605493801556387413677087896944148542602855914423570921501081768603801319053888705979920738020446519597311125235109248533854312075971858034625003436238112188911868818727752720342089138812514221815852399072330605087468994672332459811175440264375254564129651380951535835784801004645157141912500510113303810177569775919328392369659198526449134833899386112343634845208579981129403465276132884685863931531072567085667296552794448570343709499070478672315112194606167373994919803583595614270320321409429692979461604200101627591239136077579573326178642321147273191468683290820008373384904187551918312630213663399354080153319752600275059405443890470196178937289788780167265445825318973842447212245275090231519106314203230715419333347005185182984331574164923857228075425445942385023304946373794714652267956944457038161570108417219042967285013263924911672897071151134359754506578099211990446848047710479186778854048950382300074458850554554465649251104028239554558228251737646860494044869834273422226185296404197171157315900232817847855793408982758843137796000491304763376840480199476935541241066883567239517343855872655610086030636618732263856252047434234653862777040569801249251070242853204559183975988000501451461259620204884837486549893014638183208381495418253755378400354811229387809514108270734042311272890480874594901442654575632556421053296527106322186716120261226682568422232439021486025390732661482023233511864411269221975949495417880215064913030854029245130791886539211506020493211540779822443476308836417694022472493151512467136607817767093175809876744640792711655524342594431776811369026836928830108262512437024015774139002566978079107041350085434956199037573682724013229053246361634714047251794494777216186963009536639686628980461476382117757237306544083127986232332741939380623318977684284241622292264871859383891705596281324712020580063034752844465132700969832807968250763586975060066387878703950804404384490278125824345288585218722267746651846490158444654349208490001215455091416942522609425212093286716973516095483690925109618822642909709105365183829191372161279239988295424679406930898927593588527204319865992921327060245630821286575285584953599421553522886245247105833131787338512625417830620924607619625903239784143588857685076511946159122772119171951364569137592854294081442109423959015379317887450053935248384392670820941572628553124494214554551911984067432272610372681701231843032109494719253634255973561464190422337559971637916697860837742829536881770622858478489667381083131518042664931418468530414114957056936773681045637042933743289341098319002744885484200867742589128206173784159845719569643957921021363220958445073770299377656182810001374868887700268397041565732175171745656111488998119587341703467648353389657547072295565836899244124494506820934668106261849042106119233283936293414371547016682772957380776274436203506212535135740457918433862132368367938293542367283889226600004164927629837255025033647238556604139209909895010278860374285684440515952075528878555017733353625039939039963109008570767626603595619218041248894896801134602815918078231217000413255130525967946445518961300521609524058866147052620169175287233980479481287613416975832468572042839024623224712752095619357882378782443589175056801925898701702943042622397485987792318133328577517575811320093887671524729461638095266865255164550275542680723606644976122396320332423265017855942805471207585363659038833235293536265556926225495973634575819572618624277537112260101700454137102437705996175246148525373655872691790782226301889764330092596036978183119991043616666332544072158162740071566411192554272023673769398323217046561191274786645646234025524327273074911439031381319326397032935721606615981804387213636813037364118218987872474076679912432915655699578408945986222567620918958154049383299221356615468548996009345310216848762997196995632147425901561177596156009796979574586836844112998131008862384306366103281893216738895826944935225396199628743049169401651901115380914237502501049434697506376840776643667915214909241272161669335734539666961456945880604835046026229462079371759240096079020444830280817281710309967977152080063389115200093862764639800558695121429013477228387042033259141289094562381063935123953053751884791482183713898113936918037411501236374992741136786188727949209343583554939641466932038271645763076746527753520985513170636944120785417980462561943422406421616326708932825587058827454710242932534739054676685798981155265264782020688401887730773486006082910256706152455948930420614063024986859956663750062398143600662611963562085109242177711804821888588631992853393257656891890859630681689220086922794042471387318426668647680961308861094329715109214482415553466264050523230393048072157854873837262323031738096342559358555908778551337081010836428559594113779387444488150881584497924799960014933094160820143761643490193238731881105512414742462610084079065607441504841394050760854873167361641489578337335822147417740950416956115896533456575716072380736447395090782791464262737376594678557473374800589821771771425121427310035487136329893517302008742008826776207820521659902375769869189570843123500887422085579337739330932577649559411848071742969471514408950192679987597491151270281066357083973355988443463859587361025934625124323321192615727944319474406191850334117330545188856671201132477966063998906836948719815596226739695368009821954381476647038857520187344447197857528303904701008526855246418438155867591659758086409144889509642668110769916369956819588198180436774953399939960923648271578644332626155437908739161414802783257951540624382452567234045713916239945722841415613927269284378137457499618801914278289014559287397277132138335857331961260300245717133659180475754368842262707956607660404654282349929693286033447790162094899044272819198759088246888198322428648396127833782402635656963110726642157309433976221424480046221329492249315354204177898201019784684675686981639316909156522787514399189720681651608449359161682921539668786994970890555812349756196931151464711597726114348573519356425415967531029258200830993554893540345604853031825051673632463528011793877254475452820453859994065647820045019900455883381991554659800157380816995614846719843849334767585849561746889146892075318816020692417848925824371976954769945642231850186155003587573192741119867363617209804553823618781397268905501982960418271792743157065190717080275686310918172169159703209105552009649455806824329792957850176578312189614845434626880148848242746739407340859862649146954750303060195324511400277306885178798224194477960880582042952784642678834808998558039595935637316797010305160794893965619258933945144499522372685529887234174123477816767560053708760834706421216415696874183532583049526279223653168922453516276696747981455721699149979728519905550246743379968498518804663520270059152262567311997713518608759371013829138781885097728635770277276898601923565819870113468232544016563550554621956828498445601096534958200427985907121183965973768087464515344156264498858230020569920759367525772839764915095740426580311988761674373427104796609755650186279291538367265712054734200234679823756226489023980253477799130341417394850510279483697016484145447999099368571680987970447891373049786067967361119439786029368879069879413276859196126394318754604397914188556108240260537755443918032853649966321287879621445655407389371937731182863293076780312783188113277140185582035749332141671031335972543481388984866637157646031871310159699135437186073280195771713960071022912446224930830511359848408514155285093068221935766043313951381790319031617011991738062289018349718649533106499571391804139242629797479596964372562865283839253813241275319341872822567686313296532649601176006427631800122538479194568290859947150875527981260621062371842537020182671129053441138131409363818654850388669427381981985722141539621764992037834868232881026494189286847812720339659847675931342972908869950490007864128387730109330329283908024346100164071250412957298993381502846386624353233029236529893660896078390565797334877079145843986486466853784462307562642915511480252736898621540230548153379818250303920136697582363822803095148311559413870653566393358692640235906370288746013872323543683398404449571026272319944688783094208164500642985121036502271537997786489523156723517488333545063404731521106534214407043068178562394446494870282381295904692193082772925156600707560066279050857168423212140408573741928267515754050660593922442444925628617799781753655125556336552441879762327493104872417080807302138103700659999836388228035496827906575588187947834546313077905025487897573561690386825713234463779229820811773339694327213121692641274014708925319346596418779888925260901175111512940606015596133809074589120393132620357182595943634520560543097253056858732571254624147054629418853921313913283421443667307694061466602360074427186164177115131323684788779182116182512084358596884114033422143728259855900255129422652677248309109777924279239550059516233020129199620717177601979554590540597573897943402904809240772446252068747336884297618033987083877715218727718155736813738155912035011411564976723146748957666140393258989059003428141334194052148241956137567237458933452062379886565833704942537379097141858569423527949691994213847578497176471570682002596874919645395964864945582789101742486265486406365476176234973224138434766504827844462438076305904686113063163415224625731892823738725460808254939273205421452161758475951657483773410059677712296528015240159614478522899171650490495404700081572033847052553021867926258144598241086542599166712491332744265692166875897693472391508154584551902979942211644564969094310964114419063516909320314904117620382431029325965400518165374655646659154356593322096749650341400568037861677898252423013332138180893417650345894073214990930054530223780757937430552232279728459734059133129293660644792415896540856294248966393230407333804694781083138163622775003981314708659253131523700634835081708760346467369691232654696237510640867570537051677923683364562786601846030547578732613240832900634985618699026851042118450563596353634550604679858263299189951926097126850769865953125086033352467005313183800022452581210558337728805717737300619746848893077142571163916496408668962555058178918418857511547339781107668383149017168504607726083724626279398227003530290942267393913308893282230817099582619538424751698829107175953284354003839192691855216645521647147923206929760022525641661970981816529673794344990410390688636114228838272441257414473426065745836257022736529722066311867085731600824845507928144167744792424514379098497998723992982371554746376171143504982426285856358084696136745542401310367342790706433307246354795621246666055393391845036827167018616834106593931592740911855069675971945133663058340235150079645775039051211744344772142025159871024106043323188110007007914962115655234526277923392416320956402438188600185291363174026806868667760178431043310850542047062545634778276793940206413828083980225560126427957285073310786308903229594839287806870421598325469219096618344980401034684452487269774904333409502990471558638443980993361557632297006711197437203517898187337021111505172895756551957314374240117829869217472706638571124443838908180785910553492971306599639236787658030966725114827897533881594641749074117781273916127181452940416858528940719881118641312114369858882863632036335840268460662677171700186784941393837826024754615967895375444788773341629359752837165833287320261765932623029051431407867483805693667427986218660987145624802691258119345455156019488448313422372841676485788265690018057256586312266710320978604881293489873272026148516790067827463993892674897545417628164707761689659786368920753941748932601755567998322707913583642865765550915072631847341078931226585629382373603468172229532843661122401245267286841214886944177228445591666863566688131877799653760506085827725191503993007211041952238410995694816375325783567258390426310365727500014351060772398561679871807913657590191672967932546178200895898975455665518880613900942325524444138022793404074434253990048563769719460809151092049691190169039662363530266995631252473428069775637106230818487238776542720055980139453268409700742024590125090132074883244477890711184650452925458030696554860372781498521674854993765580922624889521550420603653936988912762072792411802233318957366965642277406919989467440728236565355673624969793042479026547625462753427396467431170044295397290859772408334369101613960549278106208423241605660015592014474301465405302129309492377375710408128337773055763526641777439422028211588640793050548234113490373626741556167298939285754919296347044729469099555604547418756820501665773431051521393130433124399123195077928050365661381315031018226979362413796810466859819250959240937777019211896665071651775933177617707482631889400828163239253896793830144151723238003941255399646136475036873826738446226603291528155600700241022671910896856754456161598556958176820125942054400994159020955922459651018751886262657023747590317424045523929217439053831411947352937978617041631809775256422065045654859678709653852150779392965820742244437208979940145604931787953010509679429702775800399784511681768420623350841041333198328131541528185816906947369041254654130078097700478387303957458963553918107543299307886833314117063484709789796433846712632984804098212186194981252688398438834117936116627321499184042472561840488241342106252965252675319407551712391774200121636743701831894244158837575403851056383336930849911266710127442484772113919322963345187247416623352836944419381214161046292734179967376958198795378465672259208095463014394696496445882696015043958419629177354612917657210157551395498679533045158098636873662200956333986530499490337393202027796021091259153183898452532969413021575133905505404506023028714359312807407172746508266076736129476495353907572550178135191751253598364813640376854986751851391845462963959631031173578438997827352010868852457042644422513522765037003629309646177143883778771205890806806264135510577406685149428360821196963070994947765751663715358331747215564650831841792856484037160843746687724238597265000523968529243646813599384618475859688992370978400863951996666425729636234369536535015411272573443777253233329384751472425054283382113981805352595860411239015528430425584047289245069588079781542131954432145878820352513754379977050600302757598833422637852089081612874492060753346638333739052148322291599138345385213207576487461221183958634070580541561741200379486716379539655881047310962007526033000394604868237831082822439866101077395250987997830034185550503712010717618279381273302249724786337592543341756136685337624486437833441270494409190955503426895642263689471094690984590773656700611304712949012249568189623203129196911548461165229814414095197578059141787819440096997189982427567027068675231463118521551238238348383855937043064613575076023365576667851740359605955854100565017898228531316913867889955115587039206737827153651681814073078159849597252480306897013178639771995781220443346255210752870993522695614549611464004825434766262286157950207514826689980682586606822448727187796756114461027757083127629893348231567129665005744949319305089310927977964451266432814811784026056100226892115104445817522582649347274563475915330873933669878720917419698444868393979033737242725298964222911348952124651280649690371776190379594080750627186321935025884804731149132703464463760782812743344146650232563360411013740504798923578447924782889806822081639551559853001168139441739151199722358160212778030623690844515895630420468449644616179319796894841220850869143124466645103085938234801373701920844617100006997398072535688861682398668284809377893864985249381919085931223455625855439873263145451821080258351208200331718041498196046023968457046316943223837856600856505992598896600664006274807472678742434504468937295135533411491620440562353743443915672042875557291103126466133314214686444709503661293446966009336557622731829420591934966606685518228384913724352059845434203533597658043166330768527930734070796841039639836923933065429980954053119555447784315181434291105293208662098455118446119741413516112810614738443217674096358586967294731053793625179525119985739282603949052699597209205007790184707401139824345515017514656875521903850017255801592841754494894239773847490831828092358358217491601199766602411957830247811287023628531961846301406733979063831433834354182205056003566754616113773822666521086323670057424083877604528131036066124162845637968337741950214608091575141524313739357031080278003759620137181311401530183053571766308796818350040687685138532817389264841861551477402096286044378939404111851006413038047408904922400815476022336559574714200967003860781278969820458057438685876510486594266465745780624223341214411868201628827165098708847516973740804877143786191412759809801586584870501947081999264929668520946165638185136988300289814859527365433863298890577965997649952116303943801692398241774562106357633358581103649676167897608184994003905947052786769803897767615585141946555437436086955114505533079748924497557239000364494676808857218306383559228005238165652422434501963732951837640201276892847421901885752502766491712196055542806059537495699553997617066688095050438108305048087659937069683097694551051573009049621514917008759663361949775116947452192945083435077130994944031284685424443670484137904706293916378244580511775428423566772143613416459908231461513263901754584403226815488840001638748946163225665071066055545002249292533174888869466126527902763594588609958992206869227317590829303905652345582283327611790276573471161429110828355350521426121219960386657111589734935153859400690829463066259637890426487289593555636621186293711282081540985592747952055736687430759749941559769667108589313941530907937569676157270399303725502770815885591664469749864706616228748137594303020422508083505767837767786557235224290796552960551569578984956695408560361450977767364519647077669412778536729369271093218771282258406425747810611181517211674927866328421479662411894692830439882891961405358679011463783822077716183422057335762532835153811967816250048065077824616909891466842924623741672307398572012024068792108782954017381366253072453032285145718738279797352042443644814213716996709171967835766554900809048291212203804073862440568933037984416885801021077215933369681603985098397370329819394186581510627138707931328989643964498694251376677169411786167427438129950893421162737735244827687821898655385430094948308347675345702184967171406156628311046860378024307051326178535099775670203108334672234052995477608601789307810841428325502428199775991841872656106953125732635759266026240770888075237416908140810030269648687608784213327649273442544642215219289797851003074247876928862590383750799644133173453160683356512721730695671767505016027413856600176700578850771647004596573350859017429756130351068393610220827391728021636845605888020052286581321313233276977869234000622955120818275368067364371080877215258391332124172690542549702956176009745194840763610715542738183478599861527986136904385507676900305979793705238415519134986245317886234726616351186800721658583579008844267338813526375103386100567911851256659714153831465853057910652896128347040192774975829393927921567960054039455943764620511531523859305491334848778799858063431794887653430665753216917893703232579298917041923592111637241509472082148948828477786185902175243743151181499430698692704599069112802235272898863458858315911813479479362934010289548762820896486643832369440521619389713919771683831938948523907334284874988580717192509237471149398612818464116917695283503042780634568682973255418301401770229219327782463674176749112346525872651218916946757829530941072779320509993944930524729810844822157645867748548146820511737263605292144401322143241484050313633022427304433034184238990404746256115270702670189224675966172734829065257325758184116093069216800579525358362952823399768895028753423387960080422805962357329320673971663215076201387080314650825540961158886516745077822537015363372010170295270893632360595377512842060522205678488728342529668451470863913614165429071758865048330861370263989836942185508354417498387063159206884636298221488835067053398825604903502466324430634607242923903163312858185402731118027045050337984438179955107420591858135964016627760068297074136526197789977761349337509346889735506779627097661298840655328982409497460299991984233821010784491318650588967429127131968077358891589150308028525411907585030458238064357767668816537112313136424926598199653000930423092876866064103701696928392780543382161532743714638151631393079795344575555190142115915688636489058413304196614662520237731139287363926200399960796765684523367162351403612850641905658317297549384954972195162875918364045937108220730661330061904733700878721199309236179537614299532192259305776642019867223519897033132189637709949842002828929554822540416101368896105778037918559648733190612792324072496951484443593253263461781665518861150413596939332818306190138999206289506732657770507776903032804577818834027987169026655258855988062721807666074778916791665397423797966664205979025144156880884302151145653653218454541315850333823323952242681180528797024835983494594141340951995750572171068383990231699949945417668128186799824352029188430638002253286874604111001442492385040946947304032931572199068648251998580369195235515770772173956806367865482975486187849285795206855225516501636748554649906622577756652475096241948900720866239022395382349299629136559092144684060034259356499350695819414238645551036424894965019654257879518899693062407639822648044165670760264740685553548583267099180167015859396465343107508607943855956772641475402834929154461980195933991027495239520072695614569719576722882648323232740090773750866381921343926179455220769880489034533794093022363533081825701943724341769404682600295329470822089730236116570319522642839177040600456287744814480659094717418726928701413944497036790183674690115121602405825644749780103876217985264532665654999969177203470054966968549438317556274241025005719870189406075622800874565312377785582460436429034364962230210598326207832841945271486643001568822692684673962080404349068916765869547621793850584580176640291708980290094972777070849177530529092794412317556086463396772296589877200499318244181637486885821006734837149526910140838330613957006949022237570905750168300120870376166399905845598293477738178981074764790154279581304603200326517577594495033237823812099481496210828995430678767130598806463391895592364512635637804381554957557554157815887089336758460411397673346533040912574132880037492950378204922707212954839404280487963528529525303923761136545177641515300108622658026694864126804452377118026530026555488502536126864195513126757330816851597788533253272523232855751885966624147887460177167380860244658962790761176090886333595821491371399611691721740480725324196609138319602325631097490570373697894822588621449098365090149202268861469468451082217469438281705488879322547861405632262055793920423271650423395034247256569846133947890572954416786926827487803749644139783131705630370659125971514009973359385197879574710825451387915269859948798764938049847055764824353545276169889491700435423512989249945112994684051353397186637833891246031984231162493141963735485101300002639307059748965343666596984898742351808291300949257508559125203977119959328522832206727541249906970379666188794257773360964644380506083734927168367995699421453069190946068297431088844696892953671101650021249895391821642754480221571002068839002257822520537450672099026325902853428071679789187426163946550270857885743498030664951583390025571896561736649298061535197996244549145871028631001509031555857698117655782355416881219963897553341346356214975920587949758207281016437935370507998267988952149476359382279272066540404390818255148085586512412596156493188737745809218559659311053962972141570971359785251604275624993968333995332928677567862965225952588155761225353254987118438305212152151676660693651250321773597544550235142918009735502612989928342077161252470109799538789937304605227455732679871207561795458614107868143366915584969503171447423618269420581492103585627547465158168811345979470113552584392977937877389336578399935518503988551237523851090951038763093620843818057926167809414801568611204844047524396792269906581349423309013200805443836943819521583028418703778513247296736231614941307255784030982401679730653431326861357308865394847808383201527899626494818191671891407661606939710444967654266444274653432430444310603861148667999780251654627568692426810823709032217608941021678547063798607056961096505846332972992608189379740965268879733611185798131755114511294945735674252588463224858956302024138658531282044317236187371000668167934515299251298765233647848706009706096769467615438403340328415401614458681522384839709290088727515689490136572820191813306838978730253515159212816390521366699988854447556896570611905306691978516087591323332457606796041746202496473626794471241496850261327879607432303509961735146095522919076911700575807824561208309964811421608394894844173786518128737551289786199943352293373776274933743286465331178540175696655011629861421416429366867071546806147572152185931050904267356292040101052066372833704428131694507141387181274420401146362800151924981255455899626640910906306751822714712585762741575720274251821714091262893766508560948823278644615020687469139321935077079613024353723602853532856984011419625450316439979133927223823385291739279719333644295731033247089788752708366913413222883667506895207307399475626453745153133337239566201372901578592731621842384202008316931591621451725412664784307188147915890772544920275697001922519067038494159143372702437130867459252904189645035553045446182661520285793772254948187409187930425050043398322685666163069233750247222582052787352842391126360482467098935723670759736503149425245309709808967822532756679212414854574027698562476461265341797601779992866402494023223883948460728499802725778383913981015407205743045028457687577571624921306176528675675011582105032211248457763594756666953785728624824784222570994845680153120845955901199413396954452123929299919400422257057850167432057210096602984760611533634409613422313914872387829105672514805669584389494124131264893412941596663041385419358832560087209849321572004332937256270887461225918379098721601578172189974375773492252695711449780701476593578773574402244974926225780636451139012304766896318446520237826474302678351312738861001362499557286935030481525888904032527772130261150092757583199471832675563709417296543773365441062317644277359479576664327789635016722122270631340713055136414920387609270160509559499854678589293382472627975908355112287506344646716496709702191390452741976349923687903614335181908665270343021583137155869982601462539073168188723071280494193106853520682136126326864520744263264934937548542989243640905400557627827670971336727342354350837353662461948985862244404211901900442613923656730354164234992275296720884677859207352560072927415256909030120865337060008079551277108392426043781836792937093989844121995413305266563502697911783075698721402425970263788427623823872816823509002049435690135393474084457518073793511764743065391360442917313556746923700120298098913796742455328919400578489097458255571595890262254654034690134958415023188010280213231818128271028965868824177020831607199912905205411041745537910453944987347732915118005814311620767525823613338583502580585801362644820126033896311104859848630680660435409842895661576039705498123016092125356665396238769123560058407463536751084467315511775379690518231210903697742344300719977031071258140613516527215898262517408372497707996094103890837546511273032744115028387273145873093938128762931204422041778898881607315978530060213769631205012433391280288426904503936427076753580818910530932279142718007726714478643614730085169054253360149120323201512802623900608509949353139531447612389105181907590115323039519805743257408366615011176358414199336025498532746378497728046838321046437909769295365602529616513586373987685784616952353011689931049336027936670671051428919549305602939238188468996212154131660406433980542693731240931198652810770190712540076088230331584133782518491019271071783936206182990995473284487451225951945634324002330595031126762801795910637193986595871139787601709287000256593031440510522066147943262782530599790245260743862346857683524140725930943873750437038126460071780624209540160098928972306811105117366083639598083367026869386032897196942693428891440971610239496449957086887880003256637531956434946195587018262549387925193429230395822234407674234041188216475894109766514558780934933234345651359572106332448301612016193951876021614907229822916749361999738453401713813191302733240640322396401846548925450765820166231882107087323872942741026270253162932629411130227658181663450090562279988817884513237079575447042655849835360941823185444064696881522787748556060383397190012419981748875107629391896779735190754065377921076731457035737753252017377482716382682614440986907067916969335878446672158826392378276719033892273941386615190180242596130801256779765871767251893903403821065347401898149504791874696116147433793819061270798359847411908260190908889605665096335359285301373109950214494415057450128578489510998860249542452873270083510494083992884577577521324709674497512928057099786258776456078353010198703725854671114499401582310804988922341246666484345355644882156804839656896820455976205982857726379175668738765803928600907545885422330747103937973365472901393199361361061109019004980126627495024819744794008041720122555333318540685956648341191058452972747049783236420686003960824397387442945900017249845102252550991701258518354825047479466748961909407128118920978249449602459074608146413648289185727570224565033747467285159980235787778528600823552721422796106691391731162073564453801216933176705390499490466619993426555199300121528851447058052956014900275729927582219369630474292179761112247891121787730874781860001772842644113223016335690670362520500797182005023862111078696748068489522460838774227764902517820263482907108942491203404644222917174683111303389672064615752101114943894709468249568126798096150658014274399907931820949921858331031166614739779250809978198269096871033739095383832639200136438508250383393909079033945290003599201682317268797447807193133675206333543333538586558376879955712284036409396822033720150943658152532134584836687618461263310871354150684692139147141995024287956925883375329444348077114874665347559348087538751972628186036237358973820056682447962562634831984686783720217913851071816894633097440648228893041347964672882994930236808478009761684208065903590898201113434962998596757706599737786012212467297346418338618949502839856508558692120721813639777387296912543654212860064580744805359620237075057476278661679929737443847679574814711935987639416723531042013264802342187427088514416051757173141029398599138155235971249863819621926409914357671265016886395987992103463722065685148515073911883024175026717418689104153119528909968957173601383434022152415984162082023841832290075422398790392317294191043421325756075885466527866348140239603201310801019333179922966341852282506880739665211762811342499118518333334149792781341035673910242648266142539715860541204004616526787802503266331898152823332691815001743488875648890242012236822624283481154594557494411314084675882678776918922223603671957687796532226478175108469672955046704939316018576623998650605169555157327211611642122870248216993216876671231293377322483765499019871412980898771409957119822195213981593418893311497744950853701916365106329719106059463101522676402911824486980721646563749708954032965471216196757277321621297855856533338328301107313318863242147644022416490131526155214643111031958849321292637488588394130701893113651263531109911693800436782993285955212922875767606520962627641517183755262756495318065407702889013390438837975254011722817158820580420697992897609314868679221144591277328432219204706515856870565000996229096216430242190042564966025706524553855297507930574938999148083235638421624814049006115930519153838692509433605430292859405842374233141485290013593280532379285073480971335388290216313762028265707731571373070833770494849936743991764878409551065889556220793694993540887696919455228909045789923160129998067821719900576935406650985456859234658985389224956689147419667555535584910555157605027730493372447345899578895030509816744824336413810056384644726098881515129260962425321063477043059197151983975856159225209613392013537912927240014993969601869270952218852719072112951972536271385681965780871584072849956499429956562360802762936098308203630272175246409483033691836486472009305738606400955649528120430931925419812037549225320541389354970707724966336052958928785240312547699869572735011243775978921923373726271863318199428854356299325129229864836757208135888900720365180829423961719148450258627801807084896674155279030242726422229716623077868565190668837759055811629352175931141560498155013201643155895975137699526524676384714154939116529937710094393296240549369617857378845661182318744441030335723393641617287183782927076642211502922905618787357277983280017821371825942763918725080344839332893791633570907279894178141728541190616235485411427985478375359989221020688136527318513611189016716698768557553052265928522806738905721362838410657191291790529749637296319128213436132426716994808992628508779535950066183827434375889663290718337744347551562649361841627278995289622107462852233406154071796228813402744640134008730819677849301032799694359660302020009589433763510165303771597571875946456686118359259247767381005776843045516388408842253863365775858203575604090730522695242309153979997269910150608035581181548535640904357284106454162472972856382390380559331310609891960862049207256319633690044758257013984411397504059057219491307938244263137632181665908689196977855744000553543063552543397104704150427799399033306383556833098744204154658560148010902184404673440256654100071622188879674712116869836703729404535616019401376656261305556299106620714556479252760676835998892528056226133119076528820951922338779456820754379682263854485964579160289149618590634603993303064986634659618459392476435305762446310465070368592466728699087686886937500129299645524736208125306467791694038357472667153606067457747747736803620992545208428201506694180958679916417796386670030472943697272648422081873206857978397782982763378065868413296281348978489356134777919853562855543637824282752886794499825504745009651099641098557371033351640072753736555167101887965999351978112344444500398482516359417443161999291167696974642237500650113098657440431153185559958106931645295415238217634673500026153949837068904604487625778775524258976293593985443922352237881417509783018952345376527740656503464332453546322774174642721284345850494813851500344118476159442752469419803222301477881341319508062174151252023096830803102720440610902015000536309760844600831375719366680221247878864686298288922152975713600350348724443233296102965861000507588818312239351608418122331044642178525793594073630686379088538772751842086293712915792158554293380582306279609934172033682045871644292523619464505579533634870156003362763725922609046886623209586837008147910651350832499875838064421441287761087772935571330065526252290427124573812977766636253312421065014421891620844689621306911219969476382542800061242118176076232883988811655691052753542320371269203334169704504920649918253784825088237224059759675926751411027820592463011448359579790304776970235702915823614909473386592737081406781067181560524242975932854277871724912853778062151188559941673971561715148742555708842195275318076150321327325501895653261686219947382646257405960809128333878539468459726094272611776699580577296570631094224457902444471943134633934105533410647766406302100080434142368733833976530300072147724881628307601654420422495715141204657541867543750574352737562752113202488154462030515916681245909780727027687161788222696157045915189181821681916373876844733173547855534584487826464009996277897293728476531610075667283447345964492992704388314931108853962189714727237985226391092800539912274598849909137340880897759488394042020781112450820825828490686114822593110148371382032124920773318496777773775552154919703450795530105512797097156043203195827459382868869571821661897726683515400701129881671343670623074419529163048755562492945290880712416168668415232298182932384584413232092174850068481736491183462417615189216181180091041429662351298430829398106795897238669868078997602961451378453517249694143039919946388039886956647036017885386228146480284973279852613873038532179654680706290260908913937948430726766360325094569156464136238922533155884913551576338333675285262023457254086546483233770126908017723001819380590467778505493422865988387363969540377365645206739318101911591301808410036688834349672967302700990856635984280513328842328929009939768266424599925742776590050186781047239715133310695867371591447183550422834822342114792862080349014079749656801916410669420241244222017013876848019877585008163429336696646942407291998126431377402303546922284223031320431632859184139218931842190256598770941045413006333191011041627991171026698467325852207121702078700144791453592035198967630726367449656170532062743440571177770476512553779765586171831429242347912203141166635625430051466877350817950095630404432453892734839956978123236846307534529112876790556520452215261971521618829973453913929387430494979043907093905706636429565244027293012589958276211804311551419571317365673800595907553707036453653517925265824504119120155818051650549240950290016349548899240270828309812052315582073350850566520940513082269750359464930561631811395537992700529258627064922973216749692581337011287488571486315753354007770849786826364975636645250243968244241665787477625315513998501807372854321715214958164986026477176262057900268767270119186795752701091395141687018116732528682224225531451734155276423966920773508629798977795781401914630366802954557721172665732869369920519494982021605675767096391198657146559785984751251366235006703077587799336953601834934678206441587127889386185872630688372578790128443819074839548976312982459936052237161674290142912931272273967624332434063334068325252437113021512837233115704147558315455303958314239478426629088527770590375026149335665466459903683420830958280457305709771962085694326160589499020567687042284900734078759013422053027293251269370175899107555009382670144745355143023136935608550275269723573930239503923675408272485556725216662707834562947276638468762845923833127924136756984910246039009282972247470941909967006386120110217882795419609959139058262475131980553098108805721513210136543383334458405190211586984214991274032428682741666557208946960158802527125939626911566775499805156007530619241940750069086967200532032323709467680892303920093191350868283328580907300199194589898520361747790186263418201440060798084612534581667196191105201977206295452139252187249977276705626687146261815429403439675778652965570804891842090461700565619958666937228656004698020056152969599138911473000797125358743938556691011069973848604336210895357223384217188957571696601705270285426122765953911961410049471431445545791746038450472627401425504306857142759601787023289868184464524790942517313776546546032343781362269919148304935112160896036174302849732882521770378069886696365498404287558511381465379502003724952385513642480355596935698386477267306480870266654857774524725692537744848410465269623566500391294056903801451263785531595064922901674225537407710200938552135323188743021577144067403905188402385624938927890780238662832272014539093253363726096766638614648807007573843291239641950753160427584404006867030858720649137451930809334270623074276038093517524338048370405469524397962571232887945253993742106325125907735096216861612172016322063681900088918380628197839828955868181424143861493084369033054491349694638938919169100024857301385298053074901432645287307741489077361926546695161475576699091070528423012713229826309909988658947488156341854852493946894099193243297818968325302241406096718111882002411391183055567912538945812700377481856058980406665158347223243370624911317557470588905307107667481316787578172017867812435867647713301746603578605505014185575000866948478728636164919361089930672429672664364463833951508863957751057151879319498688781032499103791888858214715274579617375450630361688774648533671102980642918420001989372411408752122584644480088072168111609578063460105356143914232320897000054722542082178365514715923546093720528477316682870447405610994230235459875144381697047561918614207955082150828153853071115381782316803957051893841536753583494465962701712222505904449815129132316408013408961581451932009220039520519180608103014942538872988260438001894639084951225641568958312206514904498660254373535288355849757089487374576268738250050505088255849233437834355340328848868654502352546412306269079149000882392406230752414015197214920435883028428300568725144429524784790401899479618912034423151611201429127425277362675561807027210915440409865973758860194062746705753221957077167758889603588068830216675211295644206165910478961647201597165550570383816159957582161163139518879634419383694037430893865598492727617077959429367159346329134181529123786372703438044458655045988947605737872351500769825030424814318803892936369299065550586968217794753868700843365622960987113792616491413496231250276480045539948019421214030413144634510096580851961630186126592289215473373878290810504279745038154559457505564819076174744949336409000609085001326297796797535914491432370628873076998433039401215139839269831278611448108280145559081649624634484329528664409371914585326947479979915187616911329855533668780659350544778505854446696174311638212436331618126805345034167137831321075185739351897789352242445874854311757939779928623182172381499696870223503907326585904114436848144190542426998704288458505332349634778226821045367780334682200632015025749388323226014177136662367377875183154926390964134611432649044616080880791203390084551134800715984808320991983717988337693203203724378315180212491476814847804247333582244866569888961997155793831411397447995918122440618244877813827945959909895700387198104122566345598343062785684983558332949202173315508709029382152841932118382827633214261035589857055769897359677176370678698350191656174161025439539290222466125887448187481118228855267715799947993301000384768139774222693725079546340023234379461451248517483384982260289678759924102628353068837006485320521424866032032179180220762369180515236633148722493590432705016720668109607452475365647738478069268420823337857877123912760484838128464827226835609117812901613803778807493855022408635218438581156917210803612006772605854309541320975343752231172369194536854217669933256218278035131242047195935828478766218606085664539873401798124171929045434398640395253128408076561949340403914788409299991024028857716910549191888346674956725823602106303734945330584423876342928412870481149622546494283089637640676171248986482421311669587082613915754015200603374065822445907131178333232401875803881451907035326894132244210574343059173831008788910587845063320577784814287394743978810748476838526770351061512538713179097855133802361525948749110337300489993155454039699204208507912987299411914670018046533446037642338024304708385276554296551536900474098198846699394251808298014825858702790124580452930490193004057520778278266509787703394822124558786043169511927733448850388986655164567104897345169045942481520811827904203204801610466042165609203414640001991079822342363247794772415853772674344712691894531535649832870032487340109069483873893125678752052860324209426695717764111876493731767127657147651530836223758248071219747075348680986335074003644741730159338419757337798883559547897239474733496720883662651608436966087132526616971348703743634981881655335284741114073476270617089325537893650349605006277580842592485099532937676379450992146289873584700063725956597843020743190508139268754470377067043899094810750551694930562462370921579075260088919877848504198040452369031239359405818457819216387085781559626665879240706328683288746016375735075363172119950196672936262697401647752332541042737316597918612257488908579333273210167326525583141986275341387938954604339092773995197558115910282419586610982950023220260726739404331539779140198564124764807299233594048430198395954847639350907126272047666882480154923399237522800768140705936052876803796410905249114126337439954799725474854381339043322648259403169734272541241136204662661544907700229206210606987132832112462359466614639439211014092260246757989971203308679486792696936855742184165719551575718594378225174158713968111860677763985731186224408799074058251845516616061405175024285807061653412362649156108786163951869743506478795011989036354930388404951671672315351061682870798918298641719895837279650420075577382995645480784198354462019220784147778797498554054743926754491645271098783289178251561523357777039945627572776596846202936029920411394804937840891271923698007653773993875871082308572887895195633251765831227364440950032156942119891108901247034429698297933480832044734947060744073763497083370126192934964470684659028598404569809503866131637168058635779229558265280814011286947060566930985896304728491203518009067772850341322128668669009772837829333107850749542183594104631069885651781060079395667576024078980828766609385662381565708703161905757795144357769362356788889654723674179233802814119597546621417863668135290784367266498613268379251232714713280219554735357872245609718012492182206207807630193945780038373143860532076378311480277555876549650903698935367688152547273916671241702374641116028025028197983674472724795757627269310954074945040364478204035303650691080275432354771873267970613559585944038721283005870823455760869441153649335983320198398905430507710912634326405326115875815393498415724765560239667404971299737249107305199455114981088071828237724686094839590678624021572720514461814178027548470741694905967793015691180546130510267638450539671296458443005271329496350010140846562995049193174333256806559745601609096956515813628920084982741095090149995426180303422017221581119856782282611355464543219480617055143752715170369220327133864612887536346978232667698051385528244476322963967999702977189182338017510093987778102763245038327280863500680935614324359124266939559008475320413162047642181200377288541655680813768250559396855667168723708322293495185309486332832027825253041896912116804156382201738810623579666043087237838826773724630102850459367329065205599706611822793872991731814328511942011018277900831540490149744999959580675138115904352291508431712002243964676389491773392293849570794640832289928357706841706487502244635747670905166173770850214915538075884181821725985301626611021277491225083936089463250067610172634020393406779488979123680329724347719792810818728387245600520056433684860356619721725962786863830202375828262454326505865638714936143842022655874165573569025826807234576706285921394257679558745292111489795383767191870929712248347594357101435245130289078725117267857704911211371660145155950297412150111170571690023794305193870862153100144856682548846475178778653001270729984715034966712726544955847717570537376077756693044132831477006676970814615866022916650607383589476672618303139750944399933497948241402947513152935689548555264152834980898758072034830019745493392138096047537271375076494816474152598667103323549792123861876709044887428359265548203658528497829884437444259798708153877886424910980111398981185765184148320292439505041942335154058963335466270558540825431909881260846628128312828584538951129631573562499051848880814236295898902569097484286810799860819840725431792065152865072420295156526551791803579274435342110468015001917963050213790762986206423482733363874634963881039885462641412701617113480741194252899484841951191414848464020651737594732706220060069731140460936722735288349486145588645939083914207425180350079029757326803612541865719800830320403528053164058912714036670496679271211942904983010096732597421870300317454002326371247221545354028453351782270149061920784502774860111416171314249240505084341194026991317945246996975598669422157287850480806530188511709457165977484682103033815164944178725248174992254452881629892753602427844056002080508446102525841641318008836403080096767488118021206872900821380758294638863855412513309771073815028057960213462240455899279047305386586082886625018540802497105788388318080892337538939099186693647252567408782718290975968547370724068769963781071697910747480433747140031180972618456746655816101628345333938689869684609648756686324780744688746274838262234291894401847113418086789601861313709070092006013487758638834233213475066526789204392584931275612860067410207104514920622908936051230717044756920372575369310044122653494288236529879863598170180793089991070219683319382026570497896148243688011969067398191698523311209975887005101650570586045648716992427048809422719499389735619441620396188869041499415281775299277742723613733202192574327181940285258793173380458886905319971991208295940882722595012975240927271800358162649859838035473283848810269421664378290301386248519403025150286996504736161026757249190568415896999552599741156953470465803285222784200481908406434919313365294659081100633498046766138313590165457842966251247722495417127255971498682033261730550752023714206715349932192502709462870989863358571557202203992630808908046101568424821123500849209211552089609337600211112011008768883535041510988115100461513516652969430927808083290367720108767893064470499015103603040984177043437832081670469092688210030307519039581222944410694432416506832068839801610143058350569586223234156653929851975001519580830486703808480944274325026007221870803697163059599127236787938017123325620183025442042129597015295010125086541394598273337094688225820065365870868717104604990566679212645838579144221873479139594707256495092804104811006452084130301844062077973396761262492519183600906427253683300041936085232917510918176053696886946557150382405036739264820404887068233647027051828804951765802011784928507042799723766762273573959943736264578032919617961267231711830436476778553498157969267131965744761161701720085912215947822139500354282209262130180010479719053142070041942364266191076399828706169338131319470342457796653322485651606852897057780179555244498917552610218835540990031323646546625408012503821024022146432083308479803637189004799764562425740711205241059650694141285968297868493902697469341662550051438333087170425333403802622423903953118119662450354336720881526897103093672580888893720951778616905305106031193976039464215994835885982217871562458247652131453461287921584444653230410236053275921844126608429755029205192656965128287761430245144051791694801934558006929578760081248237449205164159197548075776569394782168703936945674469397187063384829684010247593120664871553658298460136558476997536548325426908537386853866723108746827278254649082061842335787013791677135729239969408503329959840599407560567655617410303640438447744589373354471261714448510021348612894159480063149050613963981728709233612688965720291566042183361470284042433729036261955277572541062064094395037167176143421615025772537827115553003070011095362436529722323798210185544997769486420494330925346299841683717482621112504548098937010638707247579490174663599409448515864770630944857508510210325379620430898666199048709548971939777505593856410711330636258534430406524185938430656720493514211769407020305638076867314875478513834901279120422850514582145151568892469075620896143247793415539181436456873133988004202258430393060314458446420331600503543423706641752446818727720177982826900715691212480606826615044787968628245222399010581287276226199545430898852156215270358749697752580777782006578375532371424303376921851938923709739393398702648063168207078229314158077268427487145161504035635063409947106920011630839797417233348198001689161966176212094144097991917563114827071172186440750410379162522709615889189804175590499415456944001557921868036217617805674853777016985648140192080272614772234970553220406386290992140782245338354448754364505787124882279878123206460782020016390279208574532647597987619848445149121235289977688960424271720114060703316408877068704618559853154394696710851175253295962523561638928376176602386126487561056943936649597566568382122228115304979414584620481626186060523139355920811476699199800020725854527217187284588027882489766497238498784539451150554585386997219458787215066407714018879442235264516238397121222505769893636877985071333708188597669137147529659940471585281505900853853852758773224876181777725367435796620851601390642118253490617804894805125832438310293408548804501212741002975992848387046345820535860368559182178366357433153723173652886948087818408063025630972608027387078845312393448799361683441998470346883723987216801463051224324658699774234797425109158779330336965772165446983510533736038866936523121937401720851009658970710697357707092184059610712466806213731815335896382565386772852827123541360522618279700379229100860659746714732022001851444463874979439163394778781272367183284893632804696068924056252966064810722481335677505827138102029251483883431637431895328342589524165055313117163346082724854460392899606025860765438481835580182638635823659589419243022471119607016975913469708829378931456349658614989300421811520292643587169970687961108744055829768068244557417070106861758761800746039696247703864865932319948529815982422643385477402562235781983888830022186987635266066340546667435654752680367506507444243119014309183945482939297623139765361572549921942226110741491150332100509984143627100827719013117016801798365689432700991089689884656226126716071922052435642417880706464455600042801569980303884896408457465388346704958631049781515651781734406057952731698759017420152062649145775978490770773104119355274207714350819237371084761657853178615130851127996484740122342651717264467735161949550909329653438102786927497594184063018229559926174769531759989574682769387377286593049350421789835848259028448605124788611912064133284903642451530414239349798315718006470452183355874055794827991661048663357298487798941266298362850464292992535812239576643697073204506948562208176010671809407045646295814057226646964021360253424399951735666556460258317358246555559169694034620227940296456005238739457280890624677243827471741984928844667385966560147873244960246797516358553403753003691968692534417141024405483649460730933189562270832407390401844611109811357944485251319147834165720859541092348297592216328176618617481425604908375182562722072229583372257929882118802512263706723598026127671297855398877734202938542752354518752521510759258604716356710270368053015370300285374301351319001559344964707713911282226843360410450974899059049425256220503376501084142852369315692459124564071560574709955477661367610571108967741104660344407114224231500580260447770801138569872728200857336823177619479646014115309742677316915267328238935323479423812137417369785721012823296628780369287955367703259495168009616380563048111821971052256989464587542416911599607177222275804911585327304088892860660237159273038551767569942349474530491159169465391349579970323705080730734313270504083303556639762079026096938051434023056482877819088303567110879266005267084602597217264705321062789007108614089388573435495674622583093974289344148670000021387007236802876437886449837671225661447934767791773842090786436938599974798281745672975289171068330264411805301276761591989867259100929823632109535557323463704300823028657092770189678752246985513590395581969105643424044864109337679765485330840451614418844017979885963080767165739997649172656895107683586491591735689159340586327044975709033008599018271954163879771750257096700971767429017500127264671908683272464933506072717341744891882747066719262260371992390949955019464160647881225282332282948102511442441734636418259649856290765819998402736286202889409994087259342820784004768115073703268327451072776751794844315538188708012036192983993005653395152835832164215085135727432460299565978900219629396842401952588229128600331179353660035690792479585283370901488923991629035974405430427263247965253382281518022184498864281148774553504934484268364117489646758475448720390921723512201587332852685252001613610031965514504209236610592796283565849195854070930576507595898668707200460841930498701586125222907196304195619554836237953723923701892968244242502234677952442679650852225701807432811662515734780501642809620920082823085671029599577145354915903990766538851962068685858219626902065556410992856005242425284251139693195233312203261237591249574804133915209764136687580205422394117517813647159807855087826684657745555551917774389877239162999092280829927362271287264012598125614202041529601409232343836057410671546231787673403912493246465972358042818349172039116911773490835689506894980374207100977020860252845226524192600687669308026674949285532805630924451569069489186765324093797267375620753256391307572311947883019433910524760536095233972518673021040687778405055201684611189450830899034893641806278648986758722132448963355432372852055717967797783607784251180310734846426570525694140248834977789616824701753025084575847342741049114811488320611808520912569510449233685454775562613210867509776227848554233612949269610229337322626180248537522378673749028173408022190673228054601498149612724946475198552579864796973063726521116117013417885018428277592226552341529688745978649648399511045725536962685284191750141609862360284069260637517413722134654316683822813056449514050111234583628424383329716461116008995888446319028377391699735225945112074075509387693239924421062324440145496769972297894504073584455882419100134174734704265300112202358614315136965605230870432394697216881266343498343900477962618287068127641351551302200083862201728966899929631423072725473210203533143337159238403626813407944292406661843577309662890024457385321712914119205043003644900531865470997828131569749687451955943084480332239390272832023043903333174988700099804761572683526511543378749493634218419267282948208362343908618287392228071003200135622490842112412068547017690415228558147892470197170804041114154734828198347905596423229791836227473990578878237723376873443930045820459170907889864617956337731636755199346300740684301863118014067875713263752751567331421915132789085291597110615969210204117673010429911969354159543237999932708433265259607390449212167015154955188009618630680433490238149653770876964458654154878544792707089836442957208914844311823018870050019884351678365829879152339701632574757117319186563566051252295470200248742477035039488556120280769555353041978984954947596746693329278559610657875377689301075724280918024914956145632640846230951174312585199608052735402825042966512033096058102398963534434818139662190131427334979466855549352114753770552603604971944799837354933518681986380229801494892223193990550537165943072819444529854454632332333028553890572196469067266207585302324720159322888351609694417197806817856726022823623704665654600214631202560101318824793969670132715052936272714460221639270878587178688373015608445779640379077375986326885723545548282654407916020277196974422355447632265126181570757914743828841002740563617731591330453394347594052853211857642402564265522256312191875758882085747774434500721211187183471366422866469644206752521545519814793727811551313801463377330333299948568144472816051011713461600299401490393844147725906501181979467489749349279875687273776553830749633820047375031577231069567829956797893235750714531137922107382244587519164363225565782216226097637897744098837003795420463119249161236907441821287337712848551514524980569527829986511858353479336117784298122611602497448778767473782922752602124667807950538580264865037032229960685713393747398990906427170253326955771899438480378634350230518044559383289519850201193559585585638507308314755956032822072091905017663874789963290512785533442383161709395773329557116269424380398219895611573970384628810073319277252900521104728876015566680369224406073833344501930429323009637350057516490218329061304548453298458926415440479431476926103861998008321679203693304809565838853139492328625376713014326192091606347878618408226323735677653938263710049257492534675113941588134435622233086209684520092216268940530662274097869915857546416354572663043290951117474484736267023321134197269643481677988041788850330083725838411250187847577901365566813046192874956681902032280738263610890015620341662424080980060254939141830820201805070454892884054650851211086065812337651116790456414121249326973211293303451637206762846720194783465076359020674628355134379002411049212166411773853994288382451856807937756095727756000600984322741123096024612795176553532560136136610844577821652724627451297531979098748449112861751490645193928525238113629897593696294167970932404860987650846449314363256603843964856359821712240599140124243485341564162750043112777766122040498019663426319962051485376263410246322803240315681833147205029598861326831665969304751978924371227654804656141835921808430066605274753746747884292777117358676283911497083290755428501989717776551590983823106690334600201315109498683275293674548177591722995555922028738863174421650557081050975515934357662214024319268899082260772965783207516192959820732105256280281164611579548212089872132767371274844782133478867027520283706800318710008583685825150141426847474424467411776208856776218396437528655092406577483471192452569628660688100464927903929827701563460318481665932558786690106162079223654695101009431436776919207451745973390002935117967268987563122661224622451361843945714204704684313360131858717080568167824227518178517444360841353465507682059555928104964743739234887602554094418129937651432016575996938805957248006400580908931119887357785055349189926463056919192459508444141962841405865826662439285327114607593095701383738553239151189768101333590924740562701836926571226978634909309525339084991396228811640742823137528080658686757577857179928968515435317664966394245926142242780156521817379329400994628015106397704151778389441312963135347076938120347038437234951259410632485217859122282328882730487810532932134014361762783289569938210979559274884946778715916011617640682224407035263273754519021780784201568894626729834675548255028966450557760103915091690321011192828444391337516756528189313174635526903874979063468381995383661206680945158330210054080585521052157457677405703541410671357052638323600375560190723787861943233432237890383625418428504735482456813856417187359430023251800622639292656613220184476837874223569290819896541521149421357799489442335360084858747061720562857686980243792170296783940264034293960480423192669983697679956612553640084881882262927667775959706868273041595645021223271170392797378917683723751544588021654950904836676970423049876670766285975261906852161642670642838911845445811102441517580498897229145948824466026345116601371175778420576384011071976351923454760325295464588922807937608355440034241553105600116394375630547175902331113536505383208919736890679202609054825401751766751275887978335151884615824656981954670943577552014005932795050958934898413773542077361390040402654768211894632407399930741821123155696805292594724848877547014294250916690115264916332337816027264524501831620631734327872198227382088947324452124454371019595641059467906892614882118762380791727283558646176614259681737748911987606610528291576167651239295771016714323577884310063215393928550430701991435769331434139942594248519177705653561822125767678040195678273028919155312405278098035525290610699679096346131180847208667616148183640747144458459726257054705372194688587042337723381186765962789115323600811440628634606433694426995875650574660799969957383536552333979530694938627488243357712993841543392841489674668656520112154303821025094816585857770435060416768348001828446476822343951520827524718155432050666780763094395981178015457614904690414929741854473633194926525318434777949666450115562126570193553564226066996295830785796115194518328252970109093641188136922867726976541437903139399800138214432560382446906170883334840537356437215581944515921233649104101508535572306205187226151882691749051108939522255545786112844210587862807203130972856853208671423324778326316446916504478709409144420643169281549414028992428542471003060044763011343731229143314970721671118062562220977162082911787230781942747612182719878795904083340237125767649599021428904787454553636509236775831345352125157127795100766958852457332219916023126304102841589418507772676377851252897067642027178152171534166936802462863373210625379956875009979849577793776674085089860263235676299551826826900207184605529025306164631102417179441187586682771582859162130627469514586186055919695045228503254433695390973890556262170736996248319169128330325704850082781230274142328808583166277795554137115329419704348778720479409648065258678297262855089937124546607082238839220464523817461583542883742184650722114485859308778604778467356194557318409157218886111758701783398354397068947274827242403941748085473219309574079706793445806517018407598899819932011925944911061578343587506562077673821828151365925253361505366626590473167263880212318728103463710270879639521454702327550854192179063572860339991861282513567458561689295374221157125484011567847672804407586543679035783578390352570092876145551593793245167867743723611977905690902916057754055667053727246858298569385957651668392605364735808239459981104785752203759615007060698153634402745495638235622564003702087675442193249716970803625092756392874492811048719544572260826206999658992643524838663532398657711197765729285015635614068213856523948417281717575874482026359025544604739177892899829620251560793898462305115236394782553723794522712913128191375412640573321634432181213040766446439442413404622715101539294832699085700368231604607857960486212552863656969345109831699353322395777534461997655541807904779594796857589601284653437412196861738742104526793731573765623730915241586056610622805405416142421590829690511714075618356675371039530129544559400311216673768066998000420743249622174443778149953630146206930975461370267455316562716604356321542370313076008762876697447817356794645039930268132610309049854681613091765332078451253398538765995095141780634543656088648816321834438694009543871375191593446672742739921263820696499174194190496478214814511530994339227422105922531523805448229540939367225696883727705311492997021400924854234649946158744168474074424162182289481792926915171595852299967276359844958239358955669333072055880153173313001495334030040560964068471940839568113864666636398299168291815075747223367824737133928715112100033211261779307515677340607138540069824285109578036548587614039246420155186563624995259785218152984237013059930610806243351038619277608894668484532431444435076845066927685557783935587155610112830677247118013563357155781216243790717114253221906805398422717909022129614541492795276320685579227846664276274176310897780456284466016902702006898744046254016077372535260267084192703582444941900214977976034797416841182788492891105458114587909728010476564450563779545364231107023232483895647067544297138624282321719681841615204492364207238028585764544716666688936960225989864040669874799534911726538129752126554717332767266454447636210298392567660469642594237865992882069652301200144314322754108835168607507288812856220561679987530931354039871093424909392142941967470599691251620132734004632144102240936325728534630671788857305113060972036008932020261065837184886104095997174847393364355924146259521504256847656111882156447814924871072929283988091622334457938280143017884601033993854489343755055873963295819730710830053242652762710412731867068039378539703108792526056897097547922002770567018912503577604792143125443798074899933391362457087298893684927604461576270915358769434609866136828984462153522800670117005281953820792576667387509635019309897114197050741155473155450969468343838029053327627777201956688138666824732981332899589256021039374011007246903562751826234340411157414604282978656655141373283157101380966892122137038287804927478597405900634445788837951588652691075154927802781385926806456095800591517360590869883777834069891799589288513959550181900439047448249158786705252269723362827939173579142535247662070178406635248795238540876975658384085296552265278651527782681238695991190645447225119518629314303942584225102039327231056450586274467003142984947094216547839690744772770399535030204347030439373963073328465802544525382552320287105147616008038338961468645919763596299730009417158458371893122580843791336401158055946044924272031461635602996247611667654486309151026055157180831177983675215080013323274516655434808536874980502755451371508228256868843011946487994238806169971690219550783675990339670268743890938829311445819286653542270324394228606796771050873532502301022775233627938300484221158041433137473423855677362893866589724446776411653932762083542912653738051077954640618562343825156197613654454925197892511061908919431007870142460473222652604178901235822471617827230129182746082649965990014385120021035487841811719208020415949832493656628202397761485826115150030770346706884912063688173528428583694036462065009531414853270988708580425253921630239226082520673233167900211767970142226128724172364115501862409132583170649452478135836470307866337452535448238219225779241089608896040024068774337668109895407675620314225556092494202661076154837277595083037232385897949205547810061397118391839143036847967895785351687116186222197804978832690968401241935608482869975174062714038360981412449428004227997444191419165776344621405744070403516819465151954518881290677528251702577204964856218589058631290735882767362584196217052109304773973392811022580238087895553456679000411783316409900507643527419676377039808329789986773999691084931506119746592344575605707909968919745518279422946648105123041001668495145066068618362529007726190589757360171470224183650716298401710146585654889754135854708215505870989409893588075058979169652832358238577165859754494805706002142397275227796190579154336301807539805894227988691698662583528360206786516931025351729715115574670912656814635270893098824118814003443134100644051289760359463555998730697338835868860765486455526430724181821651917585776692564718272462068419771508502040581999981505163472359750981562769145527284882080176300638118831992202763701622086773437512023662581648646717560775484543636045061461088594834422483329163583849894744493999215241948249473409084963197464256838884751119759585752155368881296163802040703282879447810355336946121412576617607542494062207927618311396840486341066565386308330682114279510330865238521479329716838892465318114693882701193504129569248274612420996498751852776433778328833823482234490753415536614662233841600178722209496420441470487133873951792912811792065962671396785447104486484453767555687904357707972957916969395195253419847082186770513654832659895696698274607937594628565924989965468610027149447043474345637098436906375070280824645143618545629964537985769569096368244663435353288906754894235362381568836234225303435606501504368273989831280002313521368591790919879268940959581734377799357279812861246513124539857170497692567024533791350002350882422561083410927008948198105496576173558120727339804501889968530218802741788139957020372880064232997206135036747743270603377360535844259350564553682583276806906026543166291371668415930896834015819930397274832290763448856641086147317289027621623247597263289601590195853464837257458480628257753610497806529694732667993209119959372706238538099090601915239955768072986202499880032566339670320853387681328538834043610270036619042835188729040567804265585395487348045954851125944332461906707948105552537648191178712215982936600758030534602650588586718184085232160233810304237435667883682294258345338540068352010284914534288402873517033328179083059447836427479381345816783005640228631922161233711275310522190387218584774406967291280995847719385706983835770258817716974173374605962214890714918666620954251731967444666410465893043005441772674163816274809147441395832624177129338025521119280019070449673684294377943011855991388607990299800687807135323181417054279430921346322326589620099857854542991335522043261377063502555690951714869631232648781800838831260528016456666549879260028734451196561997157114414219460045941746101781776579371593274580681776147589046722099682640198944557819725968483753516646304681575340992407575567044679103477117404431518223092714527633709234156658881199135512838600913320577395014905414058507190996045256263995656540237456396986777147096392323323364673011238835847018563078570576720093736558779667327696944626753311017340339613733861704608387400864958155837701700790947475634077345572021027488767490424615064915656606004523868564111996209814069340313998159304649526588202787040800134976267344397725913042878084130749219827981713897523122803181493071978243236288925825156889759996296615077755525462169644573344207221168040749335903296987252510734583402284208543742312961718892242072926704183551468751270969989465813417153524817578527827021138684392963485634983623958696200697240201857410251481684229743545350001257412496765279442307556599556792284358867238907003300512788670543751858169485344951937606148141514083588850878606790382965835892582975970388322304818829961283276751850869769405308983783063371700959480052233110503603163793689864836226298520306288204188410950603756822124838141207189977699927629234116655727505911752965635966111695121583485641392419821344756179892194945388425213365077749046040969421758047451676679923175439966129359989090526561108592770183828981699480120732788989785790881640651501669802942157504835791168643381676099853491466639168453302051122626636753416898364274026567545615746794082141586026296205616500383652885559837296684457357617579246384332065553779695557704012639546240064871006774294591568202425665772283394979620048149625640017340126710169154688114177737515090945103283340364808932110919791745193652433250109504220437013503062350205650254163108407240422798640580209579405846759999687531739598475551739955067263278506789846226460249232239165074786286226837427314410610232840490422140699064548680134821636990865684554830364046246726417539829577440563457654042517161753807810677541925057863771580447932869434102632824591452173160486823085905050019418214925122155362463708215477866175636781156850273424026786920045651179095414595803841808880126480750881795521866868311387355449569543283542866683489879037324014007940734358828682605440377293624087046745523103571266741898728848544870857472844608089406265251492409011385520078547283953293861192868240342060081510346763989368080547536706996770561865995930647948851679751312757558045740962065253136743442885472299962906435183946044024659115617564317728624718561058719557838715865397634200874041666441107641131646097168958487277362757790047465452309260397436294638057473081748540641127869830314568246665531270363146928113868421482809856215227016475886704965267426428290046770484037716235952351989270707404274299307038921063785962690781529697805375426528742017681370358234467028375480849736943770247083529401919701705780612470916934178315082260598729796735840722817734589107230923167125124970504973451777010037740718863828116473548749235175209513324529540678268477893289125247005547915343821655825654544129808989656594135237164256809026144233706610799706379280760252550497801734434909018241089302266586933578483304979698417596683364348296282678138626478976209027195582615875373562469112213023229936931765064415434935321351382277436537676708117712753155901104043218774275846109862250732742054458360647289375038788067828990145158744235253095561438267611526873360533293783012563097350790365510909363602890450462160869974376404848394970402345801091944688919759744595237937564202364740372921352705614870630374725851297717260864642171427938840850983139477078181910673519799154229094384090926546864032670060305493776095685653496037258356042764831596963145633050659114417881633284924850644759382776254754775451508951474722279962618472106471730646967695784004743721994307118290220991633109332709955219164128642603702883826184118966212614300044727095013585648329370588642472739828655202030598767435373740519106909300336703589634512323493318856782309659847023680247407211123962470633805385317009585709217933493022972232904043811837994187458361994919326129735408264844699798898032954760777310582264304781089669668771352935827059823947451287555538930739135454036030554386038535857394829815032021040413795979452884450674057017445239947375900281396396264677166851034668896070784546444433009207615245175547016418171215365484338868821603180473321032542102334740934134906797264803028181167181857034483956781127368621357908858483709612864224118797572603668727658781154757994817308046208964611560838061517629943975551979717577092783072269137233357231005423282834023345049556502113807475959139542804578816785261678323548908116613623878000233190869186438280811081409273066140190276628296983355322250524911575796442646293600072656061064750376702046044161650792801391077125561463900874181138994246098040403576919910587686027771836516650734998194664011364016213790014181930173375661435788076246558039984047401974720341123215779673278392387400987411974687323506994067099984076651952174546059809253031215358937968894800286775605069404120040365363905325455147026771883916489075393350241979854058376878176970193506284821378369880039495791576856226058355693149649097897826020593883262078868672158861224440359191388834782221225879304391203883538900715711384548999806873845754731321874612090995054117327797724800452389472443224303456223620525043890959339811834975273855235144678004786752835691389886558782071008522243105104505073166016894739584542145369097581410653801131588120311358618075984588957597701400892825047936941192447442507848906948432134630265399762845969206957369284133643180473933193482290188759398769742569029259604145396282603814053483838169212691473631269289353683428270870036389630165682860276920778625683758946145935130531413206932318374136125654935188021921625753842609639496886330753942294262007304944130742101510151344196762125434587059286872612779558728241107639181855927779341540303050162854003907645610485634949234413546409670878907666194693997725918447218585991116831436588957718453295016402989455703221634657854925237292750177997840387361583636726517224980278161956375557411023482432965970432675718664074305500127092084653575031060211572025315434465542557358516497856173243112868990486469448501087654703478286644208328448847743350114582366200018841362617692623491348433450688316722135799434261920764939488878730526249003345948301034416698456511446880254449998355285872229676387184125963395977877410813390619719010820991317342772565736229155124137497346244918720110900159677787390121115525606970791844605753144786441790322943678775036789291654529331884431962772347717383364507193171622726542575210278219257365198972928222205071068486106063498523475621153483549391568691531109639175181120557112924141133563377011063974762043463404335409818801594293370620089317723094499586911070232624937545055749163092670735388824356195296908959853267047176994535961024132661740354727023238242112303073113986517460656537609160859452593957098415135105579976301819230606116955381222912164080060137504450103331419293665772280068157035485766789700205175053769354336407041299408323011327367440518271965843109782579114146544000236361884467680690894695156431379858781060608109882521233950088923704848619761856124863733513370865915970120046400189883839345868499143628160473637384849795392303393872481495910421857189855507094907340213427252306120978846240826139166086469072134138018964452505592967278568523517690432905494478155561710679042124457014071344266243153072221631307076955988411937695297147040916687789140136960687634053433009051772843272599284110193331604463635319232667165582684880787115857282654997499534339163022984721038722026651548934895603126711112349678950381789006582664072874832614714585953336110750224392827447731834917619402315491465073009611174928132981680229020562558134943983908938659590621134592722554270997266008034076528047018818152777471538857012802671082362835243318352376785568774928179023476353191637054089248524962153574441513391226808129071124924151886315140074370365301630107792662018569431354790582727197292271587855043888086242764344576957090283876446796396477180724032615817529502228350780894544549635451637861779733755615212028940080510875205298053107749309780047056102787257432423609495469596045428147927194488116062787162708798678688335051206822147540858469889990317015554280183061868639916703017943020938533150496902091127263791362686610899341695454758760865192147851013009414551593956315696688199231559798206265458172472845465418925717479211359736357964493171819160713553518292085906682649221187051600494448171912755792841666329812721438874956668441547423641122432266469670018128534840792007196873923114638966189042226934462246495933303706970751771264913375455860906794349215406767701814436616574101162903086443111234909908476612172399557117545579371798386145732711694254158771602220224463153697029493721029688198181097399326005889458321930970397800372187282546296923737234479094546911325768632029400700733613592936788697893588567800947714283930349234933130611360580829958410046147864851583218200976034730327669054212671554546628129541952078217265068746148455184086100192171532251176581198590799665414346623542297177828332455736408744967145530787007356887392601139697455454236313190978668534486968021818191848710040495020475213643577718632729719549923509016777287494232499707213137848538007061392164040154508823746607545078396748291556538322510454603196963253043877675413781897961214512103585082711048589538794977842713678473612497719484777628876576266469368545511487007980973013196756728471860727064532640820988638204918681505592249427370293547633842682069171175936524888584026647037322467299380794344582889113613354323306822938871567730744176622185672804288716971619213041053604260780101362529072612015718690273751714039113883849217884583659467425200394364662387346188665802371632114919154913191790160479811512396880005683787725206366656243384970569188757004874702289679862951442724541292626454847291751680010681248491024464259687177128333873042584426598203010273012764858591192783218926446386750953843370293675800839010451303271574144389405050249536580486505008088278226587135909044567434992856536635051031743858760491474151430451922723358025908535020789552362785112546912071231516580083767661728831465465233874648837406270767324649254500695143934214766209963759437481795759488126733515887902890056425336620084373965214877300645809898457999017725029636726206938147207111773827785347877803596636546275962634387119114579774369798186115233313190883516455006815526494422668579067219454127756692358997523892320315682875342793641353872163245474653163349968223766729222028654118091756235325904470747698985124418124500465201574421487180090756396540787900359653568213487590957832915012915540954979251046879899602459759671134853380332819131179072533852406453678151590173335419597880194142107562328255160999301072632546776859909501114944558094787487318524340275883352397110220387261436655991945166712331461627466112673700214280853772405364960324569006068899873208657329724311057356077731064476490303065077236165653502618399350627216001653783306063832387494697276417492050348042600621675226184004719603183087975099820802438403733516920535409331368840499978302804510307175425565084615394584654530252333048733462951551595672470619588072195645341983662093064039429579033946591782285804431469978344088215980761261603220136208780414923937226733460413791257057651871505718948763688643922463747806159758474146109796381559644662729092807361288061286010424426570558254312331635412577950395980112726790566577206884595990719330587515760616783281385754517434376143442247314785547037626755472921075504116750660069526681900004544671135629587121587932745081569164096887752109573828083608734345231350284437269658806996280975567142124649513727075517149786663332243569588376488437511265624322388924231807656235971826180404556505041455903074853708675414267287096208947990075412433923662805421711478621924075694278649916485919215678713394785238346289266813733914685272894904522473769523188992750977063232619167807999750954935237664282948876466779809630564596589830254693813579808298356262471661650764612351513581231180806962569021000132261719556499366716879480125753416373242458861578073029930244816252704105793649594738837940572821704907450167716682182211837865867192346595568365432323878988844054048351365929370834712203140503145280025304346730017977819879597001520926403649496569217111614883908168712377102728190461103416893118860254025785963597779238067232704853156641045365933599024905634843820655558056460414293358912642507950415132762146155981912815842256961913032189846469787876600295944995924908936742993303865146136773955344654492916457176209828142419064554051343178771432086038702952923081515252620810427077801638018041565907738319941493198739884581850897398667788254594952576140155131246015709138449347177155596653809441635083005542188397249446367568086358083285548107838231940918421161279563121719842973007920493605629810939875649709143091425046117137211496095383396511052298767993416484608954563571397290761019043102661296758556217182514413138453252585298889927131597661344931593851764711091249082312920302090625957534329927764409875034856887182357075606208934813986465821150988894423625861349726125269183887345833165666823966604565247110966643763173658459279119701440565644837690875479457080683438315005607012271743484084919908328401347072032187619392782248108009313702664587350272716489702305445788270627152484406291784705107471608049501466991195617485790582626243275426888060741267460586180008558115319816713835689033161468646116361986134602759878969206653078610578561547500509545751338903697650032708482597212784825192403879176090231218120357628296866757077601211161858989777895857708535987753130486934700820945699199205843696919683943264251404679774638685212674973931452460498303049383370547417095857971043603869517742238196940746597817599241295880657123487584977447974092939719237400261513028722968679313821365044029746751834780453730301125787163580200899219976839529665610184390964774842824610645325481596796776023785847072994535573243346478952851165141701207093066843313316406416188005654006659139672053466716459164749143723141719261242904979989979309132280182143782573679637783323073169860892233547511172927175066987382819226205974039988718171217070502099000285985893588053837282367040514240258393379416277710425355473938368791091815456294872355488292624319914013600137854139567665800737183663380484965298599472101637850115831230726799559783948428862523735984476669476330087666309671463012612897262635672013443920742787680420914086455623199878842178945462820339470681228213000243964834557263449955350536949740327336709537049736834787276602570721766688281854812959127375207976690931487877778930712237836830520237960482168927085630059411264224079006427190180467875943005725109052120829696689588971399974892726532963988925653402430030027752439077724179949736216992058986167359342266520981691533692982760684533134850961218859485577776294639426128839840563038639015914675141586545966749844962714756907386130886773542305439035944109478146224653757729894715650052963168631319598064742007206235302635540368313123120693628041879796297676814601917599141249813300353741733010463807169145731068493756371768410667411050485317989339962892798681646801080103365785972889229893488033968719496366315112940716284728552624058403043921568358056668244690618010256802974913750680745360333207524277011537485055453670542721127057531249331865613947927160684826033071182092124012258671946230888055146083004914992186913285362063069105391830784799164680148153544272487682641615132497468260699984330389929571311258351019081075336941119443422377749149937399582403617539058715571646827905525623404790657115123525734960962119201530085836670139331053732446358712093566522468813490303616573883279320005998881430926159532876084402413295236884105738348153419616426952380270983458514238830801552481714092054846265218160966782751410461311788076545318297468240273294051523852589540547849748504607055627989239202706556677089870092887548324173776057630242460353964506558088029814344678041515876748597990933917211192422753979212543178216957327570202923086143485582403562753497279830784556739738626072380664942376141228650509617017145316006613455006548333345328423326105605506278488812054955824501608783602373660098651856907091739749258814450109359059219345186720879798114276904006275630654067056656363805493856777948749857128565480356931380154401149255026157545677609910909898893361022324469970972578133654864404582349187077603560749639484700302707155590652930810237798580529041001594571223241860807428928648164514264221500394640456716257526039842729170076849828897607996256679805317883608553364649816049355542355831387064349496041854003911522450971367165943375022909715948988810050421369344003330543809890604020694448236673086796994123327526141713633245419935368429583994853540520916917604003914660934246825389696509425424453330432599016142438941002360352212051907036554544825589189860085957089052827655221043835459811286542029260330860543998628847348296296166095093293860899833547124923803562351854872678271791691325973658268443586157151726698967607206403687272933608819087094757252892537175394421690033501190477461453902499837480788961007467694358753326521523044816427523127228627660223910313982737897727329525518300703209770641938208228393390497030722152887607373836619357730567703159485876218289966223876931021412886570378801644201688947446275332976792201025193195468605461936275481082952301832464831157244275993566975728113840590188706458055293082234048023625382094001469749336892135262604831380828829080654199460617257781702206027908567584155870386199916666759558335652617554114819325377163761089942631013535825423428167104306054327336908516485171927530866082343680100476282479025418875956394754443801488634744061079112678388320952814776498446570540376385318736644357291759023491412024280305630207931798928482171417882878392202005897572526329624768799767942097914701504686828387587328273172840890693110690266129736027265449369041600401144930392035606682620632647247713075567774200818930185240776553516674967833475426360923343690586598302352772506231619662698647698874177359603354705604811900187466464579598429743122995386352071093725223719655199149591944219961886045454159864861192850221511595360283219371421758581353600006597370482745526727518435381428229723050876921886407160015380687483763832434865425617208461366882429271658552192044344005357250115293777616672893430750634462047363111668560497095171601113517855194313596061775917438832302866583460214572546099193537167940946086065227773277262091622095470147207195443014287982625276095387914218492191129733738876177079050465157343053388433934446378186942609053905543821762284827313518972871951596730702605159343288721961236914140739367990876129578329847127628351916973454382473867174541976733999647506086779443431220558316784437756621869333194562496687375174095985166080535447195017823634294329304919879557865943512436097291612537752003855297848933456650721007937474010735533821063838255774306619561316796178374282924623211457145953137264464005775118181763072575141455194924936608750627070883617930603113042356383310499573646133690969529733651631632940209299429797933447956299858862647389237016756183617566894577814859309984966588081774028081698585702982181532388924004107246213735809154922357879049836599902783762410329053320301329856543228148339566185946949089325529064108967964150880535397274911753358624365600844235560711916812374002064677025936717220823045372874266899665493168717888877628263560679842884445853545481196885255757830035209725322598853620675960239075372574829841166362464651903085695738176085086932083099525984404035593227766562291605891501283606550865996580626365334999440704155964308293540662137059094196838948003827585171084410235161315724676190981980669344591395193191436335433455702380948214269278212252190772502557164863755243582241775009568543478370037246783800439241711574091356337885282491975741583131064148256875634432873765351438273421591603598765031252358021386495712857942133855613544852849331886448562614636074598324342251108724338361783618431909894754420529178078844166424041760666638627191163608028312826879954535788076462482167228931670826914837329548937751871900592355714089316149235244366785636374871779328645828655894043161745684907341494152564027514145424644295648141391195983362502055117521923891167745498783545944304048219833164136391931982758493812485731626241813195697039759879646871067515586404145398159061147768673091379751209592666657304721339049247634688406729259661779481548682154275466894881189699804028296432210650591729895984658159100973260141780557463390657998920225733892477405941833787784704062759708368180579477100518512862268594332174696932683263205908538049914356900842015628127065099199720282699182014719328772094304600812651422516053342222826050724223484893240283708910861825335719879656405321576945458578035604570354637857379387608350181820298848427961688170480375649347799652087112279211188135568365754745066988385535974509231356622336979334922842242409077536960867206798536626760181964201961050534847377985768915077676349548116190936644024315640750166411650063538371639424755006011209435455863911819508490436659071248110368955079941008171135909156990261843331976868866367591762764600848708548499286930170015175048991700734727098352223725486085255955955298142601469274169791047840733954575966022855550394146310487867740697836684844331414484187469205964210704035005468239725788922453127639387169104844811854769118893325502315576984148577192104016577521400164361418982902851686549116375637805416443390809189666174321184517989033351884906654294880963729714384687421159416075894073478837502160032889779356733384604570529700509834791057098347662842618681875827064212375326076664575132170391037558444189418644392325960263041681301976348434232701469973707996310862142866530600328513610844493476951100008377719923655633507880790652887207903152492689759631051345916064781304410833491658138941026498137817011225207877998144289804780721900544906754978316504373707775661236003265260507389383806478905942331376120482217383638999253508140598639330663026673150177991605677391376804538503447555825504837820819928590775343733632024934652886958277430775265504122258264365346901656283404354400224835370889519836685477333486180893697905891857353617334745645062009764341930844712327626375314629225563923276086357443542997209720707593852208846246894165493221171549457701770405857837404457272111828386836868432387506843963746347933207346981057416936355601751940394274479169575505279987767559152070970437206128185744580810145652193490310527802895342251307611118298510300417985990230774880391190719891512662505408508030778321944407227934810538522701525326619841191235116642861240167831407916409725682886725914260847938390655439150155545368588236742153206698219444763141476028613216558345011339375634451430251847569580240893655864907023675581366327343758922540037581858776285452264271738440912408563118445847106490728344037834751746397703845764328502303053530783753705990316870169992648494569825271733917688208939628415919071408809857594000269549460838224921100233410520030162373919578018362953584126745722384550628760491380087840195061645229923121355652895266701987545522403723112110065134905063775191920756712245336393987929858646478798982401979116392718585335266397931336293083394844860482896301888767240880483164638759031443015468433974143252069514317573376547544995370576782290992402999536059105837146835607709812441697682453954150347566411685516304305755542522241700267728999288392372246343301765308907650973023108061642664501233213347026861159235131371966184218322594861731540858256800049331582144073494823565219678050653325926667781759135960393328739880167439350895530284679713961523607055849483151483304407263061023843686283239078029905516378245463533908998645229178484814125426835558747807107248744045318509140889999087933323397719766513874368064371435549370315369049169666060336491584208804350478239993447185567908019049969917204136437293481259579244836296171160246749648853719612964536092404745761148034174821527667137512859379779550413004302489358682408099871042583783441328702942389087942201749822459503637240015431694801003396381226252609749635133198303508160825384284117260079937409162754406630906326698463547599083605597035594118281425480173926278562952600890535646033199948362464541392401370876207230707073585023245367672250564280410066673811754214722448479022180816362277660373285540432541035102732809659180756864253826508160812309195160316877239015138656094833201197486379547189001093706474004546290074379949523294492688752627101325837898031950098776746895691944081353775071504660520409965152216814669815539684283776342946700746187330188860484834750733145572996053772321207447543185569609346869175770267487744947484731275111998447675045430412890675140331114948245600179854448710061726207665067169144041494381721445393799566652440432894554627213503750383048266438974886101919791884567226695510142779720354673167201922746437251949607823892978107482056525512088658380450052419108979441571220948380974005786507421120803230736943023557918644058789989904085935326364051673807618383761955820352026408423616330570950325682199241203182560214585618792959998641133211595458635808951777225534983447293779742999148972966983738717997327572087093964246146854750008910043361634986240656582283521093811553758050635094754938678553534461324165535188099105695219928433406550373487013724742331922182949254318412600084047145441768062013578665950784029161992841063360644591917909931719100266219049901095349717045151010497294463144173162874953973570773720184685196079505510915149704611628275314883078405867409518696802748294751551446002818042932975356415300027106704403495411663560639058847043413795410185499532245251931272156375905924318718564495477018562055483580176062165039452703869616351072692747395056973617617350168153190406713918244363402444131136143446494449772240023226233513009263814629153959207737877146541133378631648934411266754775320250088538006229576498006612211627326922958317444883084685577205518799739661288676791547206154452522400998339295216354914687203514379935388120362837924107335576933412218376234821965926520753561629633451531554736648768786375421375546539586513994488482015535721026048641740826896219607067635380060191223004633937105966721779063558214166034828810302983850691343826849805194305195384396385360193132019829061614660462565936884381102131767906542738605592620914577844770024664829414362719645613063665740314368535750090956811654934392250729266847621202099634302109410033228567851682388961108418757314275121121105311053475414089575876824266614946001061724223959302413378682074097456446075416673280517086012439103655444394236824266267287592243440151682611764459334198819490165350655042376832538026446144674186573146473505154266735378205696607200490146317239821918257423007612060277027058194167994184277508715031857088598684109356364981078951912071808848575982407198466601370887265555353774500312900275894063900125466144312009528906045824475947867160029397479708617294158950208857059978877272431049727504916347831012334897298445367377111339143747464110721520271505374464374002928523445032609386453063391014241798586545799327028999372540270168607470131551065035985863825867683451774714960525208468475787100512725119618743276367323695865376143362760735582251391365562057364892315860191732689926207312818242782050026439119679615831351887878179747467390747385738900731622982472415548818341510794861643929271786533352869143201557480042268184468207374543370491244015814006379662871306402753967558047469274076425686673343963713609030237196245726001013045267782792676283532550473114160403698844221604062400399768133933074936564293252775128595109841563746854173996348181755243169659585752238613752226330773750414677599405250330064802610882906480467918112426337529506513981627676757931909613085548098999205747356047662418532337652182456451946372915597195955870120789825592322295783149276650484200399540640126805442909067107157441812150872926404174588310167349966548675245349846523093728191458179136451897199332493575502018457808503915982445855273602517187056448095435132033632328858827057232603647872029058750508113441417087375832431117689561689307916529223038617680874503596012609649498975173199851257389077508488809876000848451066575733645613735187987665235729349042540906062295787499528347750612712919537083206535388875961009313938792639052739244247110620920857703154716902680271177848140384317962945458005328465689256899065714076442784089074039679141696397558391760397282780464104304776123478550031127430603487398286829257315003588866721320704546009864754305041760872066430652653207321928181929629740864438764341084801151134942532572811314517832467837552640866164041289868143745036306127771199427139850195455517460857277283257677434592159117296102006064821156629998229942822957187715783665838415848451700097801544042366650689284257834605715298424997071054951854240065803260808192704229459581723530317111152287212964824430231002028572026948198508330218527300607756092202613920728343683532235465483838676836850934328726560363783826696493690506059093165351046365566520544448134140925501847930659297117176573632064556477768728981539115399869484789740830722053955491818621178077160671149192193980684881234183764334846617403243249288940088734179668314347730237317969886660235104744352092584079459602987508190962036889098828567890751706161001448984151704972168141529394474860912164445672078532427863863577665183252464845677882393248769705947118411032325003604099712120870139087269588596031397148502779522903996228975036872619753182055221271371336687467703210510225550139332913973164753101295979480773457348857778676136650902195822994126203276962488187574589710922789071832092031430206933056500943640153757253399073857859342748017265127205033990392299432906585924904227065571044981249709292260633221588631913732421079503012513472818990214271418060388226528351944502818454098728869081107474128386334383491445651902028959906243188160525348826941671679653725774550939250218542289382104865756943631738713256237190619452242242729523307990844489034030254588111758215811059023834552748382911588990867227509848811175981338519467258963000566485057861846856317757696336668480754517722147695245165891240399469768262063676567888846286905325936073572477178721796643920430030216439506146271687096748118460217367818699049806684589165832669494524155852265793911733358651749021053144575311205950234465682356906467222110589485439065711669837995588250938703277238678016328049490356084758713457008293286653743767474688060323519804250511452294419898211068151495566535975444088462115953203352877514278983712605215148102078446133834039542637060990100068900526978853797592833115789795712688997286842786953833223353300986909342068171489735717914659240862188639403683884157335924323760113496874833404766371262996210020710384288550837144175909686417887010623324625048192320136638967601072133359608905913522055418416808400286473348962874497187462832424763599103696615628659545540433515644250954182078436831387421921484230046513713775158780384843977674020167560869614926106218565282947521597688074489370140463520585304892608340450926772975666225790522301371079233581104971377024518800898691215794624638028252074485371173294571572676470190329056223663700672571602586501383544396095923921274401172851219115979004812851116750525706504164962552834112306741878356397518555663826330573236327710322307892487840901643570412912011900205154961289781075696567473282499570699190829241007219636177332407204257071239579074206791273210823428323278620360983798581571648374114937013867670086970592679085740748564749158539822813218101520730464881585278022875603042742426976154618372442662704114900302291056842002736137106954060779200690745008522912255124216495544576786726335030343597660767425030684528952191947448466818686385730643382067874056790546176604987369815200517628854355215458054512734694316278204136324235650468602704237481201241445814173142897747408870704647249543234453662236949349318540728265008124035560378103546048170902353975736200875601638628716983269459280277892557213470199383602870650996245733780663743177816441168050708566348660162031510995744002432589218640036069089865657373445113298782317857099961681401234830929538507805181217045816022194265364466439714864899516080184397556706748555422354599159252703342783463926026413234295616398074467928641911171225004636045004240675230607411380961927307814454814859096406471627153060753079998087796142992929338430652254817591784978796856459811569423265501356670097136188523906187426681757578292639983904897843083059419782133276004206071733172266979881617975670150043129707896252423086321188941500863016617344323941046515551393456084160135334194370332521453325649581133439330817040404152628965953205510011401367041562643819642343856293563314748308008527693420737880777811542058719844890898265189514008909025373124944373856825761785802690448570184494787592973495773162471470195740401362581592253136224120938366371636383533659150473363789326955033554841168290647610846009081947575632310080743412150398603535128315480023520518363833941854273715315021283194100529693115574909845486796738549954530438694746387057087882453199690210726119745532000081319762272024811526502921884316668543748648278821248457186826178655554575330812271179660234912322661919878264722430937763733541474569324715298203132712640613170690091491692515058949381305657045853264531150225903675638668972982608480548491831777367528971823451748469237526990750706860915282685726397303820947757371154082554112757685990042517223546358428958278499234577559546107812147320211735269033668071169245093112619072495439977029228480274183633869951270925800160974400236659453066187310945492193879891117888178384495580550720714195710214736482517298389434451589298173500994336087874799180322062012195202971114539791864776468589771074072860019744094572436352497499279319395871441230808739478420711869801844487888314143150058720269625161432949965419568669411312375492096591162330844473964819245092788084523905904962505232604044627134081024239862608007763636306618243559793155773608606802813845856133023454987928279100295878750905083559354322689283164358833349792933904746477137350069685534554833362526738420639747077690980514717119537211270973018684419499477328231950414568226632154993171746293500736772066486013836529926516899915559670983902307657547310512967178243612720161982584503886529159414648621379668388908185637463490316953478937608752099285441216822933191638766569107849752621987967106650001382165473158289764158695918700609634498760441032281910485618254899291498000086672619231761197319467247144234602884447866627392752421318648311360924206162352338623405220874728733085194870065379884274287717902433439108682294918653052128710593550438377714890354110723350710387213027254688093327848109946697221249714258728799135152230489083100672810389699250979715965720495508589704025043838762241683853755876511637689163886072679860571827342144270072406445811336000192066470441447635479039344927753726379702943024996981033784369166420293836584864643301964200971514502948493671148161467271739812345269415282597938370959780548444833930190158752680390114058354664944361128684663795905368961016721108277466103568938624830071922582860885949153486805277527398618941611631801550124592139491292330488818325370714186591178947078093338340358520798557511176550591572092466929165808021820600844049483512269469868564853464751241125952936952677764520368977987308869558964453438573430746583359113008794699332871648853507123450473106939057972704913230303659729941568746892195185587984355776559501708684021891399665267463830636460774769227874656270982707941919288279611000432888272374048656474438036656745420250885445402677244903199709056837701215594099018832000789973873600179240484863719181610297472734307676802107914169197305535175763220565443959849020951328571571509698316698480027168240549279421724703490380860162315712176209363532091427826082064223259729422379172922980276870624050412399778000482894640451498917120147652887928409864832456417663368548857859353397247762044303545772515280754277848038295445212976870391617262696710352981482511069453298917265457590763454409357890321602465822460202161423455963024662238271572300790880273847485738476289700379185184823876163418266091350834679437666266945971502395334898881899961217477073212858492541904230093642406473808023468270532283993187625566493277652637215998105691885103968358584260689571806285383081286677442144952004018423956419783150321164745220933330523911041659621972683231484196417110700708057963851839851921552664759161165559113118453086090674629683624975931082690067462074230506299029188568502302348134543607139889007733903870739262336480802533486011246013739515494395927364474844119122703861919053932545447596347396479092441423090251387223967221505176655618067551613274885247945725664766304587311075485718696385685404346467001146326318825726503462548649348467931072872211760013213102286344635906049804219918099488083373506770277350607317372152879077452998077295568688106270012301773221475544136325417634187368529592998222711018123144523700208283064799298016885810408307634857856880065148579507982236122983896196051502885532409399086512055570577188887048688150670629146263054889301481426022276911730953861298685852291491928705383314643222880793940291739667779572088674362810761475484069365559968056699221058161131948679608742566922486621753340689096496226710035589064986710890730904571705733482763937322344891246511638412424029952965258265311406421309823207311763522415189000196322329168822173524595062623613806475200294764048534662035050697458911399861481479517320311775622917996313028329979179762357374274685474053160993103142881178449665305360578283338143710005856950203010864386799678123650261866233863252812236062589584037703090078525649918561478433319622860887522859531613423399408387153735535290956594422998940072611559229006613145483882682444241500931022987406669668239575592340677874099450241609405636093535586494428866694650934127406582740961845540027302869829746394968347663101552273036738389936362121756148419184309713675058686483050070599042601419061884490391312093838311206029825096983693344898718508997855985040132575793379104132663137967110399106146034283856124429916735098898816792551132585675005619843636905730201772037024520557710501698778663990979821118967068960478973767825426681947954900629699734436747012182002286724273882988071422088989935231591547387246538741705194106996978406200148373704005124845624019723555772954383425797961851407333951838584708481363776830197679633898848545293432844729602446182565106511022616681980020897353244355889611616735770235444816865752041463125554151335149530341248783392743939474260362606286196693421140972595922443032519812905340958335066307254809120827736133297882789515416981658806175349980102938983319220231093690430893014337073910056586362258952202684248690184329872663684383280248761676644952881187285043895170470788844169642021633992164776615442277487927493118747043440411437336005831684906863351994569461094260046575784525406684765261218797550542510794022381826781529856882163179399205902931701026580559229522216293353344708134134269158295210115135547259241086875716448599807967500903157268497871733839394627876762468395217210612369181771009699255115330497627433453764085542540936538673855722916402927631180350946505673604668393576842712559646482707049676846920179977132569366583916603023074579417653952926662027900423921944428741648410528132753517714316815306166403525052941689155864264468428669753607127785370758958090136089424178090097005168787419528909654878625677380236472717573334808851256099742293967847470616875175926897870234469124100453729306129417524412198912131810370754001220041992225490489451765420120613575450356405639491586346005683125850261223816589067385848230586980645025982211630334235599712726082141760524793723707404837049877296823795118579020122165101240374253455760977265152000063750368267263688567792344757196235288632858691837711710831146535216107055111946799989341420691854328389042838791874606224944503437610696743536906589657560576298493516751076668766792271667263804094864044506368513006509905266893191870176701095176345950376590716496951607774038877595516061494253087694006326353442533143205457072188674602537030388487552729326656338273473973743258210875885084823421923328771064186065396476376821516066641615752495365418635300407558086601025367619871478005630021256274860297092224510184723510308479396547141388974368826843598768916472030706303486046256988238638603950084792776310997885267975522627097827677593076463075912803603720110725459877411934826322026161448227620410691354574870135912084396275240538769421575259923748127269856597069727682787969014408201052621940414405507416289417772831984925454726048230783337447356460262341318209755757414615243018859572281306760803855938770669918542110381095628987121836967978457538289710183313070513896644567170663526283380380416902315417127187047783007405947283959196881794309960558014589357132623999008169576212657401380429860992187900854954840599318109486587355539765767447081458651583421276413217332292254401111194687910236198480037330019140399371129710450982076228841396506649848013268429907171357304593700995733314474390402971823134769288057578571639235099340167937979409615768513454923861575597076600685394587751373708366092250457986892396961191020832302208603808102261352989132727549656576144310127729705049967834795051964319987976005024924765409023067466821606964653191563091741529339702157307538542367559598706814368460693018819307198331294664998099417779736353196095398469444374673177215123981666821147898764222028521562761128333823271818034205329032969665564702500380005844513412899123923249185006081061665074648335445285841344512289454482500929980104375526106436459472917786772097258840471310421692168261874357671103405126478819234227267071043681382288691208766646329141709167007035125200314950615188173075440417184227148078759517616914804212352342488337274709444394654146405659489592779265651971255175103976167856633286162437384312117568889574274834319083612521580624847448086376211941876296756255057231026166237750358580374003686994232106447138822085261068741543506385963880306411170798151352352122413514865142506819040411093238419573737569305895578898318833909716529332111210242434678454431990332014675035506422687494424803484048201610332984087827006592314093978281678591795647514672067357010046146831341817857756514919162086529300790907538730192552614663042699664041234006359059069331571864432409868366540099362042293874503353452323368960420099036239700848547788250329401412443365961755993235238314537185216239538261244294681606931150566599321500280413812800553391106946968989955898750640982682037958295560890278393850847139619842882967546062565951735844433612217050593954021364386969400542451593340678999949903675133708700246995510400139469589457530130388970566039958543947434200565605161674123442979873303611048308508168041178360716047710910413361996546523602010201182937647151242584449007204909229426282028949336214472576997682349657980633776971524957063868589307684789638891899113900779880940918942592918478213379900423988034156144969002230382146938724586885146255252816526613906723388540285753873456270722257300533777002429246181979845199736696637757755636039566394814208640861177747168844483459412605208657904962091316937145273018694907928953776320575972286185579769497482211390783398695355515519992803770937357855649270395286274171072749029902780055322659996986155108289713266626779936524917151157056081804933283145090230561906294051251861991366191891923907046531790499461402156380769475840840297845288610023091859813457272682306859827665570637475443888875862698145799550124729583177236184848753983858112708937977380783163831312078664872702269878750793343819398372999196936771787325342972146848299487971465854525299927896935438608518767205659515354699407163850465690631881471701647074813413876831340543335171714956016229475999723989242093956792471374538159252667899761616217283035939832391051347780149130464477244370468504518790952940316198234897041261232974695459055457156995432261016907184276843808495528933750400599487532277172230385146476327133162183132497068476894884133289029701628361200352793798930615419669024288956569798591486536563481767343273966064643078251012538892957268349925698915023288627368606213884480411299903093505036586076254023678320543137487918375991580118860841690930254697574723764138055014779515740769076205471095281693005687172086524597805949512974716756978222428277902760612766363546733306916448902194041431462290785487119400805464902024341594173249749211378781877903819100681623437644584275058260497475697648078766215679879479940797251287534387864782023401577321660484402955458192660901008652900203375942566021408384159347418081156906230234634851919484572339372878366426095972577050502189985361268156066171730543071037622133935582898039777704536975490720580246212182431176843348752917699748163019190426192847149856079408570076510281474320156032644857592973471809415544904038546032160426444378364258365856365381148849197780492191456538111204807988191012897727520410632356065358847149110744544525023933424809564399499638378793108950724520510717204559647045621076473065873272247259048001554656686012289435395400421570411502720303207473081430528304571945725915941685868817626255885922439989901479167465342177431873878019209762143414700640783922094044594685687118050667482756886300357978061351248872656062714221971335068646054251742524569427383798141669364851994101679853276481334774751691324447617249983695047840073363841863271576199855422620977183454821025546145325191720563912942236002439127563108216011422304207011992396577775223703607560936516106811218075480952896534036585641956324024761340697018031719909542346239458471168547960851410848801585925620684179827305295379731792950746029863372346148805820171830137602142134091255562376862532820922086152637100858731804019206201632528615978388734813612182362538454692889657064471568512621764891326246609150280466194505322057298362958432318516342718051135830747668394230649097525860236124454561155094392836959602619099656239292903028855768906640192519593705326272763688149896385834896531284653315418757245043765598778501401359834911140944858996096050357796988820360953855439241020476760457854246453496850167522196048896580667823148901881814521584526599361124989931400416679953072904545746955814205098106431367668597657821659898601460200966317597391726423475277746887444367840729025047540834237161665778481722072402486124899118726597806385724627862138585646659887226377587854031299963812720328894765204187883786582925653232386200934313892221133020396642060063998364761096488670913365138855818244832715398733111121218832103895750621525040472727577673670561431633114134910611490771726126885983922814123394552264946116988000808803490665396213646937217288741683086688292692992489192804798681026226299274688692674114330496784713700101585968644195114567164192429156102849249009535167966065588767081567192318509091724927034318661298972399781029861823395761235905983019082403261674062533911649806985981255548505720820976536863344185314196915979682567548359902140671615865823989770315471843310804062768246919425712035453010449982419382146177714384179249983094435581848822383023620489468580499127732600069377551616728251938373590786656466466186828457101686350613386072504404592314352409638150366181271202029772014254914015303596195971248487384901121339687017215683009041402994498525655532367727847086936925319322711954061687466993869400112108742267570454001107618782470949594503830622552365021675926024432689482147876043805114672370447176544012080160260659590044383964933078129811288596893078418982591553814464403939068864291924838548064099925758282828433443862844371223561896690302229532200151807816840151923962510527413733846385317922007986019795197936056489185266162397564559670572947338143856287925453431120097351361233793106421197407475167882998581421197633108888859328882557855408221772282803350615939171474155455499925614568965900667752749155608596520052143235717699208240383817278548926033848735541570164268192962360014515992146671190981805530031939595829049189680984052556865482730084411019563663621605519527233042140334246045426395595259587169083669972932818102377780884747035021794447360593294738308492827654165153410794795635800623071397568029839358685193243718742325637550583454145049283014131974130408072486247509409102125135853342944055448827246121732336930336565244360505872357072399279720140051313360814576485907635352283624968413867498813339276006115645225511814281184269457395395699342726233971547519609621534145973030758764148448766488945266344564557805646122858506133205533969524669410396057015070357001042315820448839763383654525518772579667411280225707237913356936750943919371080020856491814455274714961283517798685276745238222866381486356089789543624777751999104630386819172536443084085112474489014451983283558210281219399164443800180861249192120954446638856999663180681817963818267822403753449767778241659325515486484549022977728320307960405213799475697710531068978691849784582761558612633674382202620111149926175773581017308871142621327238924626500720450138011419846026750219740182289598781974633617129263088230705398996486648211090972205641024800598565347278647590895189118691256465528597891344556275808621323743796281218184694019819760799509685882158185919669806989379886014426827109234594293137257778879038221954193978682434730782593328459131020902152923104004826980388496273325409086650516583007649015807399414005286248546346189788427307684205574015706235453613464878355074843299750013509155868902051089895814316296779939346774265812934431969035930060209055682376830107461154029259415213569086630862801721400754074371505713415852481482956373768093068585535345902108798168872678798852073797443735679843088464074673690491864568587782456517258956678119161618876246733230588451241007690387745332286534496547630818631613631371138538159881787505984369483583504334770202793822743088611239059560526146888001739985817650692624052828826509523368198859869919118521139434230167789149740959982452123878734086839543894152770655367970675091364114746398238203285741643498972731638940350372767878589922453580345769272770953990929619422382632165652503683549740232054174727768055697350593344564484029628330171478907594425417463548763978244532369908444904544806570604066111923829991143423008863462538732803664902713812898205458051408921527806644973314838297927410874196416116554451553580664998887784768911984792158686729554756784517579800647876879961686149549239299396726265496264533338627049995346612422606517159060980405736377638122711797562854452217809150267032893257845101578747169420685632658669075422331934892306100042523620651862788465915529294191750492905009754576407672504662899512935403873607460335234601541004899555889446620525948671105050038626262659452417251471339880679990560931192608834111329989104636380516947777058928113652814738776546517890981355780912500154426250802487032679406186007171418975650558922063735483280713317218867309813770365287183056472609991904826378559091789130801902354686122423038949951670491713150465819842563289054937667487365225897029464781855577002957746412193578107380219184373945885775730105406899957630200013895479801243977370733809271825147094447691758382605082065720563969527041977001817204526803158122198809787545382850339918243671015372400952036799958683900400194017677361829196472460373373023966051325599842882668066520645541569927050023918812642171572638808360789956503758502881987912094874782952524568951416424536630696335591587886419292151126793433532419630179699383684490930044665100178014628046264329322699141787153839237056916675860144307416189506429037770941669739549562749074746278307411807928983800663001493277247666537045832719307930004283343588345339098886097960781269236994894846646531806368255306383056493100028217522866889642636594711760303890586584201619682616117944957297743243190433234599060669268800756780592263046710088405474756947496207290346999321714951096830217825593092233742701958483684491438340927434432344134144647633406738740529095346816000520950162001244850386264028247510216427814258897676248988493966740971971240279661038695441490909516867412716585566811778910642360258004507698095678190984930538751122185132491060860118234241288357133284282397364050042820760924853076980593030040369169529491241007900826148847425794885808858895014570887317209205222057195289284033235352218418129631946048373174787238423264014666428303648302054443804205096241118375676631522664169637659456717879843539577371851050930133566923289256435865354481789627329873319923317879961896006397102298649625201208091278451254598276749245470900784711517289220754013915434554252123444221178732010542098348356248691434567762211240241938463862755008439054439645412797500351801431181517447750123853345438973158810026454993875504708188665682972939610720425509879924853395363384674316235868694554838448271244547156982726427010258635681534754148529381218532885530555245155740674321630035794647058319819477947366808382071309365672988482140673657462821972493761857736382955337777149336484172875593097862569536285243573837380652811640445954661655663200544431407871495506102068063758836766892826217534502060411425754044357330929136739579344104535393346877924757766464055458587116615741265226693399340340037296167791576918952017549807426057254934728830164345865133921610173577299634842530984575535052030344425340879837834957642161105880311175665240415963002077882218177619892982096908273356125935949270529195751972795108784580742214241825684166006222086263858834454491693901393034969067369061571231797662072884657828592370293186932763478179544134464652495795595462496758608122753402453233407704262560072233066166888227823586509187733456212879140296786591709144117526824876563291798978807525286052835416588644529816235848519058866699003542617223316021552132372788449363090624342905624193135952534946202806708889841082974145844127460539469077763649294042441180887990133526392215463121839129482525350960161040072075311164399646146453893256168193430146533494261649140570737366552709472541314104967399654789638252790762929205183657627396610101897838543643406142001865517146787893379336074360989513222477808122938549109386559517473949891037148261698669963147345234426143180800745424149347432730059669810291805052647744141423946126744566715156837905845305723904408636200349603150433011089226618148058099597831191807286747243756443849875725536854872580465986465850676281719930744612539946893227013835416564838573502188649285488685320530219797457176055386446377560367347590239212450239514985480560919037361419145101519672345582184887351809904114047063907464052028162832087025718658276275221732585944944473847742223584451175127239640102498949592022330876509189664173875288373895196018301171644191517995702327004868958967549278431358915070827635211909407014165314158375371780811425472239280538223646625238159982288990774501124288300893418005989524330034227462275230658572714047599070131381386130165623111369601969710739436404686172954446464485859337607401322213320670537817878334303223939096884107149277903934921774487420844122823344484379969406926046556721066202481423160154541955262105429334483733399524288824284889729188062846301252313585561578371587467089025254358918376549553133963328408098307080260741515110798522616326605809974756500717791793235171373850564219396156628602681686658652410869725834200078831532939936478005575404121845332833261326026656161114539976259458509865541594935968667899309896001634492629865496459062749603572367961586005482414421541996403164762063708800497671629644480334360763781080800438798467824809591295176771947189074507058299692217823293187958676024669014638210299569643774360927586137438222433399521957144081094550929553104428603953362100572321851682296050771378993865621266193811252589250432105737574502028535607754229608575690682812361487979728773581832816917942957126504512212535418817852296199031993587036566132951633887111128696792856455446374008598184549025152617668095959133422598490070699886855639443176655412573157652765259915681241829164484652218981934356723226589030450706768708289597455070364833888131765023975223399525251136937673942762390567802960481401154941849298823134838925767016915355445401029378386213566042072171545724150880777304645398410500908186199869186069477274819718528087759507050005843805520460304392891804365111994283729940669059100157356237548596023310627329241935650701696260617916778698310715034811244183501259221547737973376041946751379976474366853288161718140456638082913548875591555421307132625917039222537059200367622290895094354762545407439510380063792139598320494010502786008156378502087356185260702378379529222389767557542377899189001433142813065188501354725937588901808881966402333167088744909303895904979267566253925640294804696420185256723864624972658074274898851971647024869894099600675257593639036423647449119206155779236907134197399341129665066622368813831832868513403266332492580090406698576916446823150982773303375213727931147469528429746978878886199787445753258233710783640608721693460009354243266806490275042916916585644161008075392993572811906924828942795851065965364578078827072110519346811952820544925682355147832102011837002480312405922039068668565488991214463291803189295732078069830269297037474501486979942325103055199146094991392820057111688220702126056333464428247967233624471698552156853797980337539506028617556473513177150580246030234206258824752095358720228196728560110160622274208842878521282164228576806966949818486344488368567994320829360628072298114470549920858241214755076608860245247769101264107609851216706248118844857783004835578870007592992403689507704006262556494747609641175054502416979145102144034427414497931519023508672509482635611226856168345576671326785862802600278776260385590692797964986532024497276544950162952051736575386743232063766032316111416944670752323047456439123571014226885884133712538443666672306312964527337323300883674493123308951578864593049102874812313744930463562695469276541739143608099470540009178363268343271511513639905015046687907591631424004459266730891056825480867826823916284299821820156179618253395442577106381957024384192169148031093974584880431342765223528112125592433377574967054583162571508889832646869554990742644310412476911488679042636943232399639299178269002254953099777627943177728987025213578191095957525214667494657565552106515324867072550402588865106750129113280835189328967028099350544448408687997301360458142991721354109049756227487627006847244898380334218447406183503221125088893755626651045205239837205861617709372387535865505975920750345593096507990063072767425279705126032286495509581893676705059308651858113111372362041296312440836887707550702999049756195957382254981684212580320561128220629833749407098292003505639764215262515088915798417227430389186630222829777889584484943935602428143013486308026204778200850978984060249339059176263107903806584160905226480841967059886046809592955891719664072322709670943088217140351484356857858373035772270570382283167565997759693257031466459707250620895966597746640981407608031536713192490617220306753402733517453282914284789771572081420834707614814357720214715797828494503639522416273622660375151075687898564025598111155815815572220702292886495125958409770599728473429179645379123571034573744179527557174731598413119914373059144469691963487471456712167848855569778588522613287056932815892521702780035118462697489323483856757497943778310114044062946819474087724897083828569742403550020227453684958417686975301654774681192786141447989446666539748751782074917094365442762180987026827472990297850176144295558981468312315160792170361110174617655269653370478995735804832489994805047195159757132468178106851855768123689939616624668623732880177918978032817163999792238516427751025241932787358003373512738093041039737614746337199569774634813952794250862401074161569070545056269975261875970649215806820647758095059824291902447806678726193933032139556855338853845114720638533560415976747340225155341993068750593200670212078750023801397368008057349213345323155077542094982652586598064269845250952192801837892737702068045339021284631972643308931656091642585790220182443431677886642079759708374300626723940749088904623626641446087776960412003955176569076331698358744685951570337181111473417298879332372671606895880174192536531318805368752913992450612107689080148019234046337013663968304753519145958468433625687538180511657402017947046774215333322146078827267856790411383647284468424769039262958632712711716825532395317457788756975331691295965947170105182691905817480503197411135271402601296316512948435923210841875744207432666048049957941978243897228174669149685833652128278457944075782445537540021911669296832940272237994272997774557613888194398900649309135985272005578248726624398549805160085442351576333351198714312582656646382365675984319633727153124001479032698975864917684486968397099556040929088533791265906989231453366208770161147191920761596472894912629921417769331282945358127850271173620487858526275905670575193036401681276982629380946701077418776019754637370034081885004746527434526644012987649946575087324130798323183442397713211961619291443216128325120322830963948980585557080383137835371271858178927906381488628476026963267329427749455301069921256533372080629158930195369975409421645503137373019003327055658018445939651304279717954517843901715462972506912908489187882485299845057250428038640464677363357400799987144297230013200309360094655718394923239473124197707662498730222638955327832323247266050045749122582731869981940639270570744015324393856484301407651790686353272782127789436073584236838326429366367679047710585314837890311704886950953035248395168442388042524804632101568233296840566508138712173640945500239956561279016825009911975291705891568221831986509223936439418730719097276907634013906274084476943935319144978066034200104383350198603293288694940334872737253794370893335969114436668412143708977981621093873051855782291407768492766089001690414209220831315305571816267311536825011409104561501290177039718958841864043523621643694165666703993571770454353558696457081148301185596398376884536956732591295292498195244622569730231015251803322955495865848776491422597627339713820311234100619025721524363132732899264823787450918220454049279509000803924848588045184143310317711145342748113303268109100047329557551285032129094721583177620527770509903160700680738036874670775779100864327560561661543429639667318027189234035304084308859457744355493231081832403796841790022573864769368913634825374313147980621685051777735762838123501553856284478687434023652174865230657108304468063105669759670997133408275057727266576193083072463409925624541332899564636102126993844067768715712749929604008579556472758949216481374506386958349795439366422270257092715916585231823711681254290613553827578043426588766153331320486407160378133877831454436568347418504235749581845460837648090472559217727540731177628007831050159773459426417091498481442245569444696397096523626583805581718426590954047293082026631408411780274371344803070607970444744662772398294248670126682052521262193678863718895571075367562504528232051019720713712743268823138950616045020410583392273999227292375771741860586301098943629000416397167926054836065075812059948084331590688287304228042467989723415751741153368913597723502779713724263217462825856072396727313477493887549322460387708664236725573898951224038746017349674082702252196418643730626325155347520342429167958472213710040616271367942327978913418439468514629948189042596810930531143583859249333126711399313762587876249319843017134375901454992514127637976745711455382677882229766184159029091417369649125730179430310298471777002575018061193575395766540511452539259801650711101143356134611613478195312348016203143411703430461087427286487907394781140367384093979534342000374440367316152560803650459251382313134595714055274809778797375320226347253038354310711518547264896020176938941279808502240777048003920928480637946147347272668155297396417510471155436870027963616072861100419784161706206888720610131586227841038941874645793448439861048339843089269781640636837060489083643429110078020445408970205333259277238726941205049218972350248239009226033799143788571236351519073330400330428219140095059538380153712322707948708909662316509814907387696718722930224398681929385376074411030380884887844674351037975413139398931354216338180452940384481747670438259936830101482488029070626078817757299948459690665095535600685153455579174070570597840349971344552123949427520195340725238613188310365176169807104899886296480284601491125447652181397805967772876089119303063375262642217792110849742747776894276067090503576961258541701897791922953960990929260241522186884854563193803600676958138291889392622654063228743278399924274281394839873722253028867247060528248052248733021149460276969010376118686943656444372257065653042051987598586961105199731211593054151054175207678650814999093141943403028236031939695969754752963408871459396346241471075837714594937594368833268298964385878866923463289407129680976035525741070767467582465094176025987291330340993594061932563722292070899477186728261304976041166763132476035699304390714983512515871545897293609902111002678393535781226340851013713897839790763100449225423868507386484448001981868984143850578408605986382601322495903214117862409490931973127670875522241810138167755746825527195838355115545507807578700774908818965745550131610773024271219362921001405273406533879610225731949434382292751413654694252987502787768562883220553662639414944338542967820894672428721682399205297570503690356984179245123091349763580858689366081102421911721855843590086487947108494676602728607254795731215882049904087361924996308297383053387817867781949270004060684908952073276702785380743421606472620475141276362974713311207250825644716277793053130626449457882073587716082682243288519456045547299674846138841695441788651497056215273183076494611805541833018099497896267500793670687041361805248569286619747520743303447483879506500671725138264325708443037242570184025707260428024260496007158334051433176360477216928708485453359600371935191613669926114405660637304802529994337493818526274357568685228908439468160511272861355561973043945254130081356150801377407887721752919320928259250067038443366734314786685175973453255533255271280776478271860596835966370423393455885431746665912591126060222833045225940180542935582439243966430016326867577808748817615615825251806689245297480286721882697074780477386217837221931718718183703864379674482860278271153574587023156502483822580857184718726678993562634655019928297700524928379625155368689766177266152563770787977825416781014597420411281282061070045034997001814030108539672089210230620400912952019500113966959345271951158845866050260893324037548617635218508169444623456708664053974114269713532986388548121393605988591368208159718114821192335600399456603987621013190225731945260282854917558509352291705743667534169504639189579123420099030234616997616476726438435593273930690245328363596146505625768612384652168058787596595359719343838834233241314549135485460410030790888334943032045190897863683430291734815627905440232208997724543262743505887799188979674419235121053500767677266765719109962844246881762401153132246134234776963220121953106222469878941052079233315394134682004823319857253998470715397403549552699299541043828600228042513081815225777278457002720471357050022801476406933345686932830886170830057305167940698621186364239051869717947969620987277821778419384741074206451185553011143484488458809787953118505824658466496266579851265785348461198070957920660302508433130530767122893440393475121277770853460211455143791881212484838143903021941758560842587405259083428854851576851632977137186286008321721763838075448307953539350420243778960456735858538357242294760648154245030507999377657889031478310767137865441800166775197044096029731537776320455628177860443585376449899513433276439068734116932186439392460102185709613775089591612660800874206208835784538769323812723886740925613832152907807643366893977547322432237057367947708101339265529752473797153248641150551146186196533902996492642547742812985812338257433883190228407398855216285306187453885822951862258286683260117250694956744352784160824563867037540201680226036080083117812445976780174007342360278325179563848196610964301592738358035614274495696198992403883156799572863859272938288634724603160945664598624516786582447903873323009026597077995167506149006714538260544543231606680816040815459656082118711812208760684545855761073805427859349597803710201402751947570139585785156870362484718619661827694387223089419064287830792446314282452243521138166070126029555152036164386773852032375305624189980116003231584009373405786399105631749146125722853891930570631355700365721093382049225090506642075610391733338706028050068754601072817351064448956218951794293908810480770995925317085826527659651756715906689899086277155787576833450526401572726902784189354992726795525310299050654758110741647852467944151454362927497306126992727141600384340115831001265876437244895572408159347848710642257253043919285342086572114859008116479603729791242705947934614065155261047360510221512874737121042050278786996365160001118333709662056293174048579896586243491585527251807678156591384536994243881316271484348075076200611916309730604597121240396880065031749422688926422940614935388857581087480126977122617612817969891754222658456136824630119759987296350910370878244139566090590138179962134237066772097502829097745126465052922173640112186575772610437919880176628587459513310153295485910443575049894559405423971427369830988186567419485016261520488325836351257652386307273004241429426519412958713717595466621468653482021616437028844325912893335611131153555536646952571060857220035940577772165178048536475667228953093078852676447566211934289391415542733751448051486293086989234756884893777473471838140195229675727799624063084279860978966470591856993375978839553036655131023330548000114133238945932761046482804233717200736619944266891536283714959925986506818156871213555845313442518431768678107352899335952171221876854472832250817041747564653303860805517414972996443232911356012231031637989852656422996694654056906288225210597298134404655574705959391830532605688994349554825153952173661171572134724800885387423299469868009692004498501828143617570301687924192533097770105702911666998190159239640398013199311951379811283907752893952612678975294616073484362887693464446008714864024127703827698064220707272195581875989467686443966772025632580515825162123072371847196397800535643326397781254209408980500475480083810534091050894006377414766627500314284062809795790065754017451999558493651158456281967919255389690031511966942418549943914415611011397734079488496706508841449057460476763986715581081309519592281731649213880327425558134986655474590691447213686490459444802783010720218344654478542164285776343088860697353213449307310515820810166470388165980002601764609920387097218458140194284500708016484710076454507267373303014099270858699717282050928211399695169410713825838375170911458685888487409272752339322801727695874476781681464710998757472406895105790320630943946484336750321359753244710971394809282456880590349152713826478392439846392780550908782701939916701550676842673314647300101084463487684156467718458990282763308378818979269708573916444751587937283039614949845600040596361219093524098483731216893836560991018977635949360923339733150712421172622791954808297784939718966718290338763485364611968574584593414653406131867349202581910437359911575319079856794500863184574032136559457771710571706171874927633331632607597967923412693204555987663794760460378138837170119884617072713300646380530920193667684251607777579364196180464076896180878083429443251464551750137523698646471846872902606062147949958127057623130215609964428444067790406119172465340747856149773529836520102074700544358897234621390176994594555334840384490072697223092989528891886117637410205058216374853084389851516634626672846944296704880926481535565992748939164458229760690368287700903204156109283062971017154816933457635329845391296783781657598984772035617469449969261051108523567081548467453303449216165847761245225895721187121562171331548641113168581070257796342678025494501265107849877034352408999223001238870936878748060307995352427377168381560102668973097529288982358904870125386756571887763255719258683690446822663955333012973487530887523449440252695364330668978096287760487917260159758759003710769508570116456610851547478519378230333200059579401307387967207881804542010597018547460891849542069058062831258393128363140147238318384242830585425423259276757550183009430159280627227705202216919588806106175559422489178140957271714883117660011507739139690941954178537394696832523890713593077575030054147722457641648606556002760618887887872354431745851646162611091239789195744123382937678959041088130183482983814918288536399390154390861406763766772612125845844889404195896952246266209331845242888470833943600947239525635826108669345648360353032286449506668897822148943498856527151899089994690186569154463494463148593526584152094552524366536861522432112208481428270209210312954992247356450982173608175926019249236466170568795244081063897618934725696230953173163267012334709267277628172884273934026422315345004565132643126262446051407107963943024569217122628774003166825764185127428132957255157295904620951642398523936524126421298617415846527584279976623817545361145938098606846479077028574358101752289297100680897527401266504934207783657922242974883606589595041712728601114804770350411965369983991977843721565927818572420907092728046296835097021586078787895983683724957014291633016919734915094692579765362584933946785401539526552054798874479280100778595194737202905785450517773210876274093904627664217087896927844698830625610763159808541836283690407850348896935127424895056616225127284424187111139742175769861550367147996287341666336816586036115776347336990672752436407850425870750711759383034637721808572171787867040825020825369763806918897725960272813551766359555369008298102215200271840857493823843463404151976476769505608245615187745013037915545426159678423164244226381151452369953772180122918969871202684383485008580439266534625435033684144977481114282739006298250423198047684964045700499033344960957283982128721032951871463158008285025630073097199253416776972686851107749747683852158793097934405536753348258700605421904521193720817527802192331410410167754245253828966667120896869066959741527534802486538697794814213081551238950825686104888384345566019451432875095678509591123773364629675956166623701594185254508777696855938358423251612091029181705819520511995020324893680823983658984134445289463251417921047079959681544348242336428226545794372692372710555396203206991378739613624606520414437319512585989691084225604343096279924535166028432787006105654764147618649134412618988476011871161176174825296139770426442151952597171148059857316319008217511642439421339992191116988270452454647643595266533445460164120229370901713171574396730622549243210689207974175845613439496485786369415702418991606815957114837924706276583590149445053107476328153672371988826810830277631549289053053309054056397421510588011173173624259489772063693592977926317014152177375082128981735111658860694491664487987631967949769807211387225025351160668684799500356146435491786821023379557218287165152699716747171118525681496572817909475636846794626922914145982086075385361325838128581047744198010148676426121954391485321937857223161175825745056379055203003006595475315650671275530113399251206468329687470239792286321727467409743890499176605166393398247273451919435714556864025800317756865340081730382008999881845475319289772335298806200164796521048013103263318873389482766238591861485949019415592249047704574944751629569261952869805482847485076187964448389523188801382721625072994100012887347401379503827565429536956861397984222511655034568782188291991864254189364208100428559764048029489244440286999431544209060797068138488071279036917948303889410631613653609071783009442335251021375706468411372150675185052748018623166740072939080961644712911124378168851690687152636242657981716272360112674008531751210187989856616384360844187261263937570711639450643110665869601587690319046802888179975138789251789302033382600147829532145590755217049223373532251139199377816017034353232930969112525253312623586650968120940483680902638372280699201581479597961449902585608256139033694415320312104404446550365934771842992838347917647256247553846094312105894345025094743882025483870962506592941113336939344807774333857559246106447656088385748224473068640948693911792929662160936910059619672058046112927413602641133674986654901459648016708435868287774414290668615948344945645389447500923035977933771878323449445307767903553732968409354651331594086800039943299434520029973997972020872247170358245484929660313095604880337826135379343345675058530992014007205013766731463157062719715777899970301760832963664496180944531769453782786410694541880731139987681946026255822422752659054171154254928284142208850913271414162437760233541426180575305620539545997118869789103382180287927683466359263328722082976983635950507246412751417915493637785599179955551205676131774926479950448865520646766399729756371209292342253230375897171869191320038011915313847010580894751103710200230972068383093734220389572204738384333057138218294008631715391151294432248121044026167344296554153994906802123768721883104802438335037335063752363966230923756628124344930824823066667395371725168787375405371367556301906701555231256553268597976402279959869134667598570433282106971658603464854576559448186332564233083576885215108211555470568611102498402366818718206869953120651745409919029339366558724204807912847311333791022419371599506146455643257205970810996148744009171600944400800644749224100991776676961378327520571771162642060188913001069621012719975616879356579622507774364674776381903557031554613164626183899471644962804093762133482256154093585285063604095574962818486145252296733465125258727315883318762858025160236294675393256457692095256809147299301908675403172012955681329136679068882047847104880308670684528945266280526352288948099858278138122571982152983739507575528732522333002351722882402274236943180747122267073988663992982289793510256843892352718414525837752734906953306316511140402025365081174482742881867558946711819558341393036386744895109077921643201808303348595161703457079437453442727892250803621275465682812470612757948692035787759403645587684714676873970439718927733387566799001707147984661505087965929748590189130046990199204142053041638541204666647214261835810680101119671987328311206675449221050997911479545372796481641332464838396783803126526974527526800996217750465630554455901999964218921901287315769158756649397678923625871002526192638544177048427824854543373485246408415747863083296961381743110326712845555410834065585334970061187440271742627177180135082496098534487371459125253579283846108495733349143170964265783240228310049084999316611153887387929335848986785289051063965455587856779394052512675146198225575826813685160685226331157902436696265382104657711059963750627672290691469040988335106181407050487919764314066291842987926248587961219220129101110774931559694103873166508725498106220854736457563144499585269340844796025590803773473758497040587568475208585578983251114008553072814817975515162557170777310423892854423941725857266538936181854775834841313839485125512987962343883924435731381636727900630356402970925765045661733523082119864477143992319117105094841287440842558589854591828173767027788340569402959004955496209139967492679048761783929913722790282394478743114993760685855036193635726366919281646932223711677067789876561639467819090601806497532157084576522495618669384625407346106291745404000644712749967622926110926484161546200044152526045013361888652066881156612753398387271641012465065069707318230692330636253323361496652636491861710310761273890281596614890906427796771768500304586050026598548876032748745560661889213593163712651738274866879860192177511587628565266046052008981840787850998754086795283802818138145571166593798483487121010056757208301490551012151165774999505131828465141166804040512904218697070700117502789118217881757011799336071951437667206962205197506702210594014729437480127442836695207082515181008065172978936222425588195732376053237990767255613446973970048111475327406906003989470824104631589212628983543100435051458040710820469272769554481897546757952231089953154067392169093029193022917239593994521166401648887303173760071638216503223111589058955029004901986210444270566208516858874657846143291813129971081523336552189346486832107062575055889569204779764011554645306595302232939978957448762070122689649065101813559840804505724400390100140731274834499327701847597741235169746584816061034542545091279699870380275538001012283603163465611262461982199241683458187087123834629996038283017980149937579958385413403809603243055493945124959226560037601755662536726263147071926627330397579739681070582185809912679415927466260155489902492638423698780812925417446385503952752436581448498045175710142530176456434119421700923407054359633030904857706163604945419776662166220110434392606902251406400662534634955006200879027725429514330729414999359649114445390748718150128403311817245720028164207084072322869924363637906029830013382588331716681533121409275188524677620492683809974717146501676057920839331441335611756584004196405884943720329183552267172012464409953109193104049710454987609231105984943550690982987304430567453665294790333675934800444277564687401697093610267530769779736419411565348631451632391904142985508356925365244988411798613730203217953060912015368387025230056729316696207450940869945087085732609107703575196338482810359713713493608417008748208748326398823537230971926601060357300296827790423512116767143254904876102176650828636238177999261485887172626304942740637066087766006899651227859028488435688870854251249934132957461677300849063722412048810486351833607582105788478276415836171789127878751995774913863112200095817219731620724265826734359757292683129297669686092673344767728496628208671480832287130117982942494117389020077301853155299334091282471689960919165874306415046094653794369606175219397793377709436411701831887942238748642178903226315630038176634039984394350259903642404818826365173877094681881535596016212112357381344909900387173219706291461505667196608334237212132322703948954261670700326222840204139808834838490713688568756236873972821185088647876052943858878154398036108452295290119418949379194812746847068787877826948329199738321813637001738698011330165601579245011628772443871742583319681275710749404923917723210534826813556804611199792115635188961787624222838297868280357749144703183117309267451561732636176194046420867059862570128119950356225936014251727432656554580599111168296842324630887916245767160385817257716892264610874515378476279517489862588759400986279353288449526312836989798094315853655557596853192532753111378907134221282861678080533529973289286053959420811124152938609400924080037274095234723717663596653505590513132952864494556996082973482603299570907476825633530733349617214889292079591646400005253626700994840671354257911032060432599968145559797065199363634024443013485358553096903157908589322173912400501417554641945203381956237907870947567064654736441817599030133169874435809850513308409329921637307179415797121505596627843759348316267681547361483722376831266222854853928769559314311516453482351462974230262892743106207738702327583347257343255073418756209711293007596476879440403881872245772428894598942387809006886767765160570022429524285493868729463954967473452483783195930756948684111248218724815254033432994586807855081183365848462785264938330957628876215934018527572714635611604096495848741918181727188701073995873268884445651864477577240571628063643629823381498664933719711731888146705721975226595293355161535054905556748231600295017994351212432809926812793691572968738458934162410920045465807052824075652931748546480433828467277667372465408055962306530236820815516027371309943329749013835233706221646668830065776748824796496873203821515403481693662431358242982021993594749263849809327543648287943978401684202437120984994285358048864996897830595936148863788133759020575067308731921628120931506690622282084422361081564340377067584335899166512389568308722563312370431403337081943127680478038027753151181450344631568051784427811119304033616010480360651629380689793676278383660245948802616400953224491732894480757870431976626133731270563054295744381781023683746687487947327812625037946403068404821179515960011289812283025922441915247660583129639474754586716019428610935146140318116225443698877671752971525506579471854896693299161353633726353720984257778871021963969529737638056696864469919610652990549021823291288463341461745658196818923709158815423854419137415833228034268634270528412880176399743949684098436545151764808037621890474940291574117228642742099787203176241728217728943909316865508681139120292560151696548836847553144520887550627322520986820956728317671976999942637995822917160562059982150970188456881747600810174918503207854335533656744305955848523776905763263118084840014285776681858945949676283855087045314258144345724704848862588029464187573634840404103894223180866712892573156913880210941350057530676361055136484819831153632387796060320473939457951046499274182173765966175071184437117482300548554320910233082642730383441340905771671758235037180596291586921295799336094803054868654783300594922457314712088904540217979280978206972309649721117747939187410837030625379930905708922216077345236391355415224427889858554676996011866717226573284500902317901517915623528742357047892492073769825061274994497768996753440305064706308609147879050235771946584312668535382349863330619689165469488045225400697841438308683420945152313624856771782873055144938330768188830228533484539072777676288621174758383591174373428111551859266120591487668637533805318024668712729609072229398523718086485160123036360459124894334870048496268059214722190737366242451790601434447592620439125925688554378002562577066479148099403750994197487725554912679416563348775203722827618905052389999158549449132934144278869650558418194174029486575083256930594332067675168863746142182765289436778986233090158056667090055114344509842037236512323319173442920502487915350688231536171511956535138984729489549354265465251671905107322377161139341194957492155650282333392130805576583897251810655822378415281546412435625299891570936314575591808748589598457627433128387196163529267395720789091184009452230300568216579476581666490690617079142992880172101554732999849871484520153965790173809175420708966659583409093397675042222969567234085498837783973515026144148606967405013968129221996850769678027727546724437939786764873938639471144223558805453150126362453467688246584507726314234858755257613249372327101196416932603923876678409815426680968536953772663544718483590630542490212830125919754847520844335637870620750259748880143897945855447871222977288111120710289630712401604748081800158699561623039572621764932347867845435155871664158575944568778592102642138913527353103402748296629792282931339874803572049345721207644441150660900480354223263800611351844649165335747129058583785778995953397305265153466457307648271207106933841755284800173286572423072588347389473371265486528906602274118016616051110756361883615324285948255542121018388617393429971547657059902871986913881747913505618945621999243830107953781808827534104830189506669438816895001570614199966464022788740600401449446690236000386752843289682391258250118596826708454171375230100084828038547451602076454797558505213110716133424275936483995236100877507252458154705540281795143591513401554743920227107556492681740856954400392333022313617413096959018661321298665015514365435702958343475405810062289825563155662167200644626013194115124101909939309881973801280180286865651082770804770708925770021949194010407116488673100323638804661110174122074558148849619932527110133296578844209787618499889861992941057202336731010657743493471662011975117782769943100171940169465915041150883754915305783637493031377296530590579478465770266624611418118151308382663014912718736243667811378717083123934037348375351399464066584762968474672839188319976496805858657923172552765177918611734766607409682810368851695517910820668769668535566347351832545331979629569958712385354954320607573591323482556790988242198841428043770117589326754640644031989021773585291145176715682619509712469857627368954738115389187316003486029925804909835624777136546838231786116369428124898930700116304757737511321480610684836361305755827617201183613599016226711933638766282580622454684795805979910429883053195467015506758355187414682542476687304460556170492494222372936736091378684367873477950975352057756769446238255495448216466543884539843273333223119888727667186214532881009420624759944316332604681018734739268009296394422485282107888401947814911435006213502338258467877107613025035095947705497222528440383158996961093244635875893484210009666662621892306718221159954679473204119107776413748627169108288082538945890348944116291671702943246576488805935891209290357044440882440616988112049760771803999205411567030106954631018212487159918607198945919124746583662187250740007964450303400476022413179261955931351541329445132853798807563729784795244975649442141610475973591541757247998997569954312147663387468030027099661032307533502625125226757168214658314889312232470003088587535677296459928834775990095968539127979483792594272168106749459555437523151612089607798139426399118416721000060753156861097545385092959830630086167835859742169980376554048704823365476687556205054970720556296203265642804404727609836085432513642720867514338601381912016890811624369136616317870255710486855752400905924014707203695018688470409847015560024524407697835118479523666407996324795730394150028766353286429089314091609420610354466487372752424469117223028343625757834810566061763676778713484036920142890426174023146532550165037896102707773795614897651004100247400667324000324720594513778754363955337370681133645258170004125298192763856211682951062225505191922440782352276334313631382661571181056123791675308882205794196814758712847895769366852738274360948123816076880468863766695051705628227773896005909629278831082009441101378072644264444932478467388949730201378589199338380343965510539581407166453755471188591539285677920199037530490172069747046519898015063067593995810243717296307810419081828547283108804014997932480345390962510385646169555746274377573088174671759816941319925564876382717936558003743930918246539164196606943327982686387350032368843079018751141505227151744897812699112403329619578899411423132669838349486271689054354325994667846159280728567829434554869405212989594836914761785595998946837544782925747446607667735586858010042744876417881382106283190466530434705822249195208544537073751479714385486563936276518740977911982356805118902994831541990123703739712170589460732303277262155203773917638164926865647295106445114141417586673558530367612784334295110784454381486543169237678266515479755241012670780102918863842115645310362812679364084847267550298678113360683334043175078590193786405982312460113678779634081633397692133306453783967599494227583173642792981372877123289397405148402114531410259019663941204746337648535876417814924797220501872087767808147371707591438823927918908547198125478025906774703847340249860755993291076735291331431147473039956347563581562055217964550531406898256327740267512363054706301709143604432824645393176274543280903080113961224085737885188243085241104929914707105138074352242641728640808875883374933468987744492422357552424257809037803052504496823624579137523668996193929175963007024084495340296243421808034237363653234376851244931100227252951932755614188260198642576960001227335488545197773575697835079502443854783344487272928756180218155980756996372556196981120682903756948595059376528222210469134771206995776291814236124840524002555833218474954529629397333473583277232613017497675427050858540750216363548462421940693176688138283149332504084528013928357341391030426504389478388247833058556229774472475735418107349855107671151140414476125426705940815170870965340796792926672986283077350662694342588135307003223190292222414065390141770012959411514248839447238944191012595787558619114361833154856048258263354465642890759957024310850915414015308735193383468952042808821263510175287467958021562255179950695867193590207547848269460869104879043399452823300627960234618114735934916785688066892497927050557604169560512990172643386168363905045423545070469287623651361781522792212737981373638590145508807619640097116186981566485137712841052108180343496717257267893474126291451904058140714319095127766322406610545032623647309297048391950229848437892159969850135226249853012771563966507170018918718497738256965685145766318386454182892526486552344552069343891905764896588637149459107994827559748011905590960924451663931662216740718645446043997380610329510204555969398689104155868482486872861362872463965066004409842222906088068356422316635007954084598258841218211504223050510798462976013390853032609672410435342801771656132037743939009563813750435928051952370719826684380509753926861846203613344375962757401986333126130005817434654779499269039259059835173765446046437465891023487566947173658817104448199654809101733680367647588920618400272432890678840455790080044801049488287868510495979827929141841250770156247087981269228032869576901940860148704910174336356899482487060012463352750882569114367832689058550565449017993249335679085575134729129130359832852337415833393121219124843640879462872432600832880562182070132120821414507632504711066409008524912616327851153841020418615818804034724568593231956816786146387484798140697108217755572980398153609090945376754286188752340691484667349324238400949513213121251209136215632803239654579284417768469179024379602197393246428802255652092510037140271493880349529210776067422319723398961742044740206811481297805975661622521064880565158425745228440856134995764597530466683881509534165881543666813245296163402348772399500825043098248261004877073705584336727946933813485107904330325622845839617092899505981949227326210971901621958417551894279565182000945386952632001993528543421251155049118724711142196120421216174769092112445490961434016183418804871101384473623519674635234284922207298540598436179505427013255345283363811657098165872418376631302920843259774375171164336239618766261674186542819986904739405000234277100967261214083201036444546292301959183697373270876691695382626056660658997498243591899546986748900686673644683798588680977951634795039162446476490740273092934949288601843315837713787472086238073604547746523004670555881831844537775999620536518614889360701980321917229084988021994093069464302367757001602847616271431150441705826134296019556026124038731108972345704246758116949033272507911017805896634140356995930567179174341458782055478171090336837027062746046293526682227397999872769913732069239383741550377990424089469821721766973715339480552179750172496764378037063734926293981900757162774821262346558365574546872060937603048093347004942840841209142661259388313079659344277358779012888006953393630870067998511684848208722416656643300343840417989329549720301015377057928849184427026933295907182472598871557129127922463076170007071537861107124785233764096505230418295738572319720371105784099576908486287652990040968970191962541668939287123950323858876564113485151297170341961146188327664763168107550523409070586284712775445334938093410148901708824899239534779081892176083176309894753988564772110745075128057224596758156842971322921928123847464983202610885909751730586888340703350670842900996903425933687722735565793504479337159762797400449260645895088062664919068286194715015417066574592012251289270982036714322111690599746935278859447092231792816089284006711532403830990194744953955060325673233400707140804067181300676141736671009716513226871180094343482959841380283972849090908506266255995429239922094932802473265915580655919408768605764447039762298727411521320555908011472758627666267903725626260198136466088156693022976904387189876596996531676767368465340005252281683722006909022161657348427394145096141430439476139504048774525459977788008985350656051669011647218244723797257353345482427755660630314483936784265521897199944124395749583213767889665043645851593857013173853331588883077650542289999844006383026213341572122455628786979612688208046545339000564992884793733763885376746254177416980234858944487033335121277793219544104163421101772750759291009526073874369543509113668105274510666925727194701126088479955253944003870259560445007049802807157022784875145185410727611079961748027987999946251273451114269015197701807497398193788452212448230038903427528776234805309382081953897972110212129178632433633657348088550789342140016738018991756718316419772778795135174753004176582255394601488996939944593580330123680937581685064008707787446197280453371130766415435746584528172812702887538052344335269955022377901698231454041256210097778166536174771626694867627441889161760473864483791672092391251054763646077433780856500309373428032750264641871246362193425986180862280226547542860451008353640937282039654307597269867836384035491240080556016652360246510250621150146820156969755615475876509117489174079525712142854703392149508199628859782157167122377559382316209071296340871642333848918827851314198226720156899787269327744520679834936778193779704084422499322188520433891251163657418010462965008254907460392686625354460858303013792521053257663115908077980072363410078228811647595975865670870755654934991845703427830769801366046392657275232920552825774978173069573615942296216621888254789401204240558242481893780761756761845444804758153045131930929032138110231660934337782159506970838562814006975020932247809100463241188884619867234403856402821179142793643359200227664065362642903869142863706636340319227933296297377893824743172798365292956050194133623740158480556939770422031741829045308196805702953470090126781908545582342849938777350294311700107551856307767744522588713789205207805339982932808287777269101798850639031259594718769837018846893504397109756706938292850388060576818352778512527202986304926437358246134708050414852348564463756639503623013718686219371658350218381008261044550019745637441744184232023926301356382087770221866882430014492433755047629682987390461064468145290324731837826356001960754369479079841937986622155872312899175194859208439227952036463356357344265219322770626068091734253182693117200033713876471595450479799411061104956623819583155900048214632582922485674190816435609115208242258128534363797734281393881493598767138440185873525471877884770154159253702447986065473533361814615602607692710192869069088121222606130036815383359622251228273239749133673763132364202245971069927137372810874052747306432870010872175793005996077745639326160759677669620882828077000012075235869861261684555510460852262836559063515166827959403820769088520473794083187247152473142289087003063032193642291787817710778263386140000889878891905720201137055600309082191156607856863008150717399701708911411526155047960733172025932730004014423341032278130535404735256848474725685719886252866245379830280579288405250227783622055509318519809541351067447697623586196027613279423118548360672229603951625369787324190944539921399470879986846970039652751182778959745496128652888096883966625372362281901947616481719296638608891333316880760736635783752561842847530046977824693499536950531128612217135156210152542814325577263401105796720836646444092470864420876073948469088354131007128294124574094576055173291076622662839862650290205873756168636258592529441671564719818924119214176954628220884817901167590096265374863328835588257943880879456822194476454752795048580197218317980601051041706808995388541137733920846940181266023687393033677575738657816949491001917158387531006246924642307470506610679408953667482451645151215701568925362329227892576868661832829532247204602780337818038917389694884591523624810529813922677880600848750412169850143631666804355306876852383331122166438216136448203234503475569010120165863378314416758700214932459208282193718734156554106505649009256122883815877175008241668479019723705210235579341442506449758686152534823183142781779534451813138517884043613802530234361738100627849909361031931528678980955588589276630370253609920120696565694130699881252164378784153336766731974314789823870707683508164596103410516701825723296008816038167773605026694164164418855309515480191265552991757918124790039413234284200879847075424820879883008231158605630647612781054862053396662711222721496338460644987356498829991044418921944059839352262286028844149531136697909739981561178631982408591758045714675462705093265638249743251594479683243431944193754801842690270501744801480302728483709843104788823220070936885244912823630430452069156685012433344247615998917989977858915914731386747969621916831605332061565777906219611899089548112897484648836461913552260317576728082369387386145909330500351363748458666943518468851543385852945619963805517648939952918062135120089428464997951054645583313331211209413479315119555956887822298411628942170786306078806618640174993842730948592637348150997179054236704117136715092771512450060301386994282643111022144205088051760579051331277620574204238799100553956938590418712160141087910158613885175149234762175367018947448488806660263910176305725657727967331022699659024051966107559991118157025721529567107170609486737923376592516942276998850863160636953743523596016909815660648340019153170286744836531315376116882607020773153725154723216661402449214128234968817545752618136352878712555085386742750398474877456722712071714071685820959239842934529773122709718765291787348098492963308114783845155143502016465000229305582570652406443430153673234889394880315298885308505880358446930103353220871787321941836346207681139587479906766704272892706875655584017319535641113960245919649833210949219613120333559986534247751958092974675659057517224494902601647214557823530421270385533568095311446183374872465660544547508732501062227063113326991713392078572729454365004718745627948355780214920739070853662718096428349757030019510277539999969276197038764402263989935317477399321783502489720954229686936503683192846702426889878327336563010839630433855124646487497239930630829796585508686494817443926502503165227967462882157015470375872096001333190772985777939417596046868711149520744705362444037929851501948997799642404837031844498678909367819352750757634981049261874185948264686545954261192847254971789502438757551953961574797714203779072926888486899272898994778237285624187199438596962566388775468643703539917620662906073394698731444791063933395130740155855948159693620134811563495335461326977402375326918173547428370585940339290264785939453297340503067898842181634353530220617113554791117780536881157300839852038603408612188454996610095923176898574038212824494086703047988836455456330631118942541552198486600636292281429054141555434450884029697407658973974276062141446043386341187233217313968005023702578955848167042087617189959909431703963155747259433005626180257387821970262614586134426644347897008145951448384443865837818227961795889073801194665044521221582413027746045112150747534048275107457969772044042961570314131074773391641061841190541503029333509808597846794136948758300246886735429964526304027269001617486394078589008823342868167290595519421322301070110843171812125420651823345197093529529002011274001480585140172706270693101397199758001610942037017860538092734996158605716935876000413301599527036092589183570850619293014873750441018826756339009775727637356173387119588151931942314929126542635573329475316715201182691828155525757553834059816198558661451000725236907829533626413340288037056375676024923796133685678994379358191424485034288249359022055168857397407148922925693934890412652098590916711019720783801557020644731706871878712116493712609103620394651275841129802215869587011299679959594439372235393772417377177006888551391289921581697750366578670794024189000004420373265699185912841606147189951297650959752682554146447148009159291088258667601637396116866798058900939860449425190846960810578581731359829896241672420005246279169846677336768482516099799380827121249286840361906585206609675867231179743120105761574071787175537483935531252680624780685298876335128558867076826295595723342574300911284716111454150901715938514066792017149250431754231203687071318981405553265557062025891662228163049176977217836256543618935189780655551902893614261917839139278428657532021241125182972867600663192832059955903480202204210099118066248329510954369068283896661552984053139023361977134995382235586653491082889039860563215282479266728502288541875701459103088921350464084804170643569999495294833296848142492887950813298171538930251639675494124947998750378641142671363923772462153843440187622649934185207868404190723232859309540240357135763069086424071391163856561635655439467041031893038043893565048537585811428983751307584886360224386536701501951444939243229287297873982601690060293562746925213802704112662037502340729679783735346854686299502403347138950988014309406913164851525666220944751530913004185926705113712598838760883996119914640129422453067761119552989395040170853819774605777975111868006251318878208584925434485707260803299843696526219256902902699877811842256071654598743342418803183396651037457258671278319896494926044811801383999648176401543467834485935336394025117545656909883864462014571038108286256173773239516949078090233947579655896794390181508745952416061501604635118456272864440420399510223649416844127987441893405832843978986711843952264386748177472000826122348269885119492548833239261491455322015749910186436796823510618386672075239847088962216530573986805333399388074243724331753707010855599164232527746522962785634237375980839654389842819909257048357177970695188096473662473144973514049572977974723846688607510693258274520735884771518382819710479127288613565799150971183815555890958251266769651991641999069559693795070251966377566994772933523398486376834713389822627799034801439982995347803168096780388954697027751771343782383319319041701619829148264913353197557569291897947449245939977590657851614976223990646638345534859480996013875183656107139865543827389273464672605567106772943744192269416293330261436049692607774274560208157498785379844541201184278186839459070017045761928780001486410557252348175073100104614576233630412416758954728140100916911821506428854726090284253847748806580968870132908890476962195140821310723329654106519419790788342373649899355140271586942764944318872835853620236950087125847653428006540190974986978123584612240163834180506507044591279050353276683100789763697936992482529065551803788416447776874101127432878822366302674061298902718302474363624104275769696536781502487281116640489044939736916121427163910752615390244791507246810205972088989779740760679572420089127845560933197702761451833056323764096420221361043866483122877154508271498988248946582934750704573203094017943891394611219544970349696658721228659946759657275369321250336365866508066256983200915955342185582400659373594185059790168658653808831498434625666867954514964705127123434084010527071806867391122979570958097627749430202300274890468870240249667754109538010469491225773307096835542049420806763630922762383954849765418985758948421541550060457482646182326317292737683181482083691013749025750008441918759389206151022365960785169944809722011738002828681782924474780210981536319670904161351086983386973310187998588152185881659414319584417872269421909759183167198054728325609879720659068279812139269387447151368087766285515552413702902761210746576085206134016717763983420798797680198322346472932221473759703508931589764286218942844917806238336202628463605364495870597178069650446899036484626465283369295648239821613071712049844883972632874446668150893300356145924341482419114578738739001631739153306170535335776541759359588570761196227336860661848996917814038241621463161527196523673288290778525069477279489027612685115347992739171849626157474401134971258355008510924641256380160797706841804023458035965757627585343302501873335852323140872452051134091562614421298646913783971677212627320334434613923357342504591484017986492160619555499953217354987852616963504663935239182843650935515801248421985470526775129145737656240331780005528732833172515064454226962504719893857104711142971871575824678593571766924664962035724135758031861545009093713470154281203827112563022407417130427003872356672213280693960299656009204343755415021054870835078379138329571746180411035004422006648444147026018717736562745000591502510685579683644424504225184651139538271166188446984778428763477462377121220515979551392293856768058036742635858244995147717056495013822542367069216572177689731338416645416984520275438316339720982492073967488998480447310619302228632778202342315899572254401097775518659675905281113028736828426672055149298415930543644583299894938849854591884625786597976076148905499064498111596511437721492172504608704712558379023912137028934566856933788544561885800102143111935520388709545313054701180539959835501554700774401921194285341595615609927199834602746026865090401111714083215291477625361806701212523946452762764069588057147723013398623275213429261010531371098072358934265288347551153016348807902105460317478544772909397337535047349592672978236288791685040567083896793862482929286373584433966921398795508901147434743749150702191720116031974574390174380654214224333983357718296353932663356102368438237767519951190502318273487836778337401335610882662139119625636281581674275019901881303645894488485337739838206691030271900708557752324257701110576231936339053677233844758917147230191349492413938889580870372224991606446853293409521855718614850791199628187108151516179033759845840013253801025678493560232681641304112108112474818053190514476241967303349901680111721830314373199916363752023159039172216096040398206386958897033842035149526497905392963546927973442410102492370431053872641818939666701858586896771850229614718174668054906273795796004074554110835874523525503818155235738678387212374607851164104116800067312604259343470747012631680713162974915978470939170411283953788649257522055039268800307713375877833750009581677216032221681798969377780980220452118875523278788624069739849662147136951179472154621037540256603560291533577117632664935619117839077238704762916326765231557325474331245957996294551306080881243579295165678405074095208623705168936421996689912427290118746617905356060934695161359869113943077710706925927325628908892823914355381884703313664373567020131819218845000315381667788022212462385158282723612504473023041957807624306077130129350913856333956960075601704030012856541432377952909746600356902101334619973392509926152964070921849265778064403702251461843177410161573209623688531408406494391355503682069207394032631734562105345248792033008870482322617671914904294496170517668396427953305877440291503321619159869352351682810612456968216003598505973000056227705554853686489330277278303596580290472392587795164995182679334453872663303049876952272290652504427919252405070092472386291845281438427660204870458321948280495504612198490715684426564732458532995663112082104741630676744461988692006589312497694749077801511296983920418839582092005013402576629950948580163649532703427007426432389781175841837913119420028446146377720294549090971674234291294336155774154654613562478620489072007944959464905283604545696355109227554082338250855964511978085303471569075665890566082753321301502137013351930790568585085933265946267331812459869533934816799038152962880016965081083523389258764024204127576213444239933284672631710327626786246739618068096155473621237402295842354978730632484787008362623244809957245375563978031921737344156846951232303371654840655636792668504389134395211180555075231766835489008854021993211732012173795483457161783974145162552172263325299113896519200183652621128547864734689329129043167212550841915351136277667096776281658100960121898953431202631890821041069250350772725390513558631010681338836603311731199223730068014182505048720948611547692843148425605048565301691027862182196321601621129350030429596923285507478323657221692356723308690843913908591499839373533088418891431243503846787162312562643298559228611273405593135360250961619868089442429158997225112153214358229160933914870393850145047345853618948376121322476559415232915191877029237325850651346295696619034465132326927604141384284104940726278635215316755188612888752738659581011899304537523298135058840246249652560064197675468032025291411416025385644415320740667463685334685651477703719898446327229656510940988314565127064848761318953581858351461732789493857430814361099277086322510404445778936607314612848209756329340400955515706615044794697323193600954340388353071205334633123216244030759196302088263730839434438220176699242720517277903700464572275334937875883124493772882846045277982553589974629117190497764308065457528559413528959807792248134214916122468862229357549498642864549730486519333330154842039967723958090367786003167699949921979857046547215469439799364442100176816079270513245270703533434553025396447081487539555318832539188179371130621142200959848066887999037309273424700150272311932353567857663256954877386102465181359815901629054777686628508579239454251103506050235196071041746337556844187359273072934002017679153078375989539744729237263587684134586640225550945525609212034076075391291304002081402163473284610418954632396328857486749995279678225227256974932378063748799605975146617407300646508445115281248229612162198301621332956612438689949221441098860420466989648211430051712291981872939578475060832434124774401909571581335587494212448818039897779023329496447295494610097011107120058180929880279301735722112856524401524074926896014586064645284025787357687030324845273763618855243309152843058647346233344535689968983544373768585638107466729737579716533176733063444602877344384461942756656008956846478175751195439553007713686434052309375584244812076745945692479279246221610209859830054559608669121887654025346879940720496967020202703441472992719684027099761180734486502536272885023848507173354642867402193220140279284371768195890498542563978674258090273083406284645922230130239020102712210494064481470522553913478190344877949163664408936633911871589119409241936659756382528369644022186003989656390002555373558520239307886471524544924248240847978566946893939101591618868175942692178665131847265936291855693294083832720606010714108593854568640805650280653982296042382960425296870042994670989547418188584003144199449421469060502441226962288210349543902178159616265324540429775549432473723435183055724335388351155868750570052984030870821121110925762948605399408562453447474998540696873065784427647197962056549881772705589499511876010234713699270987284498067943973127550307617729829083158639021609068198694876166876248505257903456842493152772521998198819168580950800506643956053005244298564883955597205705779107074775064954920560410320581049182069827084333906316146693982067537663896166260102185217451693547512395151650251860622515442768970466890784830785023584168520108782348748015964567962121491137162606957108358674002530460748205383953311931542645333787388239190469357740164664752881822937607530195276421789660224228157624170272676204986079350411165171668477433878922862150155492841602698502529809632930815965267821051708894288770478027072434730111743849812726706912268742913522600125260152415983784008557510748633763995256667808188623908960244454436607701551981263574506579285008254276518203466756028858282093035836235361347783603964852377096179716228366493876489703845803411969800076370405930064971898362485840025151495735173916795088125714164489697539836263348111489173683790307202342016106498929471534194206467703670236619231745465481970693851781290363167952253668035868270635907398964286567604439157326365149404098771592823051959626330984183061515386612496926793348619169953984381772388057378668493286760853336216274668106426407527231908569604709114482933617709856260081836957241189749944645797329154407939748812423407156810013908473229207745595810705907884066828703452611662322344732854373024377401412454610047308093529941777563298793420391427519327854580757916151463558076995273242967895024401942923083799561708000364994461418363049171823476187087416122329168365600810280309848767404813737976395304194996032831522151961764972747877338772484360469103150653334498732787311498045148674077952003826137391078028514781428119356663238317066396121232537990181244318332787275415595691392904548905177358554779730776950041394122806878076510470583183041570463367425049485043645861145902704280557183873989291212852914487588556799186684004802978001651215331998455651103837955132274286532092801179499395604813080715154519860263700310884365351662103374030380931166615899627606037977821444202747866756643358465980273400453189790614209351771580708435419674101417138520493707039678835551378289683766649545437222629278782431910915081058421269277151198486015561392159096910231570103309074696299395572833294307348577496960429587305924394476128208052247898013579959631330400578326150308493617663619541145457398478415598541416487826379968354655484965068723893330884632625022175084102212103415723304350684194338495048521142255857926783448317954281331806208263973938712605685207048807943538009628477868214646499343892806631716840775702269017254888560102373194277416489193702573192141464167104411094601781495870101069937560544816430342843765000185087694294109517379745551253275669994489253566870235359599618761510389529752474057384507185547341186595577847951692333919487375646288271335794866588078842097564262792465529146066013121647021630051214344269478784519495076366587270005550049290853735895817324116471423270904097376026507457216872315838742113636491725247623428286974441982482280388723476475151626546236640308647698649552237926898723069334491388369569157461120235275743310654926509148890627919824149404788661079777951485718783039126594793790493934837632272038076952673319337864292464272413199626321895272279651140984849048406222275222219890664318540532855583885944871231060639338572144566674668776538947303983510096103681508670895861382381400085817863562912501268887940106120141609143957466041300189944913424617560768100757653888220696169927598994126820775760653942255012177433692733651851571701615736155718740971186075242457041435668209851685435157735289264807875462700122432055701066614865410665529700412389926502275686320491784582955217938654984402439060840146683080407552664770063925635526050463080858828114282176733128692352948774295269789578714754546518464159739368247656938611175427507963676762930111217711115010922965661707024730756259468765000886192319602480209338808329899589964319459500333432847690875587609057009411713431217754219532035307317584264195205547037121433475619158145006670933044981637849027067346792760530650249839950797398406957253984643250233603689536500115348352442405508243685994615924652297335830566863468025737534475101122916901597307992293962994494399344673759352890176335860149830427005503177390882080482987672775524047013036988691137916295110368537432905088446389601442838168373955354993727124803940619312581024222502624579607407464427516137832912786352225692326351130360299227734298406092234981382829002190785281387550007498354887029411004444516914165648804193042878699521261473701780164884620283766110275251663034704330247039643971799170174328034365591078133392070417765385113187861859206363167474400055371522655576564111690484772582761416701725550742793609675600124777274705564250490856387938169017584527257950204425104947104591580745280320068648527249236173613289741857272329889474646530591965625382291877394828103339827886269448967867874155679073114000272446478594291226779839221580789574165361747673700545714324391771930089992532039355615577083805771633874606169143074327777827419104534703181950109061606368162264692105136994121103650999825296723534139959131038878235300532930543756892383774756907458565633919249369436924418350650429983793466837355698576235683341426320550382435332595774202086544871428036369774787407993903092029980844950366908626756423206835890915388437771028740118478336880793027209223414033329085016046157974606741185797924349530029260068056765023731570193696233156289520388186237465904424903321058275395587189939239832146040205150736703688901108010296342633900009000307247141435425501880417713101306482308525360997657655423161847556603523590323646577423890102302433402317529715248459372995317524973149732686261794111864090689763468092000256906411218493165600107624838278767380598788192681385494804087286890495618897177269836602529751153760701436061267387651889477636594218394309938999615079829796178129043574319555923733811027118963137148093082842236129344520021883930563495346174074879974960609172186419967215165819374469669659354675406774817850757154141336923629182270908895148819354367575871101041686523030055539515399015657974055645590968872061972618672855628649411788207171212654188728381656788516477257101826474128931622014348057448157727539922781409191303884058970991774171732184619054672677676283110527643305014614229403977921919447095658985410325011430105619964638402262571004988342744843009324959535176390415349128243011684776384819885858045418926055060083651571505873586447405050321994689477546422222557847335698524674593568868742345454134428313165210612571764414369719284736833092363337574147352072730297958959157839888145537305733832474412271140427952583024179048922871998780707105537165317028934810935334964052532648872237327862182119128247944893218196267702257679510464020538370595748934190326352380807252914093267423022642024165602352252875163931504828285670509826531457067884789518707436831056737298600621178092229130145221281260954897684018794640031283375852380367222732262144084660728693196987022336894926168308808526201777955990428656235359805557107235663073990311802594842106275599522558528275898891812113904245431175846002242049326518223575428609817762590730643635056265518270690087220715665664231863500236382140924407370906452645056212139276075936884209637918259084209914771549356519327937617740171934619118484443261755877094679161463067321925495967143395522276908146162636608852342036244661398525598482116792813154303834507401496574469035320493297675208147525431182290851722451366863305913656206105202003782340098505433498664715392382845548579262363097466140676864858590892288491645587647327290503334728021898925406657573115551257297743309405832663129869583024861332453535636338768655838813350015360183187377914060790985815564065015376005661819708782945057653704425773898113630491009016840545799271079697237437191430288634756885179745738870262979624282145091953894549205257778133887203234683473821119798336103231570614644297564161417750103158728742232425863332038978816919080650262848077155345811636422246365239387364859646100441467650284859322273518105564914461263543350323471277010890960917895721025163392086788397265872309122045243641255282448588022779978948161284825583120833896659383342006175718653783640931526318235363047442624956874803530303745173897089553468208725988835272737832783363628803441259862248635270494483900430124648519837975898129119038215564413359098247606750352524220768441749127225285198853579978427595553989911219110726067680281551981655596554880331694689750467119189902881707386857682438348709060790896730812357135892890722216680430154296660346381876019877898193661801800758744917344799001573315178749564165812813336578375593719031039519404786914959660074405968584262640465903798656181131371758417750432984847359756865556356173423367317798708691024790422840137062424170534214243023096430447861798007976084534101527137316123201017222350307878148327960596344849302903616943830401518114798155400005305784474146458097280511846287244785366444495926882739446825462106400808565690190232603446082209554684506748867293029163056509166644584343380196687218718536051522530352587221430856919409222070867594772142785353102684852489116815686132051020045089187549997746609846597595115357082615828205442305519359695430073309009824336453176087174751716350529665994152275221307648403392751509537325250144028666599195671216088740359746670769118599768310796832373367193248054105192294986401339412736752198556701725358778379210863991610623072981420827855856401637082871768470015079196781574285222753570088660712137743534369267634593491509488711924466963598254574166537744025512091219636223760335568453749055701677168562224472043488007690152366206167972745626864374449786956371003140964951227634472122004632696900918284179970857846253561161540144652389069655223080180562687697764192340529787443815912248744358938976549906209505298430790396346339895091381168348950717192458716140133680720772883398211268502129561061023880223294661971250033896363854933644390107257754981878363625637008141494314084768933662469489362232341357849935734475283722007299083673778480033993695188357417727160157326273961142280856334264105872928231719728561487048763589162356930340093562226843269366073820143788654957046799073545001439870380769862820357672881246258640152680020665211880750352320443509151053017589351731827832460785625392168359400674505399575339625914778197582022812217374001769588257007142794960194602417205697044898808937574397453888081176668237833625489276904537168725804260878108071577500914444649949278128247473327126782095104214744242317340560597571392992953634854857651045367860211043913664950300684158915508773881650805151473983123666030243671250713512854285873993437443460184624772095113884290217478363186140280023953819256224521096419496047208256578254231811921942413154228211411266409024814500656160889411853542970507365513621151804214878937552918100992011430697823876259995819414572607853349412022096010378679054371935198158871046097879406627473880815713926763226856202257112404004903237762568119551365678468457275586775293960071351834119607074880945553884715775239899186208357389250892632186613282377588929442322010075922558945735369475416924595611230325076460716099067550800004803653619452886125678297487362215650396480681678723853979208692157121579178470277589045139054958483606034424155395047544079403240457791177099185391167154564140261659524170930973608435079440996631691185371895496716136863860286650587604636195441855092086558965395536847849677854719274862000273328280539273802807925154463419069862963705231349807559374862900722858744441129288138077274018678265693065120994494372770112464646439692686873053540230923853598741174414551064332658997691964390324764878270021015121805453979491131879090647497242657116527966243139574451378691957426447208997827810122448336989271440141424108708608769345127748801688122802067387978115351105961440896719266920316734774187224112469705529541391985985001262995554003725656424636338984468016974886351690422303336771817423301104126270447139129458590463211689414511212846313151099800796503702646353434497044844968059383865691166409108044390769296313930484086767911028354421978548352551471134477978908381863928428945584405696309095426146575553897792645236463898083441143407213058120261070003742710344724275281317642060644334100709305016083535154913731153072942107873678375825015836719155675366319442584516813174798025991654465609084237791225967302228891243050129940465973465162734575959230882095229233232879660860290118180946939349160813956550735502512484525833460940381844936270215687066452018482105570668815830701004572249509252764536323816274537950455956733384495227330746906377863281533426420897212026654712653436708435750831609339649850588127639858158564594505856645564584337062535593458163721209631308486402894715589608042792915113966808225418700728296515482548260558872932144802234474069125147585235179241803863086474057037854114410444240448638612159139427417286561408718816555931877420669223378209281487237122283524128240112438769845332576390333745272035945642949065239471689390373795950026464316932123694104365880661205186601412389959971096313011894360032847212709388437848407306225681709264919279862479493977926660933463759689442236809451574879532179438145046456569025972434518413228146736420586726042634835063817879123801322963175357177011431363714705235682276356682745315339970027727287312056615679487355376033998242537130303947211440780736841974400298808534196916833404253628013299288690995651724045682605461354619357163118606197810392148192944048263371707498112492823764206682689713735352243309624292806288215591765913172519918247288317656029497098897667453058338809256505090533629814444365232545601469470846574134626231114823348629609484625038049949022305107292740219493627556415167853196011938790989011169754288016798868374436629979132645524906110082816308963542990621406785256091015530022201020710922999860798304675773639673136367941954086747979312258770171599707935179381138588686526478445902652146208660831041550095776971107486470380910856435105290331130852075587370611114972433420591160448393742399523663834320526918887381768394785991108410110200757253223180520268339062734575329782158527548103394642259047362291627562203395841053725469323350265891366524994757214978662703344697627916664631697433140379249398384589685914532041921810819061457311801375464916058725341531463068791653847928899845441709978940690144819138294065106033326035139075588113167024215424711514461102967630703219406368832263510160337253623651968373891336885389636975385308970805432799900330208933711665517235141811894710161163741155042648455621290029676217941313389283554962778155827581789409898517799492488079426411514258187050693579854534096957338829513593855166915053317541391543092352107038625024241356907171445989784219602577210236489224651202629482195016026625809488891233859189578386589749194882574028396883909427361235681399693753330825358286224427282935214576594484108181990321989160541587620954234548533451259164634759115144597274390966776209540071400368109982630830164545580483749914956097108536654997541247322676853851823879551013905852901630274306955893863879436926064380202883456720124714283737139807124331765027641611020808209047678759399087752953952531784616291034491022146673750615154671824158235663083639511176623645664074282667108644767236959106143743700113149475253492119794526692413398771543388846151106562017174056796730040077188865104766090039674729616960650241594088081853841992605334917450700674121228495322927308474423455640089388273838736300218273710349365544677359504205655105378762154750304597424565286679136058835343652435603313706798794502546781746061821301508692842416901712192287007921645064017673192189685461288176102113906751902528507360467518501591115693100752029788859986132534695759025560890639168619228208096443422314484402659411546503940871728622321842054447747695894009912859490258561926422946395318533223111348843069639541952106436312849095709456557321771284202463637324066295454859358105538555405133965038131018700176870929109988886620049401456460116069810301258323683807298761787070437515847101245219848594592740026457862021591805542467441893284128655136581565630705791981866433757032783505447066637186732407076544539552520303700841523119251635492010666684575764954164234809549194768375561672669994555490050472054477930579067728612640821181741926379536957994442487271300016494930836054553977742847281909533293601634006145646512475263604682457477386695299123662538427725468582998815521899162216161306500961957895069991361982598406321997997150160812679064984192852897156098696806947195150152432412490511400757337273657331353142498369125379200691762014674206134994038019427032922985921602625211358386282285639308153067514745829997345477792228009119517907874003482077836356480473827844561936352302751098878492266947683927315878255841232180532065200305571155927279170860460374480387460822032616939742191150324818037343131301900779793390643359953354945383861096473156953126695175362100299993881595233786509828754915762520841141691989029146705984800883107447645393642512307345663133159689481410858120259529431898265049342460343625820077428900301403547061119842121892420807170646286628675947257375815721973033616398589258416812781515167304712656579982998627711303148365165870830193695443984405549831204647494431386858655671002159242128603977546298470449956189594066966006399407125159822386372870117051960642796574368956855512602928211129149336413171062170530868471484043422548961694710679507186300803882715889258725613069890805812014221104538998837977786165082871664958818980296720672659416850090052619185992905730247619315114976066088131504168210944696344997241892285041877448078653090388512648612883499920986448223043759522197640135617221250779305296384335699912172837767565392193353194985832513615242856702026619340425280183449808078254957201189204910088921866722632535816405377422832270261079579209145741268009336154929376326717798085977742746357960947132772454251175534278604484780472971490324314483052698079302823415885307309222758659336641715539906939269110465465629205899341237754867836144409149873076593997284319155140046676667397128967790013937769937851519613771953134237909888088193906418502276353955234545304675507907186145977236940190939344932324638352625349876561358831639838049313297543963337833516419441412511891131643659124621769175376523116647846256310510278684387070256673992386284957935025853661178942150355816252226301394371192943060364146710266208644636949477366684414431734074438417548293516633674626015914577695163110845815936260860943785750259297557578055471194100479107997205499710239832356526607669187564715500989428257973632681110275384587423801233715375845151690735916215780281636905715329676457623141789145254694887761104754144718048551291362166165761470271816500537718777689796401869265952494172200167259607067936839387996373978859853268832223899784395554854407861520886998577477859016589109121749576986950843183166304364782878287192660263750581507605463368131701083254893242183598221466746758128080277707792728759644843171653068079774454450937080156456813243225903663795794268511325610050249413210914192643035903909613791817734910575299368929366134487462609025453468408032298632290772918049244742354833295034908448144207647557261783748455739715403232248064008641533123826157480681614469067168448016835024608440866892607083127935067835146401789974662241814614118070871069025346234471734264664664153374510028730149151247598713283398319130097892498175928721721939811736093154164839255676375283433148027201011701731716635926061097570005468870387753470210421613648138194946053229742315642599670068514575479074243017593888178162952628782106626512314895662966029098226947005430250293672069336383411513687342992865720290048545641937471854077889792957819727375236180771046078292415938886943350524326490045414029365255783659562952830860054077324901446697546044623122390129691424138616010440012276878560072761824634602194535425060255853348318595897100005275395444602788460441262198727175668187819317870852934861798466318124607838084628953328161816023429191398367069924394501837111007096624340153551781824570554075241542690300013029023576795666373061905946681441575897639017004294735151252011334541342856437162540773065177787030880733345386163806300386022786850827381451268080673970262124016542356406523493034589942629973644737855599519699338105539841773572694277892746908980134287492177314672799416634459546946618043410320703798931575384930105841806223507307348294674808582686580597035034585442698495717236350353895571332451659419585401308340811809532800606452804191150616243347205967604742974953198677017399195373159524194745248478685005615093041153113898070773596153225689863546692559601600416085388633170727729451293868610019155894967509870370378716623915309053858585325089231104128206472004740498558179696535548606326837970476478414074419267146578807884593776439934283305213961493331682016563640825613032111416787976127919795202840828435415074270711630195894471823167595804233625621096317099893660023475013071985709885873566515277557362217432438950358408213895884977041302975975638841334409653496306459400508272975757477707644919460452431248613705360696286113989495125482625443302598042065174007132928430414463161516065847599284995750358256722131502382182607118967084709896198854303392884798510058801590487175701697198694819418476312261827254138398716960119547135266942333557846712619142182226988096567243787209651968726647250562971871358945347230937974853739760933939828095095920481438360400802218186459303539283863988492904501745251050298318767334354261415796691505264534134786866216580437002432593987923729127305314682052352358589496905912566926225057818277392268645997361419658330819272166212804499959829556502204434420671965889387404438885619795908699326153630995162776160478694068909882921769200844935090176452931865353038470770317464212165433808247717057722458204582734954708490577006385099089103955356059363242736087638391787669725708316665461365117655509452865177660826771559691441623172924233578925166628145976618596732113858330667862592742939739536678083597766967721448131608443982357844317087120128882809351641909714623338443521727297001619560341954462653409712929793489014568102160820606845601987321703348734659569480377811480276908773742929105945706083653917607396813053230622883835401361024326987370949520964541935200174722388810440865945985089617428539042300855648288435866378893063791084724044224913717224528161279461163018227691320768821088455407309065118624552709054147334310318997032131124211656556562200018161544665918365177838201043679061378155571761671874908001546553795501825322306999698595896601038211910025892370001513707611512163068498129218081403569442155845447974150851475215276770950188324474108046428984249260600474895428682523192037219784264678840566593191607470687853564177190801835027227872872758862102744607428704893151971402946370707773600032208646155134783172635154798317840234643070032026491483351636755882253665360560581107625540353834152494172585197665861427196582449347565796917952594605282935084383235202605244238538172800885691945128611485733912036611221406807307785683210810896223074895384672080667917868711447235802343472022780740922290285173776145026471569442215958438423677251776433784619626168154933104878192307806000529389090757544905675552345994038111528505139429672321186285996267241641479114184027577716502602610246032861952658131006280532874954747437140354584463314531659196311705909495908653291609226640312558590422391834846401039445997395354099968079505387473483959228238242680513980592371131059173033767736033383332699175531379406609136742475994718390196692639240264052161005271401342829028174667074268873037497896219537412219254069732778341666608225461597827786942114838963857717416587261121961074080467750848024747942477885407247881725607103335846898940481734432202306523003121976428128952743902352913349372426621591893400952131930215919630645154843910303462957981608518749306753805391844037768938755336093021397575373432749900646501576808516404578465446422484156696696128102002551111181158517041685379951772620585497694026726735987859004625345246946783559020522740937794178182446584060623752190282512846489964081020493579911837287532981560260634602528520488112051881558576633392128932367185866026127282547929266769777232014070805412387063434428495494780058277129915353661616661033455480071280651190042469527987872503894560957645699070649095237436502821489517742628432394421472542163332983895137427364210734201432488470400606280944131523460067872530006959073176225268395818718740886854643088173309802938476073524425490916803384668059196784638864536153830670705862519570671958751067306463430275157944071389284459906093756609272194022127175302409814694084195690718289390264048071127852499562500292321424566217901693526780468013062693618698577337222672571854703531959654326422603706693696671454011111956704471227253026211552487069581544889772883230827698488850608279111139081731499452780652066993043267106503295431428137246952599365412863890035638008209156367240133576033736176183983261814436957592146563044561812756775759782864943953312671841473580269871288716421079659137145039660192379007235021979613606712354538905073734530282273626241926219559096519813496415498931740120195217022073211752543925478896123359743134046527061107855687149088622075291342121434774754802243548923911613071830674587014668305575451863423215663995149164896450209494534017049485578535941630747691786229539774672548919473562042207780408235680573025133611573586693682293349848791558073058374062203311968492929338590540287216027244667984143752878423858061228575043469044715616431408178805170003575168735954588763239296944747584985657966671294327678183291492407125129968036298321367807435161732040945718978358681599137167720638196849178568660012526830114068981175750809183840098118125863275726877165439229213226107319067595096056541822401841988072200171893460204272324376850246439074860869622754144103125790403188722578711974151427168986993755282195717119223378226537691382327254290355499886666155565711778043989024780679725300316524856819338389200781652319085415871714343619329491454462716059021147179314240517084102507584206723078240983704620540022280536980562891669923216580716027174772197522734523971547010445190008612463332105675864046767255862254546332327522249722872705602116722505873663519576790549455068896223964520640899477588935555118728489885642639462272017024911871042304937767411680618169623978301628696610434951552568414982192037069311873346033822112893827578565369332921741453905993063656638295519080310586403957967170645125069024048101485752824431910435159292208711752367468221569100102116117428749422435195480874446083148928339980713913807908188326263973798739002846118468191001616117724333109083641541987541807037733977445557110216368868369482092718931883568868320710205781839549905511716782568313008371960664160187894415046430360840150108704848101832557251961501761398665169939449175667697962281527857573856960572066120855278279384729535720754186370134165114337095389950788281778973161316936222493522758370755215352880271385747459670350821817555092795726758602470102456838797970516247742436549569979168349233402286483403564943671147275876997496127003922120451516126811518612441159606373752876003977391263799974833896817238777043506740506750569672345371864121811204854170016213900587792964493500390554650057724372318677985769387240356028023674014795991659319027996831710103263552862438164245322177536507737438234567850772184827559483687383313493821487801742926591330358471804761985325923382091738459263400533395721139811551061952753737145788773686332242509119935898355684245380999871524344508947858247348633709151275082118659410091130210317442218716231740810340693917521338842405076723835129675220977842863538838570298905014847554440037994951236767954774251888983188426719171282079334294209015555422315091781903552518808224945864186430202529271887860043712056330680095584516207912196741605949884381543369695074188379254166993005589518385739475860803721627331840611186183191932677529674818474105306098265490023367867957008084843292131228596336822517114953902668257563026467314170872377509185428312042708551056014894028176493047639678386238843685111739422251438819858659240683755589385882349259237291397741932065296995568648092365867295179690072434846582518321674966893329230867628957070727959583990263567269698916149414785798513252974584153203163632567694391377856215217561984959149593813995653413094527032166068000399131479724997406376883848018925293233132631020510288704136349546911389581374802177057770576501194210958280662900090662095455895952922507903751258707656594233857395967583641913108206498681498798743722393106074051391573390972789515463450841418701100549293929352339490555047766887533397921308971356122321260681725297173591912420857431144151368072957057444528520292303936287284208386676232012422601199487568377637890107600034834470499948033350312417728255540974894906146980132234767987679840168817254171635746944247150342231504756520963897140711733287199052261823043006126114252247910299527330706579886439969906275519799385460440272584288954742957646392921722712285071840092627818724713932851660685285982735565175690188200619518538959396679169174286774351935310155859762958987407870922404602998354439639111743955698602029780840003707417351987797814208128986886259826078288295978183738211767585289925827565779402838753021953810271636576068979269092994122332081467244448161259771625678572439467574310722893906990953795625843081016997492185775712164926530625680478977710338506503873806428903059544280141977623653210024074003170486829110833048147138486277776641141411134700437854151722745647565944128325284064729281703932864946552261250480812278066546409627998944986040634747404485972976781120214893700262962700776864193469836912196559587555902958134816110594106721641005166328858751754267871444746298559931504398870857306279818817653718404087072371699864257047635274949761159871864553382718048493579181276694854888265754323836842503332959906088150479515193136075850615051464547154337246953751812229310563082812175671557002883097583616111320373917334460165120259505295388547513695198502245410091402077857101186056016495285112536373805619379469554850068764425793582662707455719384487819529370273707677240008677941364617829174199889329905431800620213308605759696324922384266036693269259152426812616974107931936314561755999796239087889054005159046357383017306645683564919783020290080084354188266276630389750792350037683872146637083866557871167267486418877938599458824754946891078214492864675530596875941535094743438249126492947602900640626816516682605201305195208418224211228295574187160519653248496984414326681806379307475968825838657329924020530491312669782819764264636555861737257814068684294824319546207625031705420139210805604310539357410183175830763635855547729854020546243649845601868248782494366083722916325391223998838468699724897523320392222162361968551303605136089772525892185588081373868442628546123340972947247594719825943101552197816967445987451719493427128827715018892062967964488246823792667466443334372445768783650932276847216365327926597861923199074004298179392113960196136180444974088157484449393057819510535678079618030687246041873709360214093782958661881038332606450679308629300957340231809239541386491643102317147100996292144608694177895635000192699977347524977308175013558205517295239743348494082700891840129444579953570382161251977211930817883426439122917688247534058840113568569105556110128469538257160649292455770125495538178221315798276346688555166781908125803291407697732169461733200753831188351371722575029140100302746898370392206823932185116648241825593601913875995278076109184213356225938880285723261025638771435171829273007782636059405589499248430090507395644966266043817059736870942773278841071653096285847720973052388872842785519720082057712301040620954073373079074131387169671398995920094495627015799575134586327511880843735991714296374931888441728441203677255396210750228213481462502672070027655804693522878513105563427688315691033960161655259417825374315145562649404906103051328573363067642451753207617401453284168849162950308175995281453154398575746512787065902650161423462787919943979881373045162760766710020412069112897469417313735794965594375974956308486094552099189628687531504907591513664502115257148102901416617484505172022109211299398633088180958557800025100523451447550426868326560172628959744494944887591843561078131937913815382390309093721836603646135764381009539783815641809671083958058695841827789066234323997208547161604404175984464503317154817827995268851617598286925236999550626604592071525730772340116614438678543402094777812129734968926898838805249706254344173961095792441884758666300444331787273273977166948835139798194674903742037590131981353446598881678944316158182333181410603508153726241019875881115467051949849061142385969447071430293174683524472995331088072359661667729260395482216976093028837194411316297526689188305754730812171232232759885791248303407775925676608299510642300281996852777768199769883055093201925791029463732749668020201663207326183879175844621689090931604627844837810441684631728813735554397315449328500999467413114761308065528250254403976540862993897028477254230574095560240576707777514568733560660911164027628491122197962488794920919719744081019549853205535106879805939854476610035873302879397534575147487361237792750001285890838124514265564043993816257549345055708103270960111036049013390757955796152515098081520479141837643074934843573797360166050050310972032992204811000466239115836652045205550156919651876985753108511882418687661491136930069116855035088359761295000133765876206264988158544668337595162594970662428359374048065875420385122260929639954356642191431821215647680410315320294604542891058771702552764782322826397389916655528201619685465647108263166199839929141913977371584064608064931560518372668160462885460833825904052559232525487446238269331153203010072275576319570725116644842080301041801000099562254127030817460181451639872855249504783101405281644032904505037088912491743613674032114219370197881505289669191115666339725102847562282992104827722062686219183717620016670009053810181751370196656859283819369817231064093555486225217017806503433002010433901979974955987043812471929354541206166814790764324248093416623073798826154926243464307324973151682144010822317437720696814823821947957567155510183152862135940943697201053482304972675263823295643409251775515208078695710641135715599079048852000308998443365147681343040869018191040207879490419762374616180018732366582440195052109398857316692979489574937337246763024379822466855766884082027595050356964417938830549147428299641540485763571176630791063396867442668848241378741548273026356539352300227457400400244416656794366612151602509862952062214701598776510193718786487588830598063811864892771840384202479714753671060734842525911126357632392882717222248678648521608622358779085796069736448392255210753157676254578562770039244789762980080114119062142629262697802309419053655380084346108322693314186046387555078547362529458426936223427635032691261987667845238091053339431528910588595081638623219357166383699289032490492637052171946305255126879581987755290232474069522646558592105926002401194840064098002234708355743767736177056412603785567738106616845730476429457620171592154169334002572991876071363876240583415451448656094962033324804693343971049655762961593976297066885076151912827289593786978612335466784190032148345961782573438747585877866636873169466651157284680210149853901486916506957079095536285469138716305536975713260497539487932895088897504170589492979122928801384114641735140243901483494834409953729143931688672666483313110877950350806502426725371864142658000530524298514622284509212703188168747243346596134705951299221048095966451392506339782960271547185420012164781651967965801923216557013350844615487108843381067447936669701581264393705912574351421065887986439677184369792466878762742038199031966088774871791461985146959497927495091577027094313929817057279935770676680530674028495177529716851853788475954016040241011497930073846142161330572955270016054391810800317095702174651593243580775626759390709029208346126331200520463093116748535810881890789590214029280969917635188168538897429905002036621582642869637367938964797111558404771553296286035254384909953700561524712929248676990664268027555672890771304268065777309574112795833229648343000178637147773757526066376510573370005006733562017703236272157804073713122456950658000451365243156640984666437890952561151060918732685290059310241623618121821393747303735888058667805120335707683260930111841152236686288471908674572480934644415863419356646250380369057965918569544434281190333078752166896689916778972424669228119130808073144695540788762360201471909443448449642513104143540910311216743459005119296214014752955787563506481005960215799329226026455031691241147108668318100514829715220249042985943756937570338605098047201852944135267781839044524208201461931353506761046047110867880032513540600125774675511672073716354515350775740467564546773625931751949192729383828125400270153639634824207098338947197211390269779083737028591772004215230901360237196816933917418365075937249238289489519664517474164276709632907353146347698053156276299644067206813884028350187601527306430952593402027069326960705560007852515677831830958168352172023874250887095001700129827874640770088477088748267894441591000564104193456317457399340710961313017248940280107713891764504177572008655498948552271911798121605025074599505076142265397629925766516857013912998068834834043746828798778085737629582781731065556526248271040726615980310927343756322517241490626821809097951811974808282845446725732488653850506632469937223827840402499495075155579588963804798735372677735225172990694311589705059114754230255620371048307037911489018290834087588784489118913514262541380514528544991223674100082286345619792868487982877148648236324475499902641002336502515672989241220856049149331110317399026423826109222402863026840378874308004697164686896688653892908888550368248120484065357924046286004252009793530283117452921291694013012452689710675085601970717871430469429934855367241951370922731663376262748322509274476186705355837792627031981005758931320039877991018362996148697365516679601189784980979283781366095107065576389769095494920284591367622918277356800241104271829900506958825477539591139074623323769794742445046806844549811923250629608830706016637746586665823451139765368688868585497251858367212536058416042319010759692026912642455928636726896504361503843739061537933763452893337923506438382532396661539031328270090078026372605869153779790158114975147835966443119371550705977443261867998250798395403690942998258104104808320235007886395827396058854085834757529305766377155948275300278135265795945014001026589525820881535809992659754496306397033239422054893117968963782091965731218156921915818767681638331052250407009455124712029121229853509863319745002605952990996962512535770232149233292422902918371756443179499090172671286814109424001797464952110063494507489286583572836218344886197400595237063756789117220552400857531140181692310433475155170051575252395138766109752251376967741028960751290945262473559316164142117667053416973858243176808948953305076907744340053429083805352890095723225741883241157935180802868909393706423574313640581743148081173871177101209961207734736385347508761404837469665602717907172815245315415986825003151400892309583685112748087561354970624136447944387706014246945587395881875157037375483900812799815791631191305073159455699874952726453184709944180720424647006422400301656394172717417000667650806627237898448964438331280533308212457629498564165297603683005330533095596201814536379552364266045669094815323866130592908413705179518782885391608178843895593507721943908599070306098695414578805212709961805013864668263659456801304277166181465555461971864802703143499103350303952780537243247757156615352629297022370341273398407043041033747418454751312289843463448330916072297489550947228603763882006699951808016526893652007159321007469347838227845290392617753228757730483437961779205957423133282267937961114702650615542777579969566350424088749089485675781914146684720090273851934678145121661332713792334190088950823548177967036634599911353526949132402892549783182315147030290368498355554225192095926849297227429329670746793121529231057227266887907787741710417296823683465725328322598147500162241748638044443203256050511016097157052407414789483108366681589215509729541596118296288633006889664464761424868251508075697207330114024656484191810663260280961610828098934384044022817521316916077634579740450864475489855262007330497703301794492992592746760038861112967479314370457661243564840121697434184496014918500416667509484577208091750005389728147541687340788808470599230637129070073430753620254119538840744931199230298176281213931055880082348406250930099997644892131474814295289425829702403391707464848524829744887218363684594752953380423422989904054834494931326707913553627054334504092406398982788321589871439975282687382527988299157585742232538973667841941847824658436829731508637528873294333126455512492197640832921896267728343750947498286934475419425248574830989321057292756548683804427229316157541650598752961624440712304402505798858267522091375515639737820662964271259584202672631426244640310288743224337081154626565983070024341815401839265165813630859174742356801721559924247994100839726995727440702846058539204237542075407869269292303264841667356384943911866283078498439424664091252943669809335176099933471059451341679516053572923368990066666874757449425278526108307843816754739822401873417280308868021968932020745774110839954737941701126209762789677561040688472393431569043355043959374765479541107722014662183144336941072065722938825549407692190774441078960782858753321915644154160895370434446375101547392688528295259323153778611442589128447421505819293383078005698254076079807225899600597394036231277487244688263274205947102627323438859406776639356747529167566727307871580276024367220949794901177866503153511538909855556706825130318082594517756757470915041166519870410732304573834282981662851191310555439252095724165413410178430626175894754969803965081586836517280998302751074023593637693857778317403616030391294300783758594105937457495911831898900619992467757558397915177066236795128383937563039581066129256624299984117136458324115576207274616201970763421260662472626008591269540287056742044018187192296039172772722464303552891322264081240237996099955422936516531064307457139228471369347805581371896667183641492159987755568784706444098572577461330647106456864642505500845654266255675785784986760641507932621634796445586724804825234661941658847189372068583455118618524408873356836705531375285827273464530211293376171297824409622741337805045325963865525611829159103009456667438178228249818663036826017325356595050642667153578863435969356244659821131047672824027073753960885977073252023178562350962966294149673282281105987913617663555972675629129898773238318115000904037277942925383892439202604717451390718140980303750855272792006735255515726872169464602113828894713336693903910988220181669509063381929097185198853030461072434583732278670132155484148801537883458757470986873795835962457998101371132634620604722673604044772924071933833190955946467193727745045784981832568848781673614208350964010928134226910242752979450424074322875920275155890405752597769163775079568990790011179357608562620576313089932998212786942849152631002370603687507343001559135951561568906684656341482072018629785954649141307938699969538895334815846960059738983661910435922838925577737897485732721502153177603756658364399672630715608773383712188436267977700216733858417799161230426652038063401885860628668158054847759023612184588413723097590282664271668130228199739647342387168536768942903048215335281477146965401841662207280027816103616846025273100290501400476497105386722611733121356460862479247422423136568509249729863524400434851470919631696999221628480471459518981608021393549822530066375966975443126596639096620006301263073199678935062626731812642620924770697164403324825866519938330314931559469197984267612003966045863866972201015788625416680060102767507761247886189315197542287165885567727573530855324179812136845886842407006012451190183586971148682690444685861261990820722292205497605087495168220254730089994677805534741907220099089272217743219888597824255068651385134201925332987983797103223583347471587441601763385969737763713020580969602815567691347720622261608915497027350867773473053009262037630488368229446130159617465310289395173969224913611542953753887061037544176966126898781506362914706833497443727071089188815128366375777468687193180687785128334568525379739512376115254454972271996411457764941520663892297095530398936942794861288636224482830713195169433844170534167560005510649213833265560188061399433796080720398213642386362348032033608912171232984010644915093859318605156191506902055500168138100680672346717754260117089186413352088520765622811667571368215313648192931690611929246758643923256745238362959514232336739126370937567304572862014036290027376159502844050918215858964044781802663671275632445970686640642916191874008986729643989128576601368730858711280763389352215580227553234561000011996860379653397026149738464494277075322851278031871431149372405697954960554377011288988041397460571867996694628534405350576042420539013020311920535152345874881237317010247323158272868514072743121370478206343550711809592589261624250995693164569714989943343415739294968586965477039536600223562315623478462828317291961868995382347424217228595969643363886345652501992287548307892855087419096558075081207450828427802172568045049488806076881449935937900947631487975450155259484254682063385016133091199421369323619032897957699768106364086100270504250512903728636336336009429259604858775126013358083790147404111140038873509188439627229321028509151635583435121434018317321379915955146826488686644326984525983733963931848065007396624624086873245824814494088332387374057039409079768712880248120094545027151453304099706140774333675086185314571752011144888755660923397629275426696103405264967039920714485711268395582281791367551715237138923636405002368999569217223544507626734212235084294440457335709299668261986363995692434280862999586764462804267588893458612708843674809441081996653119264115414038168634657018535178610780750281661937786220251552811121932755517401761292238473916609900783752758442397801657480698467885473080056516657819600802796637198913704791752855931050223461540786095154866618018256416239835359875918642485964487933986337883281675673456299616415115334315480951017400269232282643383493361970747362631342105443745371632474139149874437298218039744155069518197620497704670121587941593906281087760663900161116422825796474430175912982578367800888218554386097104869672572220512012813499520547444244132915456056405278031334848026414291889820679831118669499283032528173939332764989929452515344861038133970522403508730311292585334275403838180001501207311530284561737536776525336679439385150738018003904736067466320321359256861982424258268359769425988891834901353107579210753578435054581177910440173885377613103029602346818585576208550342291951258953077085108630793762286052868311747334085246924630974345664206147068797936256281559863678651462571768863194488259682270894094809880047820980819652121296633141904163398821825938680165028498138901321188910367259686356840370100936397641237930682399537052981985739680607492511141005939470983922240373094036534762868872523557303835492848641021400195090110105269941824561044839357604781002492974528051356856322882716858531582971276158233151891719482758001061166682064881905180419457935496584015524938679537485836498197136269679501495612727882489469006613877101088139054857136430466331792419699348880275030709236106479372923090515677923301012083772841055789025139544179232297023409327666164031089353612346506550197928671749810611330281107591633975615821778149023779291472053786654887146920887960519006553068175199345764540218510930485004010070298302470141547682197610262070782011925653317268842506785848681823858904797722117650755988503916220659769243094933591837382999984629610968422335415880933470095195038427272396702222998213640926665436335564616587976375058610594964023775350673108427752899021809550290975734318279394440428416358270864880485969282947686454256522237655921232246922603216403296260534406169031409172728743109167471448586673392690941339233500761386733661913926579711564195722146166487921863647537268166412883393900189378843793326251434977519221048592357249759552135526328004712780279966160715100338758719991145937668205227082065799781890086218219812512883891599242761517474176060628588302898767108129468847066054495623339694990630531119985442510218478147160037679096466016472871212353118311642169976778686673564334243466986365344513421887199174314129751797950651851553837829443114529781747000968553096342855200040706893048904319035222135051752982838150749982418218000821221027659466007572148917166211027440349126105431353462037549598873961319031563895923400396306315474591446822900091034387682613333973586976655238250397554109988856944682993741153038832687571200373998605241669711765078105718182871137505737525983945227705273735338307811724293039942677481747857844953351457815056668384789524604391935013777635540164547183608539948874762242124180753264255223623552479165940559652159428149211270644198518008427119603828678446551583435167688573588666553003921273263633972173219402401124006599178619219321868946991468490901696394432497995514681903387201746966502872610615798253781676270593345922563726703904825861257663375386894111461671415704013982328958496815758955975431044256965587826036917711042793079330396444712658210827385057626464113041737304312680194179252199577381090689340485252768397841067596879173652543261279307445993434244047900325290895534992281418922661550812552429419086444125818202897217179998468772892454516364298812562350821681827982913425388984126955182435238438077653530193929892879485539450465461177660211038000573521405725270908900832450369396301049829459790714288406788362364423446931911624539853686268710304636625701243156704455513173121912550641446268681519104034336281374781180768981871919107647859995453957277787836557846630220376949846491541278873608468111524523525132092005069132335123921581954714785214380171991983822767653185529832902296462176080830802645387113981119590227841672559078473707182150635564382865515640872276255962694369256867470993257820815786640683515623717945025975523024233779831572468997305168610814089997702278918463422491681101054187358853541370367315073491657848058518225699337953007855727095796320048344650546105075438799987965780010115965113343297807844866599666492090332371119588034614815962169730809802546781155331497414395624136518781926322242212126111738710549042141475735106642940099358434541862752068338650821707482901712098235305854474297009381675372680498246961193531629850821561541696355956619884851598828197892504837854594853763053035497069534807602889087394226502473707282651848124647627440623610895891976922596684389645066251410298840550567389783772580923011899303697821618076351497512614365560832699622702694660355482886943728771779737519901625858662709716093897141545215703829742355188536339957147623623698603601879407856146780179068011970264744280241270022501386009304740940756535861386450730188880816321752206131359702430844675930391303348495353357652317883541153497729501166649059128584178637357309117290375882517724184531545385627322070576223406198242603521974762056186275589544897707097648940479581086028664565608272252695985519978385461270298235368779980888623171645811490011656251025151724341088440915797917995629763446347157136860456878906621662751154429014235621749564097089241852123469014149323781586450975647598770689623878782662831513658677385061957921344872728762369001812751637846589864230971434757857925950712982628739989085828510501886375346473068949288306214869544876474201946501512264809121092027821679134188745313732174945194393677458066949072869289642013726378250347447981807271754158618275053226848998119167757774874328363558544285482280050080925725005832674649892192193544215266618529587178798604821886174419756798320076473466530449037461275683564514709021360327461270719787442267476101145521361347025798769035862305257904064351188281606744257274116545006631572193298120555130320895458816124855210230120144291159148402644227145765873589961534341182329798245978115137706461360477142201711148939294962739247370367876800887990841180725325096284411663519127318813684605298970573320463122424076563072262684462518435454679099329397799670918143275005703772550375406485022297647314774245937971169025818585971350181525837840226008826743823522206971308086725238370198591164492964710878145247798991664026101713791729001801945443198595482894104533620503460827670071715903641493865243010172213481855256777819746281187573307042965940995815818943341678232304471359759547521831406930840693423425201946394155136078140918466950373153258549635826856536820367650417436574440125932572219536894850214488003107084309629991667069916500702923375659565624933801157370887730443314190845304595425957871631821650035768251935133357745675700588161914704655707220183889843080589832307924485840420479721018497774222389802977813327782906224947602866479412749202000115652479741020715280232371417403908875021328193726297572176426124672223252961789083481874771195825719500291853761627329158796895850612869488950957167596051027633941644537148907165637985290772701585216907726332268599498069955414182719368566964079778738649404506894403709172739430832483812860701711994925010712270977943369214884217343873622958327504803408151183882576386099965353074216631247857234791487174472540415416773977353237313744239167566833806353461094295031803795481830283416595796483501292957365465895487529271418224615198939704286467879312296872775022385999390589798509307911339710348969820213238053571498428110535846122318519631538476272238194882401919537261308509015544269341408484501832921691814535200590913409380782825729312568015011710832748161232705594554755288985764806697543358498041118309129528171435139706219236610969002083159194930308038004973845115615192409848698279260826812271621226347148596294660096949165146545513854440455896652664662982086064347393145601511143838948243766587559351059295822011938974622073918825855203485765304674037747132964504110979608000900710591343836319252138486832513884284659445290780447755931981134704905185507082754334957936637186597479525287614445445588036071045872225662194074538343182763581387206333925123267952691961384942467992871133550065704449103562528703125906970009675171982674248869673485191525736298958826313440737685839124463795771811839203585223630941413009882017830920301515394540234862767955686277053477361341336134317585305981942416489676597556231192802267972844308029335258595346796693527908025106889890416867658397718666525654883230613710976990223982460773293056943086378123423903073449074911639550237052959801640073764990856959259467835161700361294702814169167745121707318499061934110030049405091089203251652687597768407464118705587262284873062631090548736865578307492654510596420636439971717748080338514056353890672736152125278745415180272686999666574558049098528753804162414945590895290536376810838384749872338278130177910124223776542747080618611291354091083790702438547356968066932883516548845005352012545630022740762876000278189965318993766956670816060057926029988480660638745816142656627627329725980095658264701254169118655433415822429907018333755543680571262925394730748270102737753326939593480305378090041497738935425959063826876494952451785111175603900409638990409355171169511294783559315862343683880758685638481120454779277339837132014719028541092502432025619776675678603186227823879322334266724548459367002057855486255460496139348791762845237209715060370465957433947025320105345797114452157235916326842359002881814031158383045347389002185822359619707660713671871842895835920505097371898817065700108283787375202306726249301928217981392660343395922293798810213018995922389292695514840425545795486212030618719481639269068006256477106943366219943914592210423843758061602910376663277768527226817696570006259704556638503536973407408207227989765697882910630087340257944774485028538901175644256833558406919119594297929206899068026178936593184130216220641164993719997013064918042881667510966296639857348814628436696743809159474020740288742741596155873194822128235455616363757894611643647224031474106353661551530454547713144116185592550750765699108573118495302032146220168891650582987626357098651223984827094646503032787528299803795687375337535716415521479527471878526335630061498225089848181761233663225672797172780076000689197863024223702466680856461997040310794377579412205802612507618354004681779118395976566663323496203021126651316734638438527147309342912916595567455598788898062332587206487405522408405731607262231087550407719046411903291033429063734040918385164392715796091129729154813213046180474066802816060127874401656233078336243332519384540670454715745583308568504417231482573105334181486308039626280530744470680702193831617442340678224612396624843976028501578660970713928561911413192243146036318404395154528637843315074194882636352062224068537845495990223161331834270204181760451987694571947893404166209635920188420666864988741994797423022949650319952954534696992825127092134911542609197235550856541416934396929698448529241878113150931117481806722064845000280403935035533744374173671255481452643115799043858242002941922938708780577078435380690843441116033558794153328681208663023556633905827616458950751783239706559553397107171313195001288163724801835194985992893234206496492880436690810600229222542086487829829271703093553360879781430611307574582458851927414017753109316182751299082489936862968980744190673829865460359291971402072673998845782747656429924381151283003008483719590206069011755478307055756820979619291526176444053747239184966054937252133565629374261965515036771671483560373797777530959727730462368559768702172881144820184385009748770471368797602588280033445607747994312416075380799456393243241788643752058312680632077761340202928400165501206568245053746648421673814740782188385203493477801139126713372994399008908994289396480740394567619797350949163900460151994454324401926213173037572424658359177510621128355774145589025850168775698984245877569007901669079314787318839760939426410949706473791029409779926970822658970123645427337697603342645831712790323755075542025678643883217521252642229820136219561438076582205074408119972419464079449596415732632185306616530563842272789781017688122773847946064497997259961023859254631274069453626908864165799837946999674986973980073044562458129033627020819246373823314031927825247050395863854678718465140018834232159409781815403192689146719922220419531674736284772886261896526799305097044457289240280106703523752379348071706564493474639517562079309434676615180075049610076025272312862953863605214071893219208391305218496432349949791991200890165307754616675316037767465559021548508509086974711496890769811411508755672246987191783625071309941221218330432762210206106532007471348274015420550095457275511335848994564593142496752447309554264260302002672064776155180413287597586731165235683203421413321284721833513329278693100923100518360095576387821551103418639304238117688705510599501721254943674069281019270002314360939099804610326099677937361322696824162243336045221783729033743485514028112106902215904912300195405845084050471365894085705427141024821294725810678000125809034013496975466935491888964849846715646310482114803872978087493567631579909566456505622602631734078763511872743117843355670862454794269099205210899847682426474669808624713219772097743822613737554197719409313951894473119677780572821029371251358479518756027683500863564207518082827369058690256210363671257663620241170532231547449676895054945957716580610745452478009377678250055965192966433548008435821668443935750533536085915253850250215673478864284295931706612909790856665422329006346108021386220868743501869531585233382224803993271581234131627176306983976221386094879618020374513305514739571759138117852258346972522340805740293534468501044634736373166839985006182806093770306961736008400369700690930350003048728422536968520702869767119402931820532293780360959142075270637945447893538004126429356017969312590126465486251170743188118070596756583082431525950730888322553907288736246952895013610036824424684511792149061542193931054236819541914125761013475923788030185358665238957771984665959652399793441709980507301210235832141398286208541517756296177344586438889901843350239659569806122036176567841673688952265849842575071390215028186358938629009947253583934644766066031431160730592823997741918679489127438676346083954931023074819346039906254948534391762636758647266535374315555450755337773048514052007798545618546175476038027752241516869107838155803412318812065991032921152520304183417727697595456823400821299851974493531754397061837054715062948324748970453477511446653665512078605719039082126340693982011102668133010047999893862426663164039773766719831089359763000012744522755606136926618468718699714570571345152547025992388174249958717528273840797698359947133958323748729762219826811843852804864202508613225068390116903535328791761410983628344811823984174181475184239803712284362300745066554293134665928034233679117277149771230052827326133303155614401041187755108032458624668068697843919926613133085242381217234437451126070572465746172596918216408649838775434440320320285582876359514892151691183860714589467265500106976139064106728466556262082186914346668399367590879969587792221956494160619024589248151826666675436302500065616364227883873611920786941773245278046938889673186629123060282381987740448320894846384476176474322316999330559281963596880064398101470378634449147233491760176743700324954353436470072513690741746329753871825541640973408292128166219454024682428361545426002981418276735894689151751763432169935559674774102179658333282066032636240035267565379007043559222753220281627766634951409702869057200959219153633234866651856054449190982338793718458577720553801677990551480380498265552381701540213516905224694433958858209597896787502961297564505827942557070439314094655004900640797715631542442998658282180869876356599365989649673321592409026424577765323565906335435557308904714734577503503575561934585247632898135095022944386428071049163872551657071415728736342621740605673500875091774193050676894734382834258615955797513252833165953568329228141828227697809232921138538387229785902819054979551133613459712147819250697696156569052499300608588539088684318569526185394032507704675843143389360589617669924137510509479156117714647201400479643018699761415781505389688100432204785510004167655690418008915084848273483051783303530915158146811175701957278682954293009372069738957561370202831228148790555165938456745094000533422543890290184393840818611521344808774255242056741431841593066963805952481648861451626114559230225226683900968308648310950828489861543967712475745306718350355509707346983705233820072127301914430260768165066003541808907577677751052006866216802376574378552139794891836801143586156892445544168388818795973836727135077583736059370680165807244436521421641485439321409844805154241103540463192888602033265927331231233384918966600843811294094526422064268765740742875931663365509001688564143135497642240148228638797255085179791595061286752096258519705383621249346797709190894466336091835381919333544441903908695700168988531127761222191688199848638403615937313884219335277043542925759880841370557201532792451888569315840937689213697812816100254414049533539704962589649469576212230313974095169119697331536284481574021753218487326296416542309303113937059090975491125535091519328517003046454666539722278139916808334532800646076682590812909261556903378951458896913650352935984545850838951601969915786300144071017989756741800422687901801054836733548898795786805176681626644208035670264442869514102249707650793791092785931528916329337436363916585773066431698226283460520362611920509178963059490187143934615627817737220304912417624943143129577096417624191225087209721975114708928665702507146448084542197101493703565495151416638399056448525932625014717421618225375106026247853325530795953353215119434872085583668540517945320565979319820557947709572834692829241584661041409330145899170091778981034923518599957623523128950750357300206127943958692740729962292663339067364981911714499147592467696657114228126104816498471995618155174516881075853841903674053764592034512847521123842570444047147901067720831916402024144095571010512840907394247359414919361358339803425180040500164851536888065607795094496011513652245968345293148968284981577236254179811864796982214998415666969295016538774652800656663729579567472971009388245351852946738595035799687865935513424792369608743693774646154050685687820213665226343533536961383496300206956797995253683335426138121248822495569124260355301591282986462350571164864644654692383125598183892406805457042674858341696752646087287584553638903507392106046400888638539415313143061119950164422887170038732336645948582979489277822294464811758973411594171764357304364311561343128337082604422170279039939472028626396742004137554539410575455957092020571584445219103220658207832521328655276131126123331727464927041286706129075820323302555422033336946923920768636724475917657636711800499589120039763678524353812287568534095325207385977864837407153002969258241313378914284165405561716699403257081489578919309978158685484594104985926977277935439448837654967548393304212463207304091482471803777851794883448808321215694193142660317741858998272348979948818374919286963966102768635828121902004213428683117069653584528050401240366844301928429213384045590169116194285743227728293072132113020445073608850892617087834806913964213669963800585328357432657992672524423399679542483330865188174653340818529404286822950943560602913246134770160945088947194912976960168828162396742772610005610255626538346905112739747648309865433003927292028480667788913002921135628518747650683528149274972973874823120460041833134251638998817931056755965339194428656480461943338346868649254753407627422219584734059722636331469911770329224626944792194573319862361787527844794108286472126880076129393524472319480237420721848302275403097162686830392915478290134336423511572546588548207271761073850241431339912911025669019810851012125404453984918035636733079743139316105973521212259184475725688162752390821187242964918536100890854642708191364710294421465632638008639494743273282437370209865512058991154179739662740822423896908192776963623499933667147869768867802812528371977449922590740390471823843820493654372362293291204296859465647792520530077542494601601629787457072203136063440488289768165504006687410911310330567274896209806131614214722552190621095546251590584852238658076176825087020045612153482286939162821485038207098896815096373320827139668396936171182609170871195380965148277172281059235915132588511786746259891129407555062200423718828590098288431677209952504080754292434077650839222462516028667986238094358623976378535759630751818697686032998589402866982172649803840005717500009579188611260973110825886688636983171623434521285448675849352391645541766625776372958752123033660584749789270731258129078937812604298232158865750595874634479675813959453809785572695537380499816956156326029520288594509158864408464069728472449513490870339839418085720291757686817318140460441392924970526865505911065551937256012175012807572024626631834007325380084464756630456654051128661098376455643868814078661164340208973600239944542937676122966328869009860094272323317097246753903925709919955757001845109613506913393833345643870012052299881263119235353488470877516423856181082038715327801628823149119472857567284937576996315992901687963251162895781070197294444517030845853202176657872985938096144420794472860468927073763409498564511928502128733950554288643957777229085159991971183769527929091436768390267529136101451555956241273446129173027772614119265754583258805620766816054756946478338826126271435536865537793886897049626213942015000486686415054089912757411689872119415700839855876804300578044238084966579897876484521281777927584242276649287152405248196225567656748156092983447817173660148435352144983744121815412621609814696840329691293248465159919581124132428649562342131136230703715934970870702581045975345037913918888615803917168726124432889767228730646404251469156476402415059094897607404740325573827460254066719434788505397492283903603269924556668591525066057201171244100875662316088976449519814420830921974092087551802430949973021032626683988139290752467010252304597774047688995917385436699957020481755313998078852399853781840247490505933314368355881223229530164100406792464895503199732744020936044035644394604169393157198187577684634596799744022217806857740282501677272063272545874919264778418709379483356745358739300102923801255186562838586007239614757765971355740580045864449735251655893614828570947989504712011326013712052318147315640345350972783762946888272148150394516732862547351117987454488103257387343824466203177669777903114320436515976244364049589099396244803068966378454880430597586243257620521034202590219153680443840139017055305780192853481422056899224549716765475046457570256782205603529701741610384234584889881852595273157173336066090555276702563775765298172225386469948876888535086307626232674934616902085616039858772992337788072871515664849654277279366988790155190051856010283301360713945202836141334561786548254556496560760122757060141695595301945494378539028178808649060308711956767528290671625468194438852099026609648393645593897395693942569934514169278099441120721236458312021278920242746905649894928163691906826250804577918236960695043993513538467480708276562608775188369823771825624147219485862463622753229147901611777413479059913463472817863721560999298793990339962364833966415987170746972147518807974529836547087805646967125909821341057626115067050987726606998425117331203240502266204034026373456277796798156849751739792638587827024621356331104475621777955663783263757428688340452131162955273946535812029705433090662331376574575213759660594521392845072021303285256665646314332181662884480983907067896583476761580478817375955029976703228732010099909879445194586176548414051502851296885382922128197087840472618072608606957283200475398599338841460011564151644196503913212925175261113257787843090577560484158884237706729158001921319912331922096172155095147970996990374776679437927308517977648566659199510979939711123667990288259736091653265693719615131212575248723566157547370442408879996861394088245500524326389261692694935139594152680793556622157710644464932622025757149192481571181774737936340120612290554768214307057404226690225785351957145639235752824625099770289044561078413772441133373293563903671678365155483137880094890258716408758894372038159350310759147146070372043751344525127176469789446657636767091583746072428953189065113191939942677934085893644032774466521347427931118187499349061655939497785929613979821243871026872877979059307072646187950697322717354854922834608632537462661509244149662697741960119820305996643969863539682521460700560246827072683747758930985824266927391868172288245534795026484399322971453945334809695791133678271636056014345616211684099809852204166243163059740226685563953991180001373016217804079559902025526074994955695924633568507019121697811223860105256845434063783833073913614959020954251966571787246294150605086869194275153587168601196298392289543922491862180685736521604024781384353628220345598142282241593392299769292390139087013409576180509608356263271933061988400796128719314779684404803871031560197301552077817584338079123438612882527564706286925107574184325480368614885680886719885647633637431308732389839516520989687661283232202869897456649011143085126798921616967057095073385719787013694693769656051298150986681638008633239607737089236383577116396933678188392632164012377254751675951530155696616382346288837355800987226134511630000705060602702042192664952331101117825580658452317867872924113641071494300937567830023467825838243975005648519659573026552589650788424238139882244178837813993894356596108809557648136238895489449112023275502333777521015953168326134181702657010148169201307217636957593388284690374589520302020033875187759565843751808996108108535707101601918765011969000383002011625745274251563799726664502786394269498622295403564407774596664322575719024639627889786691179768790041307672904063858383144797681217827274177796727449602245789420220321227894782913932908260432615446298226329503677110341652606985788413831494398974172222814878332987761071814774050670574494029246545097654861759876274452601694354078243474363967291865360106302381295527984196104444526372661167231681690953472089540559822521933938908070101278803093154192272886534004936257331072826952357815160046597533203149131732268879685286840094792496664619034010020252411043872683455391953835728388025713839656769465456739546098471706174031633777072885130487616611556881730015839701999236865601569726305008949482624631047882305637358140174612453615506644049134434439803907759665973000546424112802715246686693339229800967338084024762155770077519343903553077878397099875968235993901695810498642794851882710865619782235207367125551093978686268999094843721109153186465131246054153169856134057304706865037757916227396955266964543891325961980649507653583536266101816503875379421755150103940790467736935924501113231633300752850819407822576731566474200518772977471673527383012737672933128289519972272612907223001723341889128383922109741220440461934096141556774557975644295141496137762062039561914770469652119476794940567713675570845975463223343794091845425090049713727974055189871255000159065824184327543690777622504113540425394566845680543984764607698584439560845849007040208911697238516102488164119747305288838103608329336397143755724694152378551394587691362259432882098350324632071835841098674972478935704890042089071398611036272894979967899498237945322421156834918444086451862518103803780390777888566673857042880018700068607593003318519581470417496026284940177096410244364494417468817421206807780262492034003819708161467287514597101990378419465347637520567428241093121117277195582911007559211495129351347971654745960554928383880581467604174499751097615558831892018859406609437212362839289167570871751326136431718171006265669632338885088897302583502540790165269597060802203161031663865606420826137955343996844819448093813399851076343010333919427663160198722861661871415478148203891232270602988637828386572486905970338235572879102085775248787362544544294805277009516665720747519094094321127839077766159639128567923840512621255649959888340144145863269449597698892732610928562324029648096447578725657504855115586608827388878242100033674245653038095839436424977121036024809150408121607326911006243694472520277180350716675939329399106490055821975141694571453424505285204969175181806122017274561916437008150147752975775590699589724473188060517551591462313493181709887113325841199442906419513836424737822642701785430505120672839109429582000311274488781134116516290045761025481460311540046195074983023771055279555709337660828539997829951323910674487285982274894063638604858488468968252273461129700826480575160691607695284443086385201724571083728031605261650249889547650285877075783132180004305182604940604728745010181609509565490908755416902553303039731748668189177318151993648195650451456323026997913780212292341044398305905079115179595341943918928369485643239841343266517577101379022434148838634936517622364105491648871208813993980272385083155393830634939566354510957208403250190156985182315536495100514060405689420863872209523748466662182551273677277024447659994302679640460865185397199118448415444736532002102407489697032330493658724243397259121012620376379922265623314625570199528080629932855391337748322002380130708991680886807211698196552511702837158238704541955256704945168667478288295438432355172170684456000364297230250777730285886098200245943523181483483146993856746417222747436546956941663304852957085672835385131870836078872829432754769153354713967888238731137894136007367678672409051243073820709423252789597971931266674170457636256015008811643340293328953666788520343413658399296983887963874707786618769112260625251208959811431337012617151148364246491164512076244451736936645186043686713017979039269625401922846331781140161182038105328800699863340235793678205008558473744891318504891869914074016824771299251884824291288331798644876532867209066696860791577627155115526650773017590818295471856812607698084734283284588035493409805665994458187043073800337003771784911502986432917509187727480114925854075432920161668608840431302170134641920315662640329053793455848942103031371154801756100394712276367807458635215292871302952962986569504045311873595779790009735289146844388858136219956296136972173515963525663137245750044918059750264544633654690094391099049554828893057105524490197765497726904642485272298289246871554649574935943617021832416048108813655805395175342856092581815028432221876159706773692459529205768687499105963453928395428427944309649016662316364313838742120278188428076718853388514876773779699240822058197526333363974433007165744260715317766794513388190215099878908128272539336861921922492298776658283969691483105428029966158147547059721616847220600358091716320944379264310140978734255141683551094115650382927242038719111787088395548721545780220872987394713900969829043156269385483722803745400309197942764427896464803122297832696995352026105099908089180643353189056703396643386065294545037104746362605725885867190873879264684253636012926308539635588233921192129023529863427246823850574110830314395663069617181916543627656689096682242961757092613991097085205751645633657063938284580571332924501391588815152047569142233980948821235450488519409354942058636026488202017413490525230879665324260107944487893425733255274080681940284072761244467933240660046146107089149971736497194881296591078286685264348889455551605141185715715711573507581595129520451134471955991237068309513339594319865548280630069754334022130539781636610394687507569228959630557335249800722182091099236498780419084650976599016132640835910500716933657365216836328153403166512020168290458752307001970536899212947391708424658247331134738754587821119481559778901416578059208704925603163593351381692236725329924494135252981602083903182683652945870274050403593444114430763884978819404419750137739120649896857904814736801584903728026402819372661269946026308136128741678781492098942620861568759854644193478099064802676869471903310826005798174823244107722629790921880792527767829649904138463415340485338062480580156067499746657228243100096877423440788940904268714566346522548966099026950253933740229842506434006057709398339393597582801534360001798545699547102747131623580881909602524365508920123884407859364951047385522479613558570697171868512276445489268104250176962061057511285972932757825945945342211535610635370901671718637346675995798727189198280210316867032661592800640405186817397398229283692709510166577249855879754296998741599493224870414286226234905135249644359204715184287445952543522351148030229144221279865517162229890556012115068066236242158230985111509434041826659890299715340089207951960444302065373788206216566299160330702416856049874563179851811032829828871239203032027902900099916218341892605200882951802801172727590072054607337871399424340964161322041764244160548051529644570986347861053057248253101980780398338719852025131157167020620539641300070065158802672267451316493451078698526769518220826483586649400936769592165605065510768896941387391876720707928464936789870326585988019525579799234736620745133951053903674859463765537210660449881191781953756456095701131501718643020373504740280641610230784581485013074041984230993680041493727878951799442972106327280944043030082909627191275652720483562546160040202280127857110040482610133850310041113935735080956059157736624433676060670708770784514934030100918783754152854153448678984322069398611636664786917035257286901558493892664845299486804241820391145894625327955447759148467254821916725767414792519831463018182936878030134821508005237159535146775716930970293399540800603330596036036932653381334811316895911676732675879677473395584433054160737319501766584697675139754722636377425888813069754684657252324599938075583933196246066616038359049579430833641571361960650392911556060344283253441213264806664852598336364153412033644209987398297859664529519331613632576254282640134484146807796997227304819161582095877985375605685266810415497315023225572225612493093393767750471506372936350844339952828065284998041938618058645215741721564885776452716732136619247704823924286907296024449849024624237510733310277945650497886940462342657499355001653023130096246634503078427802712075476928324251150918014878836810754278685055240503675104612330958334640104635738833383158685662730226361195085368696228621282781975492227909995549652699116845243769094070490049598291833017652849768421938673338030887967027579222839865486862246429099314364415639006366182729509828390887281857187542382807451567456775263241147403063199306740109126152998439725373119519837233833762978325820130295894740837392225787128946483521511090694493367711695654096716064823793009766974528686877177023901946743171643163774583321538227805623865482581901074579463062783578674386718820848815271922564189299404476018463351583596064983299746372209580483115583513522155633072440789641417970302026040781037458331047249941118263209945266338207679196883661943480761118972447952538741872563943275776669026478196446210915884633165067731147016545254315842009638673828930187197139264807384152896310354304389093124318108108230020765181498228323517070419796501242971354226934921287092488994467299003310788431351973408189070538052897017447287283270475356698460838600990518452753029041401550083263661872312399225653845603835061816079906281308161713200058828548474910979646474406640769570008112404912484988669429111872041873299071948321094472124335013531960042237712252409863155402427887174159574680042492275790138786394835390704801523616221898511946222825562013428830562663819501584478998014532552266575745134075106854688923045561022547719716160414553174193012364420571588206879590084685167510467599231864088317080641962651254719629740779444429142735005799781080444213836675623717420532071339134788861232912219430077465824778058201889679572493325959216390328513870002386626720439146243078003780108508486149083042804271028216542307193984305878751603345425485787021249012638466597234817908743748681501610197297162500114732422704216654298414428028429676895258278395521025684432457255030999036158659881673366126511121978330518944821597664529128712072414632940382092380063279338855776745375590553842664049309141050824456335431842262004732694816742426154840595421261897227971064761755864542538835615137048063662077541944470753548607126054748100563249040754680446372657811045637252850344202773810770911132512024263913583899288651574529261726087758714768506052282991962655654599160395380964959771709283196448610679264435914435435545240830954330016956573937108655950835923297985288283720682913500594008179493013453177339230468593242669438663045819514945674585196014403796301306604623722692050036293119409948163524943038613812050616976203917026153152320935217574502372580408577080589956083202656241907398472147488153572727049262293799888454310900090329848921326554037380210759842521663896436314528639935783899021294934709103575108000517692465179721905371736472573262515707082823708470796804862447998839871299285137819998926816139644666228414529261858727365313088492166196657990258052083512370265608778930667916014871316101494309097920806780115054093986603533890908517399136847827164919492318230408655753274359304351886171915576165692225751162496726138365751224621907545451261293455609001888377657230968755030276419904732747861646705373245138168359562534338346129226310232766024157083975453515967535338594071658570992410246505605967188016746762505076256068241114305880943414204649448808579691164501337085752583471090497591266018644779420707527435918375205484808209918899341089023762863516130258617173328424695881599606995026947391089172817634705754931206374034439233124352216498793676107143216716078155619704696488977129049215740688877915840988584438617822145718528266632760170646583820787455214273390831763130181874359824642502123191210552378951828345299744323752378100714172644726937397448756917770797138028811204862165344025603829939321250295686934569471887477836569318503786171350552680873287871706897643153241612577083481130852609654987631113320461498916655956972874256052526831158343911845945548579243203273038146526807048085440228720205968335937727825854552522555525633658475507625709022714451472186054012653298622681746812161258833119827922737499616624530252272948852262325137895457571692048700464208652010017809707396338558398650820109121370579945134649571588022896742516229426291454392432074908019157968490841403722546038053334597586282173146207930737343533394865482523369736466441228727160532283020203519325057783745824036192354989007657548159825830438710516760002220478197784435674786554037627486191099119334478732544360652104941898818841555299095051072143886550111265923691010682028896161143402872886235060640885089870201998484924918544154825950879114791196526817396402751903614161594314413249284844767109933145439238731730888817599307090266840515178821620546695130564324366414560321416864410832977270752639112431880372895222538719130307924918841671321422104098578200117655207400272276844462047065996978094268001894527051846784673831923064188291290835661735241915387586781348905552960191185902837285612007584511124917976874443320007962096915644985364095241310657706192024750431798792658827676006618372789811081851318015552271217662749102859988446298814361423506751230391676816634036505270044708679653773957597991523111680384759571975932671165294866890291781469637328252255437043343009193234148033825822974079368406372848549890942475990645648555608061792034087491269128012632611799913055779885031662977042284446837991620170618642994922637782238764351111098145589692821229898873416665931774149944262169479716599364782641696194622665860297872642656002757091450771589496010404432807862982548121318935251430278524810521780623783163830292237729628652520659459038366562024779018649469746500094778203745179744787287411292832102882212209484398476118845302660318566797708564899201392536792839617287801596728530790128824458273161604749024367430345307162594164176074512374577872661981231592825088802698797320425269479850660391051803191069854428200279744714858635792636195725346544929925831300740882663335069713742213837279329020103500493138138271202576953445996780792302640008563846439529678299062744758099179272102227637599693066478174256355895632444229137279088483727272204277892955320417525856392301391691217845434218282637320112228744889488449169971958424814515031170199248457731284369329305447169504854671173502887341880287377829406367718571107855272545027439325313231118048195062287801039517128251547704079744011045827125217954996758834452320871523142120526028638015955684190943967124925005976234018428309129721106959016600767800773657609653424926621260939062554174796341820883625835519225192067724588330068076798323666509843565531952352963163076443811722856210579759543256584790472083028500846774143124274627406712008650061799023770041942217525849988769352665653123280522031926098834082970803558860323946188443736794216661401103216654792474759636898009721549128142748700812521805955188802883136505589229860485364745521432137101488995119705115163663872971442369609635197791317498904212496475779655323590366535845508638177338117719673782136007508741527964653600158431716995201323277023954513596886320071462936824765150860242731950428916817106002422807162571800884089909328156667271953254493482985601807353565936490063571704988052245287794380090421269628566932545087415141635421209798216571692320919586163691433581866529434033988975536874657187200091495675471175869399206045733604228031194978858499292378343157917600104827019919778422647952845366241942822062189287635950196587133651727683961474292289608211475266293297680801108518493757574045959603632487268831870475954863209464682538840013062939227353810257486960980630559553270651726088881889458854014463981086123184596419737393060408932077038056366373999145578545413575210528222383055472615630385885059255084781777079964119853127916976710130904862082299183299689758237323269764683954158706623869601397399072006301023768068243836888034886307989973660141204026486831137026512834890342175301427870395864405165910664895649499339401470055591787740367914664330678825046808222016864441267705490462990889231610396319551270208821523008154013015824274041964868332127076167168662438282145503496875058933301060156069084791620576216247556792013822879387655043301015609831638988226913129415066048140483598810802450042184284534790509235663732856929254110158439238652853776213285999464268421382820505492110422992560615923609155383886140381237395129974695498702796920564030908458542531587137973856597716032865254945999555519268215144120368719654198425034815769933536376538845979662259869546599800963367694302699256881740298407858063880274636255487146046466823723163457376162418241773402243313266092041281790253887490879463653517350620112231468095467167265081662791244971530383903302622000313276809825435718026652049164065710058392636982875686528218845425177403433291701860069394704945137184920909303979456961334746008408360141093675208905712249328542640601566667197408838025326419957500400105388934881821186642063397045031037638138962078616785615908105970666848072432214401183045189745802179932879506503661160169926892212981804881796401761743858508293795497288505054515138433768507989389552711026395576152980464865983130246225318436098786074449938808413920551053553379170225118556707565924652660896875878022488781530663011189299839488601809108506232929252901241565971563430099639339362241885938537682714405156723532601899489345099266622270299345440815755852665795016355003485513470343030247891688464557750909206170365155993338754670373434515673474344890729196963567487833095346049451067609840137941280905467191968711307279960949877310261741901168852110289770402771750725326023644878771790730142597766617387282641896359215589305231455675695219193357679814836733079615185981494532894191494202515029012080958104305273929137289762186334605281798382313471335041077590370786530506083371868166287244378498626778276853642194953492603498421855583357127403886883885836940935751815594430672109106211025124800699832446881406471243079266528619298625783122948449685195766310640457446134671872339536189166175295114440924110177766050504211552472580554405147487225437155600759860891359063153233382919187333709767247134445921439802938839275929496096626242747851852143321406586683826419595614444811302465311851452800683165377142533357840323880845985891629268083086363444683002028756969400883423389894077033750383034350917326648905991626761483437851685452493430277298491739158714983604192271836850230980784493405896787462770216235722647510591259940872239158551988616586422574542337384199289227345029030672603248655906259582267883550602600006497791976734600207585258747105043073648085914804603932648740986189323928034744908098255933821344766822832960394980444270679540093256356868362498428450232815745180610774122894677898626295380784577737748828256694997501051960864355310508773769678858427953211229675330294050314646155670696128513006281076767735506018967559219046672576314999337854059321514339289813760973589291512956006929484492941779958328139116781221570248168424367594244744364124142560814926037583276176297935850121863931458994061709822526490003065178514041721340191685919667730544839228862312456879058712763720563967610855997738484110986953384240515035273217530298498418845886989248807442251776720296682747279910430255748362224550291713162151163867464167013685307810924660875706052379425386157122744087054699692187950636909139900772338901256139651331954623139581059955663180298018342788637288685693703624407855032036460265865565526234134369682491465443825085713388158515083010857025976206722566508049150312308868360617323349527134398521259437267849008941563820526420352389835329570083186583464542280848603671112421614421585334868588407133713703937119510506643770034707723507418336017770915906966250859392714457779777612545284112780529714525490652836374274532041270738860044057695463375945578488131897349017078890322667981155528091018763912238714108926175192220771831570379087652371334450288461000658795126832067363029394424602908291613403301694417905564857247632366638060356229254401747357071886847659272428200951956074918753373952708964081729422659486132316870258972220233476291040147393416622381770547669742199558831223456043587533991706845338305772075009340155122638306567984503439728379492151337183396235555164263500123788698931075402266827827985758798966218475177011757666403215194211430475423186835573661153854797952715880716647806013374696538604522784794098879566034271595319355381604900415196766400767707197738492755631316170743826585786268398955590943588950094055710812850665248306371246057515685603835140705460263846501193975610244867239205976267570373575697928584164988866079656278969012750073447753875541677520108184488157614831477219502328181700824460068130945545160448620453314770878371225849851849264322331978620977042594912912668118521463295603873891293108837188663946830336067779522295109941009459572119163661404249936530752396717499117672504020928959593858735039982569057432139713962529931663988526091906885653586678333948260854343681155201445620382508709350137408061980505160355985937253539246839695949160383849925634591755396453043213230605093750242578208082896729583709325391997423277937983732775620144501157835773169782713669125644325208706947834644790506273159575069393981462036731276121833788353339659881449508770423484186931733657174392033743743279950738791090109263483359986530823012398156688753287981350733632271491478715052599100313628783094550587521046008127349716647390539818066173321098883441691519326775502214259148243068106513098198561986902829159699102315908029066168892277678495624610724035713989859420777395583230708487887016581128969869914973900954319122521470281593202385777938779515378579216242170837440874828788938207536864631650021707925695160419204952351141744383390888484261317335224444405334511164291943911982647298199358651634397177487756052635846315492633731103328192337363608691986441256134710970555183729622346441210087020187984492384483652767233170665090959352075984428575305812647660761089026186422699833751700839114313239933590281449772008085353322956063814987047959422572095606603919414715775845713985843999116782867297140080030753846656957452693150446036211374661633776407062157266342793575824983840825988503539650027578715757816567898652529670643059482085364811984117159982733693808639244884243607199331949239797008388384529618962371615564205965056714408033327884916958905117170472314675938551847865728775592480637496339213588831533862347468237141519531667809040277225140471639289602482584170031864571604626318489482552335267793203442428923970708650977143640265574025837644034317187475787824899898797284811723875325243971322952448529911431824863491479518637670430416670183030142266372122706086780134505086638256809581542697337189842448201466568138807078956083078914042573766545717464926193908161669937130817950443599717496045042693611935153538170107185907619046668637682780490198722956053365256207070650021424227893884326465013715236563779978264892957353296908392378620391091251872555584789972436253709634302233508790587429589532216391509801145167171961432145413570889435102575643518027691421658901600101243028740711333180274831509471441363970040975091865683476153473020800954461723491884785332427423425912718144360373451410511124733762618543510426811793175414555475854922105282424926730889065868541124431038362188601483960406528512661222821018426609908180566445649028885400554486341254863275428477072737455192705899886565932239745717602748363502785152869911442158158536165007913828484625049997646018384934062845644127504775278717746075310858331331081378766209787027204384350408121264297091247448503920969474279664502899950384896800016121485425424079100548983216546261919955545160110304948561399527712491131121703428749568310657727940439422638550911833177461772289140256428260789245152969803391009163680778729354568051790537303439939804591214215620863005154571876729750897956638037540044494165204915173089631869950608929301460456111442675120336709522846541449804743423490056072443401931668639488560902160443144599099376866149073739297168049644758405287021849035243838024088110083078103002696025441643994920869398708097928729054457608147243944931376652374598134243009242116400583484249159940977891630831001557258386329120804483865618362285477673966085456329601205662202633077975716134981011132882535793560631801007945532729444457851725019977350569773480757831369577975538987800819349137551736997956603079220384740226465248805453341716033381902852333384963018192844489432465833563996775249149942572494885011614802999615211538382386052093234494781839377218584790421368540205385064674075682031006776538526166586464924849996221997305633941033214561290901079674445775245324638327351538968109607830183637493372933490844314261928192584633538840539336907912140227756773434502484963825951601554875931671665505859935816573047669396002294970903317953288007718946024502685372063375676609864247455233526343317888909033267216430459755810874730232210273549467591344597971004561351284427672406064742092762468963079815326249053439399272373634590693487354435359068313487688566032281827230629196355042908918849687627397381853522737078378841331775671249433748048452431695967512080042807530916501238508690101618688042669224601380742533413327767760756244107339927929071102366554213091026741301666301219160762081933491324593067309492418274354312601944247116816463154937961103763211936531976198745379209532634439768590501128794796923110801923630376808242276498556326458387701620052434490533333673484807425422356378970682316288218990872530731798173336948770133525347167263291420805178178401485857931145246128671194111903777566382885389319534810780284006320902582036439243233941329943545366977662665625399483208996656175005692789411845909205268085150424859114177363169949533435970709598971858327138544520753937595899819320214624170348226394435853984109970566369429245844593842060900121836427219839436411948833060571757106877941768141962450058291686190939485858174208231228308050853914741443576829425144150196174339330786581636275491496080846570799948117951382164344618535334569872132525061492267551757608119724147113012711589720647380129396738928319702020681771510494380629691657556351043035720799950274633864471193964321040826168023679548286349282765696463084686682083728437802496958626366203460811782687041853955050766064453170886781206293780084089528718232221062118479082517470264535132636707748863610012367433448949586211055219673128026205743911077394561346714896392455809277280208056220380648559012009492436696600855761986492087241712156674719511425385130203071922818841605902914489650874652687191165885201829497381463151695898805191283614708185396113651861648318472433979816166577072211589148240268098979754394436359082015637071913956769760337206346335485129192310630578820676114724912614829883781890292346302273904974270705739940675462454656770989905395043803536818410726456795330476833411591616256344650174242893470100361170352503213167524847166414949264593570513069153643188563148413136131430553791949183486238353303381629815587830353269469320523811788717770729545873368576421008506070794568082023771319950857332389433333304897516001104876157383915111068616433751345935277762747897145698010440132727349280699489770045855320750171908001720948920049499624694796720784492764001330045685079227382006697237165841386631002742523634390939294288855174883650223501747313811927568235033789355400071202484723069814562828176815411916304469571960802707699088449551852740136426067760786975243217592141451143498797355678422539402203494313661240087140948716889045061310318913834122436353093717107555952680669315372837591914711327749337779772054876518246647582978509226103074259780129887291105120471647091399460917726010642895260005948207367692718278941794066647748288540948884388299094831883462495166675807771482446464267297234382235117062403479204242743266450020104997545179097355944664839507380283329675379705536101854545662402818703456166642122594451983861158467852253449932450754858386530249756764113764142878345553986478926997857000823993075301539396411432554351242136367355371737398776349245353018332853565884731132791147859041388770371502280606178218293671252405853006677397074062737914058173366572157920758962093047529255643890834802440393008710674566153559880462758542516643339695946576618576551542106035019454898139575078869022054006519415540019361203997662688162924122061135707505032418683006339395616696995626224840533078944245855235103072090131775737476101289216211278745826377541950386927562554028926167234371154674822420653937059966873619618480510636933075585325060909373197400234314359568480165646225557130586073572967608291336422319728055257428668172480055008250477429493519765056296759349010985364430382198715414346859942615832797695253362139344611890815912703558003105923119285264105426836465475803482174801132062321173551490505340255865086436107850127887436916230983923287660308993549007350082847422961174287170455923062947377248216341969079289437702045226841751757948852235842052264734585520950743398324930471892913831540890769822870446814220715494682966313193477397881401211407968724765395964540483312600080651395179400336285835544335969321190688087760735288089166023559057433896193739907703759368477609452488008373057319744696341851045213690627041144959149260013549636493213984018942891160938903420873260402693670551103042520529111484743093582110359717568522779729276676319239940498108155857440237268722489353054206408805577825994925583323717702526382358286729748235679708919437148927660610148876306840349495360019910836097821399817348309472580153745812734869823717661304383844684620712671659504805213331838607472355458304678740783598154875662071038291392144991056347899352706056727634817928033332375109280890713094805221755115986069566444141213075212332652416929310480194996016065358803597454815757240390410637665917309477066820875354608603718795240626945609807428627930536408257390743088651761068467608105137272991544269221919311005838215569886158047435186846612122521474485346343962753716610171038136159775247558256509750470674868669355689928366783878626391832418069265166708854598533061316606016173567723017910140555720613588849328366093391163675526394391266197015345040738821720496689056951771163826424133016836098391538142113611889228672973016800230149478497697952769721506176534093845213973930972581295586583056531885463947848361320373242725437958250257931861603939376083060648868572678878914617927313098260439096176931726065883507349285766530590495020072293600301935054612806890864795548894399045471114897215286595617392279855224210149859158258622723187813187095199042663351228454558304377963616491058429176577055836545164320013601476543293438101271372277543025792760750908151550740430921041548219258818944689566201231338323162903816142555262588984698517214381190484776001769548859122037413617541841378381911291098470035566531867352020471815399154894808434097084318358903406765796402463916446529184607875052314042488690649248385046035085591067457093081862300421079383915223366208839307511645349009436071465504774485593662876099280034127558187872237996958963971331386197020253688028078304315917033654816042973506217829295037264901622656415301748137070936969250690724603045643366925538337206559481475122058576041935132234989550967360245352241300584238608890386832517485439944096329404251915912158388146412301085884982030264285907310958855132634122938388953447154353791370542881785673089015481483583741767196693835867866154579505530543199191064620332109810699758848427422512976096776213904320371828870761036543854538593254591039955076763898652920308405786865101262771220968994879066145656765671055354147670424323383219940197880139126552796724311143343531081733020114754503012029959177071837997238394683061356763069452321504742094192082857342487917344319538203950230406543950646747019597287020881273963247659037407663581402607326621852052631995870964430146054459395959941995532579409631310197388344309347624065785899798213551897734372011247063089794962988150945873729083633897046806664758401444575489469115193022385376783214623302326360447427701468368498757262844077263774280671713489342440263486887937295208569129121569839478220115845476220572673179330754660098100027711565304604493443853015490662910196891377844532393556205678744564182354937461587239131690048604516952518343140705154844120485271029019390670041945005846094098226539033174616657992069357057380467873959013777697247855011945491643913068015165292799542521895339824821737267822194201831105609657449544972989022811262405352317243932868131290749076839920182867241275901165275435707311701532489179627645503752630277260624032542019499645982615071126383972889469977699863607662061821707145995558621792721774225925994331570089527234309200643837951428556175857276574879011030230312233520571173908130772988882503947205084116902993003302353702345778681516363467054623611107379764552344726177152485629052950568884326522049252991771979016884188295961551440780087880063240401208099924171937344615553287446556080749472369570836571880176816305719289202764998624515316826386300776172166774838027273092327271114132638995893185692941265911039172159312347776687026674804571111070631156349698176191820853942695292217793851039082469072178902190579441765730480860733657680503265892847757691179245784377553625104382561830299604201447998259684111140181025138906053570439185832798679430484968325900110187167660676490138827198390841185842169596979039932624118150119659935355876488288827902028763860533327771835694361855239326572519372645025068815956949306531777410069279237528125964906501290560915584391475828540567762602464985061153279792985647743561102523321876830587238981773845246211362139774729434028818253940841188331097669419294117017732788486889292293590246934000928914574450547997103871737844970376000415532493372903164295548857100816773789376221761527436535166970729217650098155080180657732311175281230178369699633542407158877107438254293848108779300653357726145614776499832603351980271092232197797801430743174314604675777370402885186846016702900088051716352547324609975577576218621273241306831620361328091976229755535122728614913285945311289609610874983609831913466531757903792927071640953471647622680896461834258458640013243905146726710746848295188195651464742587121990323120500197194408073620183904760939703529769807632204872964820964685967141332037057095113427305323049242624408933090177732606015440425433526937134685182017155194309132665708359704457316206623859946852847265898675640049564952250593965275528723347880977742464168919250893120596274810641365835300863619803318059417096652997128030356028896082257871516878330249406457621165529227954788273920197086798282149003088757360541022551501046544805818803097265004676665064586282522152370269274023581124107988543044514343852845084365067409235822432395626600036065520785200664643593485936150193642057430714584602402145333190208085725851209669794080982608351322202840136864371749043342887915920174847779146723188954805412957916323730159859833412995483636960932428213131866299610265684396975644686182934341013356351869107165388050805120279511884684450205994290889531228077844511306610956105967810153271186476838472405373144377164885331258955253689015999082655911894775022369264397272419614377519812141667190416979022028113228962876445677369868550161931328458996614672930447298814962134204254810753502681647658648830374940164772308327001620184524210286941810018896435676555991564337276944579897337823804606636366164106903855311525609860165785767185914524663240399550625770714529408251743956160597747354617579955747080717196126766552423366326287766626066817654695101369093124513933209232688203144993353484347961796235438117819545028387797830967982070702547970565464861550694330972371664848863008727091034746380795007063996805244375440929947130749377094683641526750123503295902465630285089658891702101732816547764086087369088710480042466299186435546573794156664500630488982211420457179733315307128036662995003482496724461517013455128373370155818624884092664700693716802416600174182365719636107247111708549871151531145852276415289676962358842578024128820310676548481153215969024763298579569804094657443179038891076685159903257657000171270244718901307753910538781672256534807500620716787306915225750921323677052699255648345299647499651810282201601000716693152336170386132839755957945057565419515761068751684690912468957974725568106333144616735770446879354115564339939527549581747836678516931732030628657792532758631036409082525246576111348567991143472829038439274077708332703632152773753677080406573675970827466065671013033496567687330574549186715995334782651279830926155068174051918106888872035825525628305027202339268369501044880402373631822402688032753575019378240518902755183417788074558026243011364498436262547924231957375285967112641374169919212845947705535963606042594923550743590521611878225846022058748054252540736655870591407325600063188384269330016804697996934962975855602647078688613744011243016306188389974761990863872021978438771137830482007565976008581489397569532724849154169049360502079762684050593797055864445468631034041646543858350158845217221447029966850393656085931246620958822297343696786741144699511723119914346497285401042244500968566524530875670506319167124027686512419841703926863007502571954408221782305536919853854681251101598312380079302693347834864738940334090706996223049816169206575531814204443714015728871797280366476881562774327075143290926303485631464788219192378332117286419169406371437053620416067374502272877563812774881477532781990295578809317927425156195248278421331512165651127503727220714184164817212920152974744571933366130715225330286163129358940265367288510371312815971239838932579413073021534634761686299013834711131498276352379019630405211173072583448953473770712997135570625137631622584420856150810399524445325446005353658800183484792772051210260691875564667489601306095918130210482352958023244848901684543301896157897860524921018570627388242909264263865607019113860039293029001499795572236969290587308178905250954665464555545192365343518660321311670095925703994207303501179961754680158168192037102287305735918915963518311520420911008747277454734158795730319988939109066274144784952222091320057342060890736751584865270257465850818196158387865196784229729057025496984719349815291682314210257063951190630189449033403943314865381817987996145149180009560684530925580952802393174911208948290677768760306205405935190633612848890668265689973468203687113969889536492570792072625518804847959762612538456770175058394826121902613424285350852024021173596954473757084737364766233866018808483189744120235772263670467824234931716655848561067204958626051764708894593027038586470011472631843372249209935585842309739995819755937632983516672811888602164572329409645118076512252175111539383967090071748779911030134688612886608318889432263511783910723871930986748366403762619552590067100727249215223897907013621678838789674533178788266112208641739419309204221536981786427564597738261226909977459350295599247708948126972859415588553506589046887344135092111549074248842199107956153380438249391127123565926040386498185963169890703759129111299741701754797552726026143840896864093058152156165957760947377399604953998716171321506467929274917384024303249511484348784727846638884936633603081333468642950535098311563418325262902101456666299495354300674404073827884299041334899661378696865729048289100165142867164323673671483463316768088046960106675855394909311906577965090587481060934237029768982751976634486731835245665736143708443974757164504474650483175118660977722839717914413280890392696437011321255176578723351301355472747198131661777918391747431852095570201650895318250173353597432896915978195986305042541689791494962758314961029566567076912355976821278305840392350752826229403075537587161378231756664805155962764617716049561393532232166443312440023260958471098369219735146536638032512206662734430991604636625451190484904424042826451899091991714358305893354393697587056907747921190287104116059834815040265382506972302087949167610090725732089154808387817948093333039784759910197072611831770406004488580057857103476470332974572284795751552845771326442409145339015866749251765541056895729339152085572475447664145176792843994486163180142250014737558954035028930091399648276619288698912911090071850171159807221732557634858132019712500757017170932436739138870851115399709669804330595761218228880524832867267500336605651810323181738696323990426065920385179520899396776790404749720375920281208576884616354616798477480616622547456300790071075434535342059875701994678078491110097398955147170151389174747182620732451169475574332427891340319592018680746263924158777874049693075817214805954266139113998006776083311818277699106546977425379447164456283491624445766595980662025102236337125219027599210927365608822526476676473062028584626648555591484416238291788869541014166416221094630394111794124452318871676322587092293579831838733209771677191409873747376297220465420281884541136436902715186631906584148847238411111114913529234842996773287985402357425859256538146722317495940883516164130135451111716857147656864918117578666891006040081686056389721444872557804284069701082327562590575023111669824603396219781501954740131831618522648511691270140785221799109969232826133915224453502781598077946374692588568693335792457265993206557726856640243519370352724233291089765924602024654834361854231291344152954471301303081420587814685800514086198284980694753425029230800566475877517091414795848808860043502591632502519795896997184682847281706140142578651087200040700296978437093730952577042377043227556301773500778103443848547910888295037728483105936803491714691712210987411601673331187747116395917586590118522867667288175150836081707295103498267074057215428848393985540457728499865162894855431786833929686471561263211825071643490998849515808691322159914299435198364654266414942146330149128090672591520999621305480694730917558221240988786242747921526510848635720314390708794160684369415925219379381798317117488145575513760272834661380462465911425025056455717057504844027588453705623584838552310096276865880490512999995039791338387340471746390830558459742054777478378946254645618263075614532308510161236960535436060335387132802716615755780483367819177712299476186655793470858156005726150826797104554110644737561590357867604806220380155437647134286845586824906584839615123027621254818906005112687661882866744695972291266756853007902554133949101001377065971711921733903139947945918876742309774313442886028175964649285341507898756213108441135900858082973832807747245052411378060226027103939386970503129730832540836760505825889840021354457083394397679040125193856305729939708418175283303824823250706941162321119946891629903775539304226961424359359631872774261352213942269318924847486278756372947192985347105355522209310397141974157753726439102526449964246948931122640747681175683568506826205773579379195062430039368226346359845386411618475198473577847275018136338662240292299852513909159087075782788871235596598882315428669809789247711248057768810751746870196841086831050103285024432037016912161194886297387349539505932495043341321300981746624092749296356418252453434417797195921808085716894142520359584182836527123424503595133794361844921324146566542703102974148091765559481077794191298581290697713215737825812515859767738374532538071129542033797765009084562714044089958300889072253429360983770161916087717741671009133982410228699324152412892603983233793047352002350475898164859881938929838762070517807315553313057380432690183056583055618003794543050624832989833942187395361214487457384639966176178502169479007103378092082851523582728445964777237020485563311597847461196812337005289177139250090643587033254848396053691148405799156898931680389565485406444266062092443639468668793614928475473224383979538973214290419675334897918367361253723429419044996084208048929817858490089271170193434953295794032061167286476879576303316997248065788257233659902145537222317487741801810687157303151378375597924375543475804065535165393292673345303240720247364546919216170826456576328979261489004810358818341729329279024805424759173805265758129864596382144034942898165149039860702892926755944952850590357563315412018746269992107510651462073934958041635669939419748605357351915394005826371229491804122914652575281010842874552539347523018412098968592364685841888580120265326219396513759313151270319861509405354292371226874626625931438310082810964908684107767921426002391412857039338253930985349856224682917919240521013860891874976648492003207925878479319096409283733440064243828935445005549118224619053385302867908875149992451420414918547770451065092584349383417496478320329582282130058141043443574907944112113485584023176288684801668754977990317315315593445846994111842919421507377228464766076654380492526705780790913683488395209857532245358624424402551920730482420623106128544926609989593351108790811843271335798018106947196273192021000344488690598645898851575766819697758926768821086930110718014233637131591774875307820045423926638293342343903988659166101779343550504661185029536106522121408925728276729940955451107571414285316183384025954861981160273627444209189350578825406565771975124576521020739616085900286041777817305558312331737360102205876861648149901883504073656456239840081096723588871205718083270431017788538315336404028827306140988213941629053092289999116474003057904666598828687229748427190711726381266194855693150491335700693808888223048972531334472506957549793481357064278500425538232969807954466355815420850469428570602105982510417749844279560893504259136760152820249068932010429398117150494767209708394746654104570155682189638291794100023616465320298792143514529015298253465357179951885245579208083185201762213187155779025825875468557601018564040730169324555223979877456038147847821059161273069707328971789380955819032892690286875314636664643666673040320670341143969010951180456793129882944000754527385159623168596836946959886224985955510196446416589331625498876593169734033330147438965574479785591446297403421351140542026625991818298276367276032010365103065648585596082034114260906750303893880788325378969987680652256387842857231779644961915848692574006071348460928742731515687450013375064668351711685071071700999443317444682668521339301336327570675515675790515746895391061321410298315041276180631256632801230991462118094346806337107659910304581675861567978870441500839167559282746145440773265064409488482355628686079690910261798332331312301735759647790040788283392139190371973865603931622792557137343868239599677644323943380445230823662958352515412080358760464248856151631648829500880189569955976230060934399387368740743577260222233605297556665789447733319423751792653686535293604258976626981274350495603628924391007921630442633793231694546924816940412303596803022846220304658855282675963941703132168265736412441797334408182355002012143672614980801190224554866008784525492819517153790565274467250094300078084544400152562384913499781086297503004503142924909427736389399217418439485026524143396188541110594274199430623968955949621267829188797905434700786907917430145271739102076884888868431031062016962486793714191568972838206409576028107041812811159793993172558848583104984621941249261011294428916127454116196085389557869159686651447573962644102887216444268293330465030500750140208564132310441821646128052186636398061712097694737802704916225121060067248060639486202354867641538846236192567950040934633590352079904674438040219570663218428855158791011153358471276100072122716964757490072840962113143709720549030060128295433631044830359038905613797087636783361592758115536361061583387447918882342116038860270329480193196550556437829700806410045610189269181812798464296107961221878057077753005569309348211194558214491978191090331810914598993572663439861226610668184840349859308447507068869918656289898356627443765187697789052731274330458978913267119080484429322325536441001338829021454627751658274190509275458556751516457525628103806155213187991551555110797148479303002757340485445522914236261971011649835775684442774712420893001167870348463817923878118663124212087262417779360228967547351354615999202455969848431513744492852352187113140801055182140487549702252717706196777986716912896282935381089015066247704779992180076706387858039455010811017926936983582260308852422214322797385391117921774145282811615186518905714475452478255161400548935441793382628545439199095483162748712122074085045982320577527139164671910998048294010828365709209305656799841029637313080041397798252670959042265993133086321577196745670848789702047075009450435388663345097887618019548590977595080078117328773349811655066406983465214460670669535193595640321638488769857352726442310139870292205788347982357033574116766621187851561383411109398890798056981483939968740628647665856216416582734659822699864387028022232027389737921521860716749886310534777559196368710869431736231841338742925648622488044446693095912803448763915074883542812716351290065556638372497181041526480959973070607144992707314620662986044727320996852721206187802494834234277435958497167863622012344952998010453903330139310403154721976963394438106062383679882222845132933689610187367974386600823942925550667496633418413272959999452196107584459530095922919505314447039244604161096321806762345047532616642343139394247412624146300216429434536921241619364760266364712060643257590853787474516991837988058772562206992426039939445327779293396968988018968262636818140373367371161970568182057046500261080922282057786234392324928718274552381703989721252135441584674509440987544867137359865781116839187398267635315370802330209171027764530133047574975583568284534067308095507724332800954371320816900624832971592454574048108149032031180097986652770472086151792379015184905890725523201331207970330037990479329833126475636913684402658342072486684973846400018506847565561585689334221778516747435026310908769078729196959708901274293855208633992491041376873179681624604681828838455532605373219767617356139309321563727216123678801109736225223132197131818371055618769509484062393864690845269382232481121988795629204924949042951539130495761637451583091296497734184234838613488869138816157021468756900305088453985692442348425196565703119943806595405763676310799872686462019538759752488404449317699847886413459376479310978887355482349989673325544225652792020677404701253987308848846478597245180040004859871329864411077332557696153706466533790847957904790667297496226960996979623400506621349430956840030004310501623161683331896613156143510415977080369766552420220820922560324945180728135251632812027607462703828759497263951864622913811965425334816460100054876659674880067451389009660238721628317756314185352834972679990782073262471716096787103920779140922548487485133181441335136965862388638874207107426870324104143897074669119760151005252198299542474803482230869332990173215671506808926542122429059611102178846958580965516115715459150974545942807289187996042737621826315242401248151008893491136419128302728833303687586633039632228892807332950698106252670944313081281224328789735393289168019452555022235271056609427389480650277573680646104823508404174028492504655141686665796120704627281883184051065001466188800094780897506193256255786173884657835379487911058588016382958936607827711254023151144303138643923952896436028869156418652334249734692948530318778899321554551076849915666014977424869334265641764565936153407586777118720768511382407011186095451707886261390693607212483849201863794320315975443446379508549954844270748199434169813538514515236485882614140518926028724710838896315283086391989812267266141856052283372342151948167666950702604114084698399779174327370930534485214662250335238627331050336402792063432481631836189378507721251426442317280552935162277209854090710880649694327252024952712802322084560500005050552689019313178578587828901255244534918660239947031532330482351553224454231570544762620049936392211628616741946096788676743976228919840560083228143189122926579815142887040921099443924113700054801821335769143446887151685302661943583723660847421736959645050344504799748981477797395755062633532387746634008997903003829198308893851101191306552589768420755545491852210525281992745358046303626202753702828428933322142242206546013779249194968180210197077056879110577714613762269924396053450242578236790814338894533601713037983243373734046398582969591640271009072558580941640758551632833399190174466979799555402917596948342283165310181952630677281020079981666469692914695723866028206262844795138400020313239245792660065333161118915595604125467308591573335493452568473318929871650767587567379919933984970197969871401955491915555107415038684542015517784135513732263806333908659966494370314388056131914746731260745092538995445762626525783935550746430892509338728724570116950379454142688786145626495350987799852551420261548513178793953684372323461125620519487603712425989796892019299665861304348437355311225926064836216201363491105434234034085271338246770155911902367022189827187453238169575883222394802617833058518867983357581418288313201424301029664722571735198441961423753278570346165643167030546973921377936602455486167046273387716195221859013785181054235704240030085705383167666690250545191206663596555752528318559313785642606310679690739538882270457360905903931224440181632253134797397605672805912010204774376391314189992724989629908159951805366877014553402702802351413780669929679324246734050718905431298061829011138771239207061788199237564968960302929722272719336060754736282394623520653217827163025545992228666581860757076590505608890712223502016779180249850046449597970984432772223210963067391409917903703604685138087042994061513624718318157164174043363756251078420622290788890046541211792038967813562065844115910546407420730855206410035114694630706656239810654091602864052734227554853687922995820026571217924265231717034706901649073580984469399639818147774056905319137666114723554443031024557399060268020621587355923054597635799753203051365080375938261722688558220101347149118423946639782086897131422664199805597808087778755934460146517375772774711643588189868261549442638260544369300308081998053099090818885917690560080050960104925992579431096744757522820824672111188008474694385688262558657864375605125690581134831770562346612062885027947101338073111448914889424413145092229558936265285233424438144531772388448029268946344560503625689143881058928799691130432595878295821483228281310294000579775971939324890563602266243129854711212480068319422900359656740177986076208881675144763972429532546919478774848109573057090787001359122870237066940064756020727998795233148349095604456357474397662602866502532105915395857202801252163614825767688700054802226244273368407638587753556784186490530446379349600136492149834205588185309043434975702194613583327084355214228415022375877399014145752218065714370843379704729012379898587281385152290986994855602553897178675493055740285502146769028758838123644023661162731880956109695275895992205837862294463836966620768463069616576048562141642617748205070851573407658124449852271620072909994673678894138506548192426743740730990065099372133123067025098242001654508085928284020337852311557332271202444756563415109437332293073136067206292282675472814238957736672206021165982416550738097073624176603602103190139450884371747780910987320797612672816312663691165944360616327201049863181869206169811552194245004485428093316022969762574938628458849184997661667226676913371884262306497677255210853309194683592586541214507146811332083364182052577768421649381772843213448880034378575699901476016242871907291710101272218631760825598196425012046659848500291062378967724362415628208654224296301050264046010843583521189240546692238035055303671736637407811922720844228374608535712020803850847439661818658797188914272820760537415918144097891889479883822248424868647268171305348322479717747755128156809426362583840498906230781281944820600125369037983643469233476215800096420829999803127418251697895111682929841522860027844867860593174953234724621630378969774697042341831959851267500647833757396099818183732914782831045747907029467604419247160857792803770502068394268326023928868073704367078774606504478069297659786648923135294670847326425419532148910446283221302250911396718018660582980287414286416144666184141938979772093471105404542529878593593923093422869092000920261333647952880841707311809819832131190803009687059744243454948664390346803585341050124994240275947499022216550328395001814827614294134481548166545206694278713431111208384391478893212762242075687376458719346026847602263108509274471862737127649288499104113321965656578758529095981922604923550690262919958676791157441122932812667532464876475585638497004632269321800736958027929962471892784233901747409228152865188591018605349812252862524113525043120617511773134123742802741833197034918112243042251082802627557603151566282590962341626377630591940637428371067649861283117290040955941009947988265479953282858809198896645316132931990240735960534379999167754507823944860777725712063171590918538470695932795811773106433614016513395108828570846652867127705310874645600543189751677107688408258389443298399862007877625365208274763842804889755654294891644333532963026556495907688566408195344734944816415344728050145461172798768730765895560670422835106480429821350085062758169104606903660714934123694196887844406367640393582605417874662923400118268263473516400766500274939008978339747511803381427792885562689433248170106938218221685494416903855058330291582850580533855672600083045342746232744578768124020226875864056058095921074465414479775533480336104834718203956096129379967890733233047175155447756963342684522459502076528136792077547715527975029031660199646506182551080733811356075788234669596955865791611704721401904757451950807531100965773671153926707384947949229541500776452244004174210770250700597462247974436664333648403856051814993273918419991171416262336549457496191598641282534595874374967856419742684496982903757256449151593698654156043953388240787759814327924132365623728735004974583455686439246833924748794548237071355418417707082220215455696624883068879178949839454538313303539468745010911604053786155638668371992660289683193064841311930849597001553212259527108539034050071523881217115024792078675815925016805592779247640182626723500475075191624193546996958606285588448782516020839394095268221436255620438932516224638411552915606186353474796957122641014083186405322559576766484180476959549462991831761770676805683071004548431955179660769531360605369913914001431070930693105278645988377812745542814756147871039955555164031572044580645945130465873459314320225546675224865589326367545042751052091866729477955435437516283096069714919584998339532810890997455814840788699070799361610714040751008232914374698601862724512899784470746149356979390623784505286582426835867241109376400421266233407908831693542654471866804467185250303354235897679384108011897266804367629742571718333739832158872992142034872701621830621731144879109654179118273756373142810671281276866270497148943716024110471818473132674621483575743639492334428301091093555927106078365825424002294043538635667846982670528198085215934168997479054899231293378034659551954949503077894945738299055358654775271816978815980130898648130495715393238810997628553812135536471411942747906683594961994901094707426449545492285330287902376488676387542998471173428303515285815413840659358949370497227822210256010167890547887712439367549189298461212018224271073585228691808126401846917056832590356855866558687656699300154059636805605327941229435715756753929576294543676902413136367105957994475801797425255767760843567446617696965048450932924168434152468978483121051863610911495870962549022193087681770602349504697850159789885867911021294182176987188321645566995949071459883349333964392164680637469901424025205840060226667973596819423851222503459733783663407968508948627677993420872354741184820391181234214018476345743060420661016711944925873405627219546893555309115732338938663221167574743803565098236517267130151334456632411926605981879785380824810232399458471396091300764699568022560617629637236621680762973441320867573550924943318050505436758374070320225208932773581075029425002851255424032478021820788103876636642372499189693489435078620916794386365399960318889665922022155363707642362712650562762355271392629354926819274996337441718403346600527379504508951491819741886305215517400511543497125933335523687320271104974559127328584116985417389530191789572573811251883107488225407230885296478021715422984306436230760067331878667265970723771463702559448465182782953602167165899793449449155051821527370997485336456577945719845793671399892477124437317941230624443387316861451092051474824572624349169796442753248351069935257139580557321777254035020835401035934056762069103925716628071932022822421656888843998299062473646673029167946968479418010241098280913574084966973655701493418283756065059842158524837776985129006071700827319633135624584047552679032723189665153954486568482907452446034187842176525505171391277811323280626843706110806183385083580646449392801927847660094314210144973956789250468521627521691168629509977221170526507065815208265406877130708831110018042874623348345833645827939293997077174399446710527498302661344181304840882066389636701834007109119371654735970298240842576916289399150198339730204772191360396686208058793486204733001806929880496137973459952439216773695296220484866691688441987813783141216457431305654818845247070625915158547374428357502047446907322626355660091736985537584090856201536014211065155957601334944714780088384319807504779502989142558713866911848370919750047338476193685974383415770439830759045672258800347860984730037879755724654184782556876191405877109286720936907109296035541763079262036235811809232452554106212142494475088677092759529336254172174579018462505518495810833303065821811424628579159978165043208102943329170767552721552977213121663812694338057508946496891843500809310777121603492751253027068611610605522988669429707398398131758919750481617073002129126365499487068194783949948695414779389250010123578682805017362850572498394829727321563804881772796054088542252563345201275243562468565353131027986262943358545105409866046452475734281738377380825805712360760583001623060194018045601202403840561410281311051827014212616119140939535594936574628967255812019086613735108488770101788560589206821236120063608576177214678187601740734136757893413347340731088153946031458107529772022126742232141996722133671899659763619168303803341847433957848755376141447897193628658267876270389733211988117105744510922401210368802608800643006451956391293524605327917377276969515838759858483175079296660648178907794180363499359690764374504145294892492181184138443690795851343315378453778367622023848441710054602201213223439803097297080574031017695971484347453260781233158585640945534008564068085452014681882598202396498397226998634745373782673055547760181643337539685211031721768693341826685028086907881030431108884266469548627432859411096993423101332164614078162385769065629005460070378656002388069431875088553609066702521325150580327650847248286769224298823874987063164397519276911002798484520603151452831500396263446353626230982527233857984176436322527511559135118516662123537202750172367537231476525469000877682441750114130299923999529214669340453811596344677279442364982655034055922216857694231283628732536227499253346970677689708655991373836150166686339773777741724847813156901945098226752110623126399888059407368880030631954026479961479045735227902666548635895214281308115020066376710877614164755344935568874485342336734855401772587874140972399420473176166373632834631466879307301060578727679711260393263490977606725818192551063902149697949041354834901510261362550684671516440436913594093454137283618501819363093570196165654110882733749945912249516392844289427972380042677492626931228844170218834321469779934450017704354772442714354519391011234754209080079650532221139270821005280594162097640929157035267829684959569326977082422789122180160135318179152172263623361848659175400623527885286220561133179233393569478077031906645608658446601645419707765727410731821850287179768927131082257480372141311994713870447256494568504298299620370568650816188638632265022118865948730854765142885575100241562111004137807318062480077152695230439985117458541067772190450996313631491964645501698200530097773555914198632009430472319270502617410344316791025773701242113787094646796636933760506951630485244286289360959889489886190993240402107542428647907324412070184690407630951874317865770858764457961072036512208259402682356681483300081146533588677519142956140371396715213324798107793067346988201765742984532407591951193261159434110951393613151190305498768503663129009752999500294187063011321543375128570923344626473938163300684765032785136288501943174695485713412219865477707736527962727119372678521772805494955798677458677612689439122394742295129852083103696377624815324351327172212116586762761108435312957147958121336659299493387545667927129672050967480054767417477567700962161335725837174192396592133832755968445930917511656285373085054438404811826012493123297170767541151525007933308466379056388115232219155207984924531563355210920216567530638128419169845482986823422251012992972794171132893174167402946150155521352819189457447515788434439832296439090113520762751636823931178651940523011407309653332121918645128969172098822537420774590298086236312126872547171285808160677759496989208593610025842606936770233280002212462355753922163616703957987740538604176219694400094732302570080988988322287393207529174985937694711499633910789104501972656312259423607171883643807144222730611486731404837509073782458442589407564864884240401548114177386968867265165412741864752353124806618498325388561613745704706390246346890444777138771740852722344804627516002216250568755667326069242834360039341218315664603275794634345439415248462438104574219077978322559665441115643129801405745038498237732059087272916717962213147574691306949334845643149203817993673183228350757518286702620424151667975199377081796232059687609443470599651690033278392825224402625010076300994634957772369602024050782667862886958582790120089999981614591554477716930635280208963769044433329636750482480006993332274400150351667533309952131981274458138520766121694472061822584627973808843014145689445237670225216145034867094845505094124385327201551598963814991795476321030677656134817592682789635410684928050475801315608608897619922602744717437152684245262093745119705902818479688790192641500604501698827192372236441261327069705427381298140529507011395435069111317599436439344679725182271077881812099901453566231833125193411779188274918254261699377507090884294741323785267337328521599462690545241998282956598497758141104396841755916906921064881904407807286086478585933118784687387928867284405653934956042131440841518987110317344868255290770899763268777702314862524750710851278115935789962821331886690828510248912266645539153745198295759086530977960053992769449573826035847186146508402982036374200821425243645326446922912548729752435387662297175862161286861249434257730389436495695138397261171345073338096872445020992350643504390817242580262261740910523724693854118751921790859707624115240916247986683055843096371788542487483144125435405229243403823730679832704950189441634396043665816597288458253273411680655989334585666948203443521350184198202042808603915235969641085765600865759222241386087473363520200455939162240106127923425374257972577839255029660856897818387808158651696690201388986867538069635064174026025803032993864875611476254468418437152227905664927851717105120147937560042988949404831852375174090579263631478167408638798115265778478253937952811850450777256625419091505547307791716482373923609875594133446541924972104258090046583661663902865181713785782671558034195425168172218728904073798298917795881907723293122972715704507477069607526983445265530544736383259713336765669772388615515949180395052336372918035435486227969791146364307965756507372297630160442244980892669542340018055010382523583238731979548239753136213246752836493678179174047534672773174467945352972363048007263646196818823701556803686321664539098147806228122509340692679041222655410719911078964502520481981778522883652214558744508222399816665847473461830506507311694355585610389987006670997087441750528082730873290066538715102725628804166682948880512364495756920985832694071326177528435122204313442416924208948311469813706175801043924387668188733549280222589466241555827334279684500305602150573644426218832216193907243816561196394039819022569859469988601328873700306961283838298798491677872956422909585760758832542484821949218203960949140379276495158504657815694576020618011480136767742348660013230126738344549263672956576176699578371155752502269775581467814084280696673934304731203972433100952624737596074290059757395603864937378265886507760882463656564651922260406365107540371289769595233911746326331611005917648559030759126573397223764302858009918358709328090347240796257389504036198617398837909198379850191271982994936963082625184619366424221413448752820993128334942484698609242747123797390794455836270139186204546264473792146180703390325602538871332525440955085293701226183196568186016002300588378796070700525330018186650029206280753407285720540092333479046517998417478929786783600109945856888587129594655732364856499279390547260505359877129569600623022194242092610374270112275866123775371798744896033477464703742350812138757453824689767102134499338655159862287043289249135952953073643042785750472322549578938854264633631113121215426882158218807420973732373865184928885631214057428704445598838631500232970812821645981724173695069873196557137910222658726800675044029743579266186311297097998840025768773942265956016041731773250739044764128105775487761150384660536131508828416631105306510134974276298547145424186244415266728305214952866515155291729675179582349299835341167454750439337016799311935556049497833448794660811805039582370345085711540280163812876178643394488988739803908217272109908021426729443725985188783657628926048920234522258168392049211721605390913239986858241981009012071630776000472875856037146751818993473183519530018202534366169780183179686872037357253922342119522594345388978118034979863857938774477372907708698453033318167051994419734201927721146075550788842939976998228603613815142177940064458604585526651104054899248155917661487203630413821487956835585165425393600678208691818101564665798249474228226025033459445583754527829706912865424227971502237126165109852756461621417906243439118981542296321903503288154853102220666329487424384135675495848804248089113494073137161803566000700761491811103385073165275218166320224053162793506433332174588364415538836395771221618452695079850613490710873283731610002307256057955787739059233467886128465706451233781539853478475615075896847213954694976327081896115812739770983006135503769713444433319686506302999918303917580961487735532152345619110366936769592655677695188476661784192033460549941060303822779671672949733250886442479835830139724175412324879055738418971843773158496548635589788075646813863837454363823035822418285683901954119168625102585977131244960538997758202832053997116057057844051595756623429229331946110386157876342274653450747069129646690922649062730486307007368462210658099787869788014432994057481334407777291681624218692151474036019389959364219524239193697985364573605994892768309552981199055535392132790639282067854162283219771233630436142084667358757949472703423761955672301424532599783721807422967941235969369788835060240903598739067136003461920517933740123981787466398793695982469700362676981248780651636039567606249711253348213264664716933514268581353648609710565490645736135646071518147882609642189257547724455908114850321120791144886212706493139386150031382953151171515116233232006575117866911603918459359109266486486060847683606489316613630431579912193980975066738897897820456277769865260685405811470965830863986264610118809793161391157959620297585916129083388727292964471886454422111163912867401181611834272959404003272249130023726095635654217283242446626417586803319762834940823191720438902529985022716050525245827270972442195033250485081759551473712556113970875557252272281946046032105404902906809833735817686752032847066784591677786367894407320211946958295186692080519500339354785962508254272069211639385549007487344877839641866287506293199490400310031593321232155134563460945745162900825753245385317736132185279401401243923731456547199325803560132211033157783498086850490802312261659968499657250761913969559175888616392512573976065252124249801415870991222655570880811529332852494650190805756876494911644484710111990659442130737184111160216814788652119918195505974666394985341624133037299316685060794672728436183985567517879649926050045157942808564123924419633452377033685942908349299788119832516273921274230447910777031668536978739366252386037113309384783227803281451301158641479746867760624061735482777232653806362753260227080237601905658959003129677234934576273126085283333871928223216651812946525619061571588538949352664665739292404771217968438137413035643623142431420332422370509694000790124631222963703240799416842156651615331822238144652238607230621977176258814229818525516834510439811885048864299540486689526816561786428073787511189344814400378496970167277453177251639644035041118854921528468586869834882537193903498222811973792849916847362567758947470864334996311121328542250068802187165549595238753892822765417264678089265306089530969347961129011983139681639453797529095784988513334305276670460352750471859989996013049428431989356201023247819296313216030249383316846026834681970996232528815233630712319977624823000201325336768799453627733213496463280969149609759904613455110769983477152189737683847746976157795356577320068851262752996682229591781719815737906145959892318332330277415038961035085073655899328443187687411555699151637752539938828359282100540921475476511919879156267779588322694964686812917194996865975702589786223957970623943187226717716295934612603942243547073493027127277539636737973741371915093571494233546702217948541115869468238143711040374366719401117903712304971164146762843215914803839941716170011467017431029725382379268686432975219118636691239418563499211150284022187073082480372256416624083600083115962575017988158269261763033809227476214134879416367380502397138675857686177693697228254373817908656413739336148765341381894020179769291275690649497836705572843099408517310444902395883646636400915252090493833537472189421947492729675952225829350839735867622861562456997989029241253917212865664444335743709366354486833388285253219652682455657919628651536491180945392350424722223968294679874688554961075530515358753321263868372213063904472411794819094784576365117123687919619650990820401006557519206890186560690760863927668101170767578592539990450301349548810257681463018458562472522563365939646489225125979968500813514685496733416628364758200327855028228204866374809825685571279294485497295796283302899974887855397164105885806211966227960481011890180353544518876248842486469747243322110164881320404478607457481005441451674326196479222723550962207167454325748138022194052348908272046924690312122230515596156806191270683086830002773031836409028694794306849850727169753494401494071576102492855010577572047607193264464862221659792063199604458271832138618297249830706440279486586706565072821307840847593476762996815833730772943996541744202668630639651323986159692606397943188437582651597973096434410693406515805857543967582192202071415382231714627038485827983257627390898161173835790862605281371066626211135295996662862276748576606043469554609199047267636520867088135753156691077494671207683375557001508741946373520556925558421666021975141415327140891470090659483187070357207870640034295311328174459602875674364373565324757431216484260499492436930266159253939173681907932049718494402810755378962230721926837319869247288339425953560246937351762333197228180933707643655568078623489464443913057101633544229819481843661138598788618060856465932943353262999936066760544058749092528438331335860064004097436147245013158297249579461117161385747597005067600090494818900877174253009163420300267135967257394570683498797206269265522625104984321148492146247825288425091058316241584728898533554340976449255448461164411789115139518033081289984553533838767235290934052315538315817464820339891034956514657611731999671367974688923398068824602501008922988811561302782212377656131022602953308053284389811876789285384879189843591067124790510224323397470399898357079069732402992051736647560940562879510846789495625391732039325151441211012163933363774094957583759635731923481130042154662781009884630919256157058179602854169244554804621393724562682302347033427707845205430500303793330586537757030689480849964937613078569650594177559701638988732082161988807025425813295082428543989578251520103356710842952331896020939384437597365609590496557795898125932796850339522667703836631710355522210245341819332936037268081873648215846591497327934966744637966013858310797314005711303460480582981222372660759320178663422126522419413305917488854650318330531800336453770836678779525809114615043542509071599303059696182511582883526494030197573823433472581437693108418377775774440792415741411848526367927607925156727655793958986110433924225782438452398123056482145131722241266914469303123345151710110258630704526018384285588965624594892328515574024902022411065275245328005179678359128038349391684908291492385962431094155774882236823520525518356057928395587995980783855564698764557606846908927905812276765121734787127587413980729266419374083531271035861906208623695183641632046388586688744229498852794042810678446327090987578628775297975378417455514830896631980247068194617526143790538789127560894399737923003670152097457898520527633411534895456413798572748364439479588481003875429800959505429544271628465507145475837849424081339839545756053796373227406569027055450137767330556557517316742294850380580929347975950284540725512063758531814891545706656149220525399227852337188527943526061705898927007328867860160043411632698907584174107242443595919989929163423608652766914639416550817575898225979436111516578928530769912427392943414086711714003769007945370090675737096269022874891826511840624266893654723608303400508556303637084741289139316517180847298454504783104087736717367818104787000055809459499919662807152901264214089689012890833114405423051793356594426892106049009284416036066376926035254426159035867697978490862953503452103465953923669222075685096938623015968816338861365808959721114024276297875187345086478585476851769403497286272291282349280925202127977141510374640421783015942938402693415723149383674066757445296185724357130307498916692789600722432315729747580226287388196301548567992398673043552030465185914438134964436646022838392172887078682724068888736252564705237675606816471154687015218367178267671261110922500551582928597053128983660139197891552114998374784058780512449945048477135336717024286514631275714324395035604233613960783041693308877812559168025868396150586829137433393675446380409506859557077044921201652743791567280646643192135291472728073714053340609200388234823574909875050234579857807249291676237318915332276455834652615585690516055686427237018018238654487298676485233780353685373959599364347194803320909992793076969954078326208289264415020292709474025259654452938970268932941553454705127982967762002288013907950670025003724847233080795859682811329098792930233196854012153541333430517548791862175483199686699084658137989890637101571997329025140297372346780690650782131134732271656435399972580791690936663230835331185164288948597282216525072968295613559176443905685625083954916430884888937454667905363751572205679507543298253112860460576761967358641864774979506933607762770125940701741146701271669553000988192126861825829486632279772943488655314264748756238075347856256080715023996557295898658966356347472293774715170956086230333306768906733364941192909913370755907871112408100857197871064517314600713544250302892975074310450193388963073969576510291186878315237276917403151646172028885868879825774439470642431105179705798319560935234772486727775103671833637514041117299425237610164102296802887808532414575825603881556670740591331935537847848054845707939097219770773190655030371645137180148394831458306816917777500333808884574487186938368056425547938260535499246725423802092709410518018578366998626320275620261340362058759911136665547621392162349940331250724640559432583675312389153187875748703883641374645628750903403117207284295937486925270888866192570688306391360384684428592586707148280014058394567562856149574976053544481579194262051332324849256055318066112738548212796676220077765145757731243615915833785586108266082652945789479360254514999623616204342573016834022980874285091570363717376462971710262620841071724125031610793978359735347203289092276388759711208724852183393157314918093983081142358632798801927366024194481692444117036918858242406475539367932488500533083538415334281826409871200208119187264861402246213483531052334703913385240672534021997183000008681420400533253505868958240072115356096552862031357959748862565557208729351788228851197938030252321886992595708532600329073686048222047357923017859094518394953461569849165497648245086623697466125587941411789932693185931179234268008175715208252945145328726173546308983016521970879932633949938214772478841172581274260053642782259398064510216074052761602549888611012248699999752774725014034920938023356440385363937701002399285839285954221454884462452728764105493618157696323404352616579662135888141379125123614672216174624502158653951445350728176534609770983074870576961565243483909265637487847622515522981470671438776255951041911674790382295093785637728611338744254593613664326941347069362646185893476288676715016487986689965686645929872512523725186442563984929961118441167455656454094501927839127457183376724153785188172268290558983370972831504351481175887247888854219426437427165809198410848202500116379768496596235132885231994673643281452793787375006904728515534426979421003028183954340849876889343349461917570585265758292779879612443382094661223868629688200042707270844691652669746158892932809736409737095298340950001621769421153620586665382109094613989611548327354240669184132519512757007254981093668344524397048471934818094624604449773373988838330770523136145438732941143334797438543165775752336621710270915822377464032068728469232852108985409444921809321124486487930408724806849053314139526520629456855795473747575358476972283511501812793380422802670212817139784970012225998810554653251428237478825052657778785368793927457498522696177579090225476087912544819907514547797706231290232591710763827541073423208846154059426900104601486640112187654312352547474250101249757123100364872041531665156254853892992160899310326221650594536437087458108553352767547405983470797860408927670258989293806443096486977560694332737864112865377542553021604172749492283225405695831112098841647432699169028444842567323047807415270047351076557198029570294577753543567512734005693075003265083838305841619063784589972773495217766585957765504426472554848237191758836781051526225358358088789277748595237907821872637400253152964147639127429919969575895853028649653718612314136244620457607148337185252636654431258768970995248281095659026021080509926765731046196968328421484074615984780570180987931676509664165231304328971305790397531180620418857798063448212899521779329687064208255522080469589868979933414560168167599273968706925294429163820352057200854856311831604264683455886022196412938099995850188755027993937219087141546507730249719291144955269680474451336821711924324531919359388940171548477916277346398035650767107950334785638812070876614117234385726733194455763188819957006775132801026264349957497376417761398354056581690673948657021385553256611479620609336408608748171459146052247649082729324750880574256139513726272397501360586071748282212470683066139364706146085398647064393150757609839743770312286176546659662331053950108517706476417551227072156809165553329431560293031613597269812309145634177389965902865208949062557216045907062086942913844089379137374295963554052292623391530606413130181066016704975851947245444565787096661244228850540545565962485955835549387187087300923946205924370716198775233001570126505953683909549878624039543931060156299425682921996888497131464134894979613482781713564233260477436147183982941411704513398762163416935706684598875172222125497466261103807255086396689098630606833653912474776049659508665884169045748684266454819013242386708084962824865832104318558176764376728834090068513397895368574758498799120391267133408944522759218951565221521513210995034594421416723275302674794930981673151130952165371919815472865654074306428058463410103247143994631386598707059345796825771548776913609617625896432764349700097290165305852096708307301794053358104578333610830244298611843534571136911283823456339717994160176767472314373888992006531686937563496121744277458940787530310465867728529475623535764348392753604225632674208195163259116427938603805455999699513961554461844014697101407148463954024922344532254510633733765809445135448693569414212029757972128349668943427916477997747513606249058358503450707131857748379544402269595519909224706304276093172872200537952084972518965405418202748779062870165097464293727548726183051225734575009449910638330815868379213600001507140831536834478164683649845165833307767565674747986179600078846448713594283568697675907646905859231579491964615634524589670604732466229222919603242313292563046864614904204850389349011053864789940022939533502939896060912533331769278702895457989670693979408323156837261055690612997966197684036120609361662865372116697334132273673906327025045789988936807384190410125937259490163493018910140243148597397300870796498462705046658606609196099490218888319125962967167255776690534611187801678001516642909389610888420716453816216896143350630874020982287471388955002515391403940355686079897065056025482424297455593932328107822507135814203658905868206094812373640027840638309762684756889455495042316738386779382324165081868348128988642405975011849699505491957154118612113794202626663285024373315319340303887740190846390141021245352533788814623513616775760166662029934149819441807910693277441094386253293779617376608490062211893655626643737685438398583506211697576726238845802773304387950082191542867758581676503943573340535645474049353760000407734304153990390596517764258425825188571085024897437390229022047625349347227617028661031270199561054743673917385141832846678493768834416329247917102785326991106453761114077846497614209932415909071628345676542090532237215413038941370087035515296382731812030378010585535086071649609719426940845800924935629787168588761719051271539480706866555399730556129307932960967903286228831408464507981957447441135548517932118574334656957087452852010462630814100303434806945856225379262323118766341118531673316479981794275083113274773144229475733341150251350105994659348966186935617259977855260213276488036852267507950527906129714556497318236047495474183620425204743791009467459614605702884606325156728796500359246086131254186261164471439754677171184282962080652319556473113841579627354358662030768694548503742772105971104935700675818113154199675446296450993004810711598384007905678746402272908347539412667175308012003249762174489714964182146196139254335912856534855047671148868125932807767140877570011268767319935489106882751026336953641372403975905287068068357460199846667549183821523383867290583433899992512316113196436769258341373281566941528397464900457948472475551076364250083829856583093848184002718520773691158449262329798623625672893744070239195926315067769312382602386117292998039641528757286372100999636535410052739966684913910721426258881299492739847464709531754498870936464180647593576772105529227015679408963955391773430787449132462444870416831369028757180114507714796162994097965229479302289830423553543716672870126624380880223356408502505143762628036399032926466325857050663164377152141414403943236334735527143506944798189245976603211630402641344134938124345783101236641269103145436347952919441814850100509219362821869731779289255989811604345778187634238843058542531469845431287224411307273392223621081968609257076170627022531472866774091004595966771809002112226492131059123012395524401409130840886670952240754744040925459925604056797840654153629140222818598801383922918605274000318424763402207169830525208785751925647991658129359404722199746001370619603484469142253273859219625911688429219510163347371412428204131078312521537478817458124851251515711943623327432535873015713099131245154022050387805694383360231864093280728559813072595114391476251414115105612422451666687657092553577294780851385205794777472895867018664406578519169576298952468056846022485748320514553729720498212440421480873900856929671959691102430761127807686245000707608312798056852492089919767825191374378449546352484605833088806076405030480931149734439682125575762317567666979468591295875988586067696159719857977012000728202121929479857129972620929856056215932246451176617886656875330774282800029248055374297752918631260493746554486424332439284100056770869620094580423304473840685985581284594443639554676356318496055972931510681902227900580963846865629739092901397278444088927625316060174512175323223596635464271215173272470671248179423156959375257460466704853972465899315384147716110208523133164943987440625575595492428656875492227643908667291615446091692136551103983239653252343306479387415778630192835732790146099143006281737046525093352399015303383321692925906524022989362661934934893087255451983137663385929175331729125843346068911867217068724441133445254947536417841146062945461284275305055817037740131310533989388506599635210452837170380728016248764217615139980501987157563034367072691691867678975938399518183349032929245084416192511702589737574025960331792763101179369976249933839955222449203360488829250561492169915187848488352133813546638697905094082384330430569330512003020647542689729607290696243179532854763978573917858805045393624642972923360848076464315409283868883320325181128137358575731841141336008752312806644474106496980557463055854099894986305231188211555339353873474859210860811883954686833200785043773828719234880089011219860726776993151083387794578137395681992539441415760329355114696919645775667943373956563802927556108812181703343817991804419880954865313823623570906258259265422441759953837318213034541327203372512738785946215001441356937759068798506381108694952679046778428273913924471192363055341510942038825589663447480808724655071017546032580977079018084887371897833974585252309886483168892236623633608092596337194123642118767290238899969256530527774648681422754675066328873159301002584396609569931058707985911686755667921238706151677775599112727618155981372541400252770292161470093449899040582450160719540801798267833896248458257386661235555820094035181615391761210013201514726473398687702988540711314784415165611428846171186637951395390891117034903880904431720414247760568608718732099545013844700195512716586103057440508506674426440432870120488737261054588680417421415997669666072700846154646968914214681270790891443136598927268018230457989292837525679242671529308219938088396371383513829070522149309715482259524692150100729698243243170519664517767537143736377320342569743131576000772623892414210137499372541143404389715727356510887798365848640063570041824399705061714730134749667151955395408259553267233412722946722544841979525059831529410484946189813179232868304615904364221349764413598991624459101117390543676323766540068612262410780850682191754510242369919751298112764223722587626595167233366997308721077654063984612628095308660767727788335809874243336664469650348594316005521524527997712177582985433405222421827352023000788741742986909060593726055574535997694748834330425514369877951498258979555471471679179256280254615994176472649283930178135358520213299646213938747267961063875819776797031840643761444011275485003135062367376011390169375223213941687411065543578255122263191931268346525305653636729089976675841286830649920084957985079983182091346628083695636066037450545884880342215224763872280437772130193642022540721179348301038539067052226148586329240960740410232077724076719941933074379640179602794056153878931849448126630366449121968395995577256888848142673074071943753676277439942891957816084235975599800499221331963429445575054759896726664056493790897484196999979041091077258480118239087748690929363578262805844943646643201591111788583189221740186158230041862774779416384040879702484050243758737396180957657045337736644273442109509795890120072753358191808885561143568919582389718466498906608432882696975472976640012650742095388451292577546310607805794211794872526731870221155240115023353967965646268261265950580652517569134311570831077085316420374735082185412178334105700498348994467090930982704046608564557330433460794737745422028410123383026449552186676993118922319708026240342939724565594509654832402685519200828628871520303354659907431906791218616073582898196966525998456604778518775808429756639898819669457076482982376537801104480821948155437127290215048975989063137371292255583369892469759469512991651977304441097603025933865967503861789285045686127016778503116240976611545659671005309403827243665514698654237796256523241731926775805216645038311385832267341949995349345120337143712480432048939517419279674721267235538144148773888196618786140378730422197912996933145702924928819274683027249464906462708102576284199865378072817247198862915997674760967619969724411318758319150139860728702466983143644338059259473062479337441341251136571463344958718041873895927283651566399974103378822097712516776022035778757024582984959206074049378958007318843966585507402776300209981212330317431954865007573871861678596258692353466612566475556221290368085370562079529863028726770479899129948247315439765882774092477401131025097126719351075534445791937038153896088592146045204382449776929635304864369657968170445773742984098401490015524185920225763799209514562906388633490960139199109586405500369356607585641315319321876321037287715734740655698042542884865790872622874467052541302114516191233926612269837143068069372911966464581836489226336100772377918339997017430543417955533184483409260176851822826983004715103405409442511575392958501699876176370980241379699359739749266799678182207496188278887259380709271558464276169417811881220200302671094255389412279451184215220316608763605717254717653908719286402432743783679493841306018010293776132037809573820743995961575544873893885557371106620024934078660192449829755932583844312687961875624098221969319592960825956785861903223457009436615657174601340583857458547175329588529281825817759522561517478065827212422379321448779760885689147606096962552209757366346677486479865181787246404619777044489131247734973344517305746239542337359222960147328171483828029463240234762743079984339852462367254581093247496881912487727444722339175429198418306569348786768102521573505235340699312163176953368250042299177577283034938626327090455389705101801231412822630217280536539965240071161749309645280824815456831200246564760050822816625645542588403272321490829675724757625647871214354828007358192276642363644215705569427172509411255268460853667192680030317256784839410489318068416465182240942048540852410541217333875786142554221718480415364655788011685119304907227596780431736806065658868895700578140196902710099737077626282154405847658306017805953270109084844656006538579504497347913062844950298475000624593807802461474756795710272554983332986726960357883251490393027965436828475426738514693704368355847677371754658305835016249293745897050037221134917240997088909303788365952398631981876236644550631934490837043384599324575218420827853341996953468112512290998910118508058368480827356199281183796552701523657377371446229296280244640150059410145358044187067324603150240125465454234753087806328592983373800684836106154412538999593333228854663886752328160947785420006181311555492640126870627683085911270632567566497196217597031936106175430494380399397562226085820505775713724700574684184167622487152859545443101197819795282808320649488598214038736767155774993602947662700842189117387653195197540283583964939466643483144060347433139103754353194400032717800847588118269417755837748228980196044698447155555117459966114975618957297589531025256385383269313611124856847933555094203423705036773609747629993223579136836610176320809719185162886512375707520534211544776451787724843527710604160498774134907335081487782003185736113572477287273744594987453278838570107312049403459439616154956361167766689611225297033007579356561918642412039862042351499070203677171670734362913240284877602140382523447498261326523074018672548942152936448612864238942281016971485054083182444884976658516623119241783443840038637599005534528095550906452163712011107451803681156238326947607516621169160279696632354667483401665185867506739715420044678661582075163126210973417270035270089390813785188256788009896927832207269458165177032304235310530784973279833668754721580617285332296853016369569755078213605463806413020171833205086537515537769876291163718353935785176806153654957246192843306977583721064090209213860670755873366278284731146694356112836128641079559004002254226391096015315769678791564593127027040191861755574863458714796214947656827928905520446631270416171257356949630324053218775734208208707352745316336877599327376544289193840357338298059982731531763806362388039036943446245715340183027028876700878867894823447500679379710276539314405617382778779321523857121184099569639200088330647260127461551321017947540976845085131459220252106062585817680360205815576561317097853802123894027473537649740201592660227253215208665718652180787253535336286901109870316077485038505340620733287609911909430046232777894658232541648130822984956203442357546402364028902835744049322385506630401146466094678939311181933556612117212340831579192683816764954080291717396015179907637927910740209454544484620020940494346812081667152503688664841117360723331430178613426704792119994507463339597961582912180485480427787059649318174139867894312835107494956982841566936634012403433014400369205326407188918321370081099323545741325379566548061912035632904341342440721674079655447540473323435578115174074131502634988528157016557725096611137016379029069280234146796417873494952890751552254108819448087621708114157879380263897971591995437007746271250326994748281459258176566744840254790660592706521431510252040343585709371016332664944544208861766545368966176070203858185718643945512771717771126462340210989694435330859791230224696729456049444931874797448190666205901990022773404404706047728240264908678114538893485430998492202341475001496340867000102451568921661514895833260753351284845810421917704132621965694459985561708757260613076031848510256878761145520628764096546633297292384189015486017225838038530256874999727328228659162868042462479908473591292317039978456135788051455667270609003714659004903753967026136449225389317747603027189029302132331861294450438751914341403678317971211857993844185767072285430775832763642839893380857130344402584216425478945551275452726126911475240741718933286365449542099392887805340423732916925563402550277391090990103009461856160325380398722525911627296282840653118147186379977651147003004205539455596619849658743884272497840142651556565891989990461482146200621382086487537906686054784810283472305969486972227445556306386799314270110498027199184723998729601880411544050013217072840518216235341741374985145882067905276374370402673456734419726980909551966936168898349099056013118191121669810763314733966849637019800989313656361555185062255122377836082600961396515335778430176046699524720868833915050187410335831225073138858115341320132750023368696463905258851239041884097980873321521667363966112295621481408196853484869516414820512046011270838609083474411926408190568208549221067938421774161653615323597313042778630927402652268090835786660162239323289672000272357397078335324838002819040365220031129351037551759080295018273443031629583752950503738576601850772459109048104176768424112047192424736335331559053514403989988198828038316150468369041590506743237198881439490990030240735206878626139362142417230532781787915881776277722153041401636719952556819157696240542406864724208535810222516307163089711771203371196209408914205198046260899386239116456455457041602201119470180778257068785260163599007012990353761767155146638357128519510165004725445841030496799579251099536222003593901371467769185589595002725238963765758206079159820725918141285600220341774426702496450546625703295965504401187597944659370559186404989609091874701909475667882765007167965653676963691202996518925155746368063481096067292420425261038013355758512927783312668254145822816733163512972521845022239900331411788575956036510565538571221792912687558750223825193159727789498447242148213801191092265973144008959510769553496881300346540648892630543907558255569692080249277232393576544142840671688772080932082248104776503665430415477754625605348357393842590741880647681972143665827680764068510718477849991582953777986711171695766697217808110207238817277601528527950957344829963831495080189197760612946845449856499347874313338620722524536678587578640943391269052793901069399243717512752333064216609652213903325489775039903398475644597709920058726094783637578873701398964933403889130052172662112664401234863706889612729194212845729398120745400974463238492678986998418032578216697398787535163529793425342885951337963484155201280552448143601303757629729684627153906628606043580031631193433939803339573099952336099285665881951625052558634519821807530768463602571648342689992760592206538095196249229699119943682758736270234509842377102571108996012979287131700312563871231325075274852011646217490324852815025726431287919572468646158313215648871234108776222986538930427428871446626382454867889211068707877775408428012171238878085831245950864622774120168959961998123530398650228838904398249180627509826819313234992264543915341308100466237004980890221896048809692789081359916139959517430264213027631518704865699292986036419085506724686177764551089893138300697646969103140434157679730805317656450112106515079084201070585410771522755545674286990145811882326081080678376861876489292037498590349005040506420431233457294185846778963493309434908671245607034570853240131342624221479924522786967966103824972808232170895592388859214778488374212741930002067933743362767880728810477077119033587641518790511495060175189928575780864102942829302110986853038938459567150649801501668799480737649562384047579012796413756625822706258097659366226727433966511936639420219260351415291643776848261239190898147746596653543396595152191966616115038519128344514775474142407978701620667842297659854065695349802198532410421433483049048371072411757440843535597032577419905666426369192948470795174689331890487275247258551972462984251818492509457688950866483757092725893795589823008161311098175326042954071743096167673298668602690770895605762680440311035369330458123837275462359390561724691378197755065609785033582857072007701141601177337816352245147897785293177666195484377405498856490877343883528444680135791500601138866781466503888278797427855163730188734791811195402648644580204431685125360518084497709015084517301345184102133945561277761345478109076714415077208679412694811002996009045698534282249826076295298121954254880799044667107932322012613410362628199761328638943684960476257578460880248555465296183749864614238115184932252646335063145918908892029363391116259561730050280189336693719614036150283822831295121566372424083647926301224013469534507191378842365672998458037988284705523247430109086171516853569664243048426768372818105951332933032002571347281348303334723703329413757471396010966832040041755756929038311499288609571953066505515809870091192057458137949876697904871019338591642196454761994431828793458752064983000730626576001880582238095101890974748009257809768228864902679754952834096830200133505496834855471483353928759078804516147795650144273739118227073635602368966430847645095812424952133075680901876442136604535424610998986770368942499861456071776330299571203812448830421380199456390473293883095341791283050030274160825094716948352970672884969005552393081042909766299316836578034295514839619828479001034020412294211283009894482309728172371850539251431896243098468366473871914976035366333465012184394265130940003582266194322688798930585043955287733418224223472585608451297141809176214237448333963815947993844471268251391803020662787499781161588870522335991061095640574740106204992016574638662240566006498472528543699474072710731351611293538565548002868068239902969530929644008156691475096089448896431070179429062230650771765879353784634489177574459678666030434820106332049307427965582910342688841457994771583289454422433693166441206170170133045532866478447723388056025224356405876687807093963291215680727857413624117237348206557871982147167301497585558389786326903083957129969080838116073904993132495583849110631154612113325371273152946450251636563392945398091162518329749301443636853096213765052320600290184511915405713838143631698577151398538311297037490823002109492091272565463969918989139231074752779217876070742174468274764239638534505536557016941056861770974829818426722723731062754256850473608793445382032019934769715183206377236991012171582260130652503678745238044352071648011001819945926391583411469491654139404363837535293455883163618467714225292276184322426752898417972018637810833353584252314975820292983913900847239281164942920820730338765292329659419343724647385055217200412366678827741212066421296562905213962113647998213422115810854145170153429184866029008041485189713209393003169413078410441071871063812829663754605769311812236085642098445792403036541552975877598524657171278753011962481821941504815159497188794900452751001657724773506918530244842278337202732627292021359333157790239768279515807898916247814746516502220154435767018389458322479560771089867107237037229017405960851460730851460740033914340542525125606747307452678254474256862752228729150577322375589363115869543128075290506704491466476349469652314744886166752579172516911557938831117073400794560384165637203740088018127689421656055799482955897820372014021106108125446962790274863005676359002633511380933832611441179675141532963278960369480282110940563109319375053885613442720321184856187580919392711689606682774327938095978403984043065918560169760064595648552387896228510920932294879148215791264273880365414470361779937075715272428260925795826929183818797153250852171200347423907925488376662796441827566921911502921527788691629551709039720898293471668668427642690731500997155798038928526243279660903133475043827916350500010298960958497605491464186135208492775393268071047223972874272733012417074121982864331810464433959850120343953480376546236055126596708642524109302397915140619033932446282629272734584964582878912064118259979777352373817489197856644550712653730317677569738497875292232651272157523612069558528323507023977351012566635792187537988140410886684588565964797188270901668934759149505799807326741444554690218882561265996350827580277374403393204757710049904346792781909911008127774773896965959315970731132031601405035832671386311289405178309844604387008753568851758435755918318004105838750693264037763489431782118365171374640868158659745135212799834422516423165433006610159900153397585405054218901693944463378873009602398221934112710232314379308974758605991519088653618831877080746111222783859676560431558998867548669289979329094808333104960672317598184720925533987899703329625142720823418873502456801932646638097834770798793611856041594025024355931366399629335020351680255398255769148150253933104230856660684780403718926810498753922088280819474188623868832649513424744310807526380859029502358039222509153340467235550849074653222270662264218721980475784983735727041764238030544156898027879620966795741375998709140726142816367113038061190269968750115437527285342744109602822925773425852381300925157305692836708472904309599931980790620634023858000517374253574014089307952394462209916926010226542606099886332084523593502322228806238430375577418293056203769940500384950119530235549819893389898317748103075473976927010845015608037521945912127790207761944774023032794914608144294498619515309934617523941383522030521740993184363079135246821484277618518563016638119353971898330977936228930116737807435576820798712932408001857499915012471299980012489234603899972382311115203861091080104742169637929301548893348555032302325017112254199008250227391561229211751670826018597881633705321843860687949124581799446767274713116529224620411013863149457858947689949229408734398915463015985071420933609923446891344389269143530380920190207200466889329745163009319849523324383699634408851841642810090144908347802229072147850068006397824410361843422268351631106114481361299353590824232191646945484991310727597823655050984885776767716530753727995289237656142539058680797087962444463659347867553949571377378318439345087255604475391842472913221228044917539971254051400958004159860291907865237735237598866531443473266231157600962915766914283427430346779106052507331360064613915303731088078527965910468344929162662827536582294687535144367321601143530969745073551668867689425327866157106371267711036417177316576528386390319603188461188725183643121960798249319366852186879370962534362520414540993845066821693723027600374019560700881431398871952869957959908226455506778859711083113272865849837224553379806967320238308986740190443524940555145359143769415882670265888928565453573551120353604992944407166291541517996507632808057200658708836498388699347965092828819135112490268611345950834142966702157111579320223780200500681028522790919477651338523584232500019695431435901775837708121179789126397971326486438241283388071706783828281481263664196803757534255887329982282057741086714690774394876637984575523593462987434918924123121114683491466234498952938687294788308073714655253022803740366329702710561489910489749011102860654160531780491484822452109002814322941464152408456003614453485163974498543873749842593290330398155695150603140114169830229684926755967451746967439090327601901879819136935572681271088481189938853327784540665567303407403304778297229962439131055118334973942102869940337622938335387288168514573587178443770193043501188676693479925436695940393824828288986502450443012392363897518846113513950648416291102209551103561605744150192540147868822129879498873396345714149727938222631504154236308607717223840761399998636748808277285034851539731862738781512262697081686956177710742138793646522345708460619276412852292879958814243590313252132858825766764792941728141323009050795517855823092411289043786062553335136433491966652189163218848251883046956726458853750917037289831462628624452581911607506652066477935871831556480202429330268396042867736015938487420883502771553084824879444203268130878824898643973985592398365243304166303109855160396935566707249229091514852853501184172197877640887664653911409206315575551827975649154926789021115941849061444511407355691259566741619695442834924711500801125190560662586334306489820148180524328151840043256344117325949173289870525274432267009795450616245223484898882170656280059358766133899105431096912258396426531851904418317273181305894373748348806441516615507846408029152970439878625769082524883057560542257283295359676804871950137665535512711359441838018225120630679243322275231933111004652134035579345953494621442000717244123438091486881557928985351477235478869688575484864724177985920757889266841554587606321758190635222108381351257663618334001699100309447789032679798980116868837847640469396044016547463169520177171522135509099888032673706739486596248325625153910812985619218840453817542423382045845898705767262222414936357555744076649413213091068102028060834744463387441508552993627505686895598210560928796230216392434372269496243059160360373062580656488058483933544892100947276696444569724576902399901917857017623712903855655176755723900715544125948901174305035589153292184447321360025531741231872203253738033361540931048214226466272271554900980360693285795093341367203458922810153842615000497061969304401808136705251381425373320234346918825544031324813325857577537169510781453284011956298063275348692398900024069555716672460463664942630315353276098682479428135808030162117644650584181523733591545367029182588525637876700524375917511360434701229524852646734067081006326767332514449754648793744667973333690841014942703770925666463445525871998021371129107839721582443756097649559595528623130512986711612029980335140002921199980835147679622523037855625572955542672497072321359509081951703477630304812796182910994474874270904024163848208407862812610209782504370448265997005188020948567686851382999491742965656235026915811088219992411866716578638918344085746348942510052707371145039772968480924207250408423277759331515043049885189879933115381200375679526757172662203641421012891831818238919132539927320080131443567274123183741246855048587713169388005582692757066393937601551833772744764116590288167141255309524170158807143792208749129575725027302277100547631945849780745110177928445750783815934983871565980861823307371617010463236144327098923835031264213772320200638801349301886456455252796521509972477353961781281356536923548928774861609467765741520199901307430216523179407735162386928548522585651181009463775079957864613969214762963512438519991370128322436603009865418007732153735057355493532117840058075218032258202452173870959983415976892204658620041650664324823439680256379473821485606423318639013905598192683751263477976552126447221787721935850232623271332388990467345409821957214074930515512735561731681965222343530240898764247834599142136328530628172523886342988847895123764356850972844632136919712757062497656382822519902124218117026770619489146280712382356227186494924452905151263542445215003558431325767194514619039374251638699187567912336612850071410663758390589652340768784446282998399053781105815531033292876788923632188588741688428485028506689230455242534802562597170115411733179708298543380944725871890598260637817205895492928295412582179515512587961550860988636912019504328596751911040460804967639408828293270695835103565494282282779412177747272492252694940192595863732298112981293992866090237367017301960884727037994408986987431410325347276541414428164944367995405200639241939499085882983366874170590286817442336255529779779332050823006282383739916394063339304603843837469995137790254990720515871721236671606574716658583132133086528502247899918649837628696167907280353059479539615354413074421134614915571460528771638085890404257402054919498797009222705882019553387188698541463751275187410514089955770812355097884666017995336679039464089566903378994640019458684612500089280731257479032134032384377474213281243350304289951828570549864827059305131454200925283901757732364036420659038738349258019227038323917224348833829880692782052601028732674698730898324034317208516020481129321590535762908762978105086745019200986952089753203469063539756298117209360109636573805801329578166451969825371890458713951348803932328038770579626930209716147500379559768960517945742138282338687810824141969738643215501229054455632041694823389762877696679835964364407771214584938857061391603565191041386726616611041269000589675464755302427796899230223363320959690105530574483867609365028652707651252922400104878355859996037471317983735458706510610823289788089348391966479333498133326459398597015207487913223376470757778849972451949585805274393554571007746855272839321137320358067422478688550846932299004719397966025512437731966820286831350979181351706672375632246286428425131389208843277608428873718338882415952079319471955439236409995570687039335609101885271616197011282993451768868628217726814639657231297068939013477557930794257818814367346248835561658136296706048406214660277572596246966631465448296907567860365315474508262638388167956932409429856703107443379972091407580685019579325538717838829393262642509566324064020120656894630266124700770327346070128889391731137610313887574262782678856703169244614327862356498360196335632961911906073459313694055974215149611639587330910192998700953420957178242465323069636764925234471758321174622989179647326283530251309875291566866319103264953881329689686539081757514475630758866497365258067174850887211830011151291531994512620290304367893840280027283961195848263450902936100735890064181246238383454029819827486245658527741366462273706210345679001096757823916145493730633486514619976559670539952560192798781143478608945126045161560247078727965814516019790517082514726263540965431395143104235265672891676590710771508731204732868859481241051273540142836109829776823575351143393488539042038744832191190399509298200200427827517615131030464696596817137681694918680686307343387477463811991923610539342390114730775061454690935197469024430898421334738159422158796698215800336499443182121017004924709382289734812417571570599230624049798544132523450267621298694147592171002743895193520218752877147634091229925262643072874281267515351495943022972481929525990520567859702840593174470487296886555295813610589663632491527355768358328037890468348645026974541379883958036638873336754824431007432397809977844148163087843934900876800748912083444538262102063087815957337699984701472872118108810228602245185283025467440615565867626560113239147414312669499164563047728107789546421101185566749218817495684822583169333518330113111469032614108084687889752581969532592395389807168873860794614991483850581408670011470405219050912100816485631726492340978240182047762909445780924132761272778399498040778872473506683468780661884937689506355659914823837413125230005665833488087887459837690882039616210480789192909696825269995717971442480540679827230445247545664299709902831159958198659107118253542927695718828289136682826172012871659641387826883967566848670350062105622771117309082523409129184672952513873414314879518465777535545965640469358204572338421515280837091716979822871587410603921579733238978428294658717190237492894217061411166368095816430312457954641796047696698671163231478555188225271353327158748444538051208780743567073076284018287244927486541372364908160569755655012694660107815827937286681698174833207336482462101000830786556775051024994526189444388949784208448789263063204553514801895935869363992383989406173882479880653424287989414095542098517358152545181559439970738101572737587800988570375311678205688648680227781698511359920393342368602194217077987224138866827390528149800178323831085762689678324425672021431519178264182200583238902636081203942205060894511551481804177787789222908703687060876277466961585716766955314484141684824137092430501086410032487039631179140588043820349183597988306638479609351071282213843958039701492171961369913161288013166753663496144913637859401743134107907610654489367132946996807499656656599898091488466429819080721945583417988236937090739108225392393062261489084134436080840720518268412642509040555742360729355835625848737047269860249244364388551330361909208026984560987562417902706948432244862685514671565461492093919143919053551764073888717298482503157050204894947667799790997054370075711167571965392377305545541267881448530485576327316545638850251558441677380956506003653825945417077734125101083185007607216336547648167753020070017812771976572578406885418591366578733402222087362234692717006780045341620081209269449582022533735592055566286320096314591698173753152376990194100950351636437257497342576761831086050566111334371369545508083355108245217077132574431993497828777291862267149766160895241740477517658803877728617426200106240824442503373759348199715188806991850305508603866285414027259359618764176566015716202461535928531519959040481156785633417278408056149844118177357771723398548837597374537277956403125900843426092487698796522060038337247887826165659144266179262555277352543516648237934508331165708835923620660416834536710120934150047437066458988839919762687712176752052071615733567992298735745271607552560634125776368559949323556847665053343983364344017536924019924953363739739238069588133531881971738198790038084585400467150522565657190331026415972869044363318532494272747528309884251085020135129487797283129134955563999678153473087452605987510003370664648106970436756398307572445339691113938555442503402392503327111216467177628706511223433445131106207814930890916948474354110085947658137224037282876038002659784413833389966577536923219054194487586466488333563192207882534286607689755823052213253295038655602260206245019195932581511924053740148306658381660007502088103859719007455989504719959199688624022370098422312719045186444409865275023964554005668838538717065898768804003314276202161660046224028387532287371932183495683870392161759037365870378153471816829742022679213303671025500984591417576415013224976427526131432372238480370427435898205721181497819521695199569245756604238555594095768532296356811714129923010565336886311497867725649796516449182969830568986524683593305067206675889416226568700667467776904271441407407083899922843790353433401508892003241926650362323244669618755782356765949289703039892460971792847279671179635232810965109318634296714118625363578420145586200055264801192874045013944656337876533765793547101280011474219921365866824528528111508213623110223008357783758967490875855732121363449132697912085514570012679352448945673722054455699512285589177061739666595473419768324183929949779893518655661392395637620592554704073179110460079159489342015792115216682284979586830850308247162884845980843861904163768272526909336856855856289209496882871182382284253742220731564764142023883556534059957155098647910496274784647695982079256752752523817212731874461106751727367876922278113521946129553046544568866376613932015496403242677024113702557176966331314147987485587776500618859290011046256117564989663776508123836676848588740990604702514216539905089001224773729368797709008358854031734507314524778875715513689587166568204617292275500312562976359519099804433049284961948713352455291776329482555158528938714379794688992690982202241043608723690545824480760583146506598357051176798758398564322445659653883978109205195875342764775063451351516010462551498221171047952761615343110557963749140776915471353463793820041269080442364863786971977186045627612096907504533679778321149578445188327161016733537091551017261337211531718222584449797521370101138578637571451689356137993254141802348343764463090775371178936271395223758888053546215132871623645973263264907347831592214256522981332110839886681761244811429324667019349279362128113903770615097982189397786635282145306802636601957917864778592406373166404609594748780537183516636479348988987666237696848198444217677224553970128049583725021072927492939387973131406678287295060333215837051954555134559580766793841501015675975686252958121580240638304697765193789280889766309542660801742660015320726344274906735992742310303838750868035067715434816196011945289149779393629275877424026825087250867861042268464943204196583523126269010702154990296033292996301232633600451263041352326273880414261821194625589614621481435039460751686331526957987534688635444691745604868319767389445138829945557036685088140163712621878733925171719912903486247330030616110809517199128037875109656750515309543057816543612001057286232450989223261856167249904987263039871449899563722655849103318538528706932602214398792173480350260607423978357260262841204977689872606697216056186781177627110889378290482470837393327104739460689567266917947409066602057197685014597101862610053422678916740679281215392491794999736869194770543658492213600850826113772343257357748999974966646862817598168052132643323185326257913281797213986194315362492433782331970417923124428482401556647061001793796974614644146374302601552245425068094631293991374275048732866727982586867299443198602209367557048509628330586863924718085383401992271493546037920028110596922731474839317413158279281449660236514881785194857495553825296628928544731043051290037497795847010535612138963585979783563843508376293675486928928620240368560432703016464839699004614336963479730324643973070734682986410289833307847570341882410706035620203149358608059970451408371049339065903226775713383766446520046210773609514222234394009719536777497157521264473808103260290010601755376375128944487831496506015396649209812816691641154116603864162820868512153715153214857156214292641135932342944522061494326052424156385081488253318758287739308308804010244424563423000790436165703277576831077810348748196445416327841211340995222191183834928282446066124036343610419956841667820980995179848021972753544306012334145636345469242788630672534490435699019768229002915027854101953593077640850146595969678938040834130047173843319182696449824562625610966705547581485782742750019193569754957111384142422693098714406272048246690275881379348239911857637969395374639587394396487623780931201349507658703786059593409165316212857681214825804785454406246035103263544494708727689752143458592404626448840760903528766200661741406809885215190209363767226260020161569271514925279292394349516543698663713086930026764095282703301392011194910805801452168381447987191121101651038966639347644294217488530209627588356978458187712555634707328991076917472622496878857472945637780340822160873078379287453928647070833887097388343486242547268549170306104350397121188838883717630414838782139132715420672312090918592868266707905402847838283817741447030470208505487272794536539566016673307771609635441515829175785562910240044638709109708193681693498988612047942631648222702046703171197038018036995918515553202965800967151766641697119292810017264179310686249098174092167807485371050138732721386791335860998406326756264358734331459575843754458348743020246473182893191509531399304476755251362475007699917170769227569865440203971157295216524415243949578961214876911357489778045089471116757087942277589057192612834127539561429795036589370783075806514107777561799367094269009682519329846273724448226075063312376040420606226579946052871499533921839464313010431240308257310813796953297350045498149566912465440617157880219355317620442034091876473974808484269473458788157833944224841062653579407652982580157689712134774576649563414020536102013245160637027241229173708283482479962336172428178042863333628995072144881068134784700334909357851050055791579835819993369938919078855937748793733232958664282100941504401258466606480072304285879473433617844715837557777038860559075036286305241310189045089808273201875605975322005844531062715195151797915627527227043767426412955711690826312326213904859399816132522747866007053965338984171057025681929593018510365322348434549598391963963978694377834965846629747606802490458017300882193813476396868416807698014923192586339775664836658766341449684313675755085276361159748098060977872772548646110742819566443882553894931264585974451896568692713576345320909432329191978867732938460202578969805841117626179966691105227138049315719499674423610607909770844521160791730958013322940770157327942176561174570862409572226257756216973422007609062850978943389826657090737420761844003414883587867935941484469140233748571396535867719164856880187779313152688815798730851047366264786343110906690456958087359936984203292930473105135207914464795177332775083676753956676839616061970889225534382886380619501232395584709386211550324534716284280089565440502618212533568495474892176150960016427452889728008583009585851256754857409382824360839223059868177009284867087089233759573334609572824591006069547367637589907697151935364495153182711319305947038376957156335853646286719763212102734199006281137318510484082239543004279521820891870732618767379751936436517174301912452195515858500009346844946333624182436144932047775745597477555378697297134092758438472268259686440290961557507488828129226047905255290811586498455259865263108658908108333429828462548753847035395222688173374493973009500545365615950159792007238709765504153270035862269469905727293042835902296243908885108051130524544039295860312457874294960461704297433465088677880201834092008850508622553794435228220860393936015979872464486218369432094655014836167282864744529215023900350465025474205095208758331776442854033301324982044377525976301022559985254052064262014797526491538763352572261246322299425401564999072867591799210264837679564818210511981942484419347367550222573837425446264540435003932480789454843882402383118810519830206818112699408969214714890771002437785406859179848810611834587939157897895249692908610781397859074332968181062455107642173112411344549180617143863911787592142599221103830711534341946220753039091246803301590131711585744596259330507047146992128774225750352491247300516809574619340803690098665306427682050899387463066124105414727706527450174926198530936668420097640927264401805120954981682938808937497122584641013675775017614124475130061007819304334146150886394972752217829953090526808006416982226848990916372009352910786707508968220210057679139011958993547936147966490118973633913913313205426499116198180483289628289753922647917821422365197105987408479207378688202883242466848635521204047614912982323229562082971555082608683477031105441077568628021129950041065411357189639346904634901122309263060604042182459498319052990486730744557524997951142718195171955152705835743378103291659341873652263146220674706345842845399651075971947301094972440179034940858777305492854046376112477130066203606181027884362361905686143196371891218566867461723013385075724240221863237231884677638870871514824806589988743869018969188105608326353236325097305927688067015517447979578711864734294486782222327283145659403561910550214577101267118198359195842334626230015403354661004086838478651678746355548071322593010339689728010876004910813171044601248764966384996478816369073199410144642265705203336660454259587955735645758255989913676707596261438020709999021359743576311173178998246598954774727539908930916660076602289354987368069038577932318511124956639002415092781664589295148854065404134914328720165794986897904105228701818926750816980704736356505672608943381197062915816808570686772748517380550919166098979295284041105710359696589689392164011268666912435297697919770216999111917919330915629756075230278179532217657570757805303971553337690980388190758788053402995701759866362356685288568711509682294899423496177918051252176912980769024893098281498162078482723325907549812527479877629758856714150281873264822084592300202778975962066950289880903751469173922414516117373236200592007187904342522395961970093867373581684649255672874462143340123627592027406189067543553090046199181560387938495761334407892221131213360519009775848200591088345069898598900710313543335455985939449539371563738514871995547288709899149717099865557453853836551069022044327356186744969440165285395704884051240254579412034741082475211430180816864505545472865146750167338182485420122101067318391174219106191578149132451894984737554210074640981588148080441529285706966675981910332391394161327461225409630476607799272119063504015283381429860857115375951091902563852339670989019267330297376511293073930408685748144656547127559175287170625602759915606280336694799717492851254483362141732883428500742119480326308474629145253893994277300307292712023255999339377235791621398140017455345157743797480475322110474566604833908669116743717475516498246883918535792850567571648068128200502461922501710472380562791777837266274792976754992434515978036391744608355042366955632376802650451136477327897562884811940760408505567755991943371446602338768076639174677836959554402251435124179369485215755624623152708416544768840759556689327523153588773638905594837698239032837244939940462121537265072717682770519930261263405131011794567726862378396607960453607591241209531721152595832420153806805250232955589881435332100180103925283825522606049915298029921979730474601014363197517581404675923699267951297022734607258891098126627094340273549635776498338235346021638452173530259278145491893499432523197459482054571609811152118358604382822750828699680773295881798166798816122206210473150914650077749709268178173219543328141893516656996726225532614616155825535782109732372144964145480642933488349263623237066585170692721227734919668736486025620823071055594017028797753511001501377534421345095228061797401352597912504442374403414993911378695436717594279880109916044242737983961425357048885938793109457212210896976809962934383898946533879938039256618158927261191949463600570161259681100591611258952170802495102853387577387391736206659991983945787190558172543898319811563549208819017240260906367745022542257215862969858492618265798054044542648065647685507542781690635778537330490341010020654351867056444600725742134400515488322443212751616042045768161748978550753431521309002164921763708234250842664011858870617982739646039000999917005035984844419409722663445544972694315262674979686326591740585922201929913899021636081152865999127990330832979041019675382703602356812949575718885484894548158996585291438561018688318282911420215824256564181053366052274323637660487150746439067098331099699133590016813975078431973610058954801889885392179344211757813015033142709721072890609147458369856591655871557178376678251514002934802779132788176763692001078077462056619397346276643471889051860874673226026310507861595605302904019926611844062947913645387522710237174997978814236598299718228984672615519017800630305843092097332550049400749516444981963667922916742978495469168830542223043464213428675244222559641372465360223325390302373504799079182935783515823486160293041019152665254669244337251553484057476118623338697791688187418040456430685009237857679984252841803900703795219121105287144907740448447305583823126614546808675809266107652737139662505986058842096766123241311026389531044337797464061217352716694018695152095606004213552628736647005411465202229724881492060145209519524456770399537044535503653485278552428092818034649853737871747014352652298058296060927306933675655631006324873175639573317249612108013023375742486479611188230160646021485741857045057602062508705510448331091023977187691725324736549678171827025854350857367142221853651998749544081164385242434699010462148364878544087396317238699172718962961318810331380285352302555336324097432529001565243225736281451441244383626777366683707430940881228999636894964033609601404567411743997422481938680029682705752264460459386053511483734147614889206246189047467069789090057143083997368074249551489836877602067430976025302385160248393155036460992273763059303744137709617381881876567401272618836048343806155481844272351542582118994509016606721029528390109438423157798344064042870350640009811005401320711080959130779602920317634586270271971610758270635470047089862499178536299073124841734343925820225780366262856563681630197696865029545713691461902530239990617644082120258787033928985982321512528065922962250274449113784758074620765749858426735195398669264539438259824075869878634985312874271222289591065300333486285099943609000463597587330888815728549818628905514805605297650643656359790017306505433032521604999561455462921956739894294221776680482732924998137956301150098361091929782046497943628813994000527459715289509030100054171269086260155394417155221992825311474474981873477717912325792856412761423320184582332408738168401676701575055487031012678065977845914128728416998384970709569084567940938240591387442865660758671387961434286169542262748114431185088209621286156937703836971883820023063700713498532968527750054013461746606851863361900918302321160299987280019033678109413672064774223196340721090982647620151299682387635218864611643767359438930772411750695257343179960355133321618900538874997843467438416958807194642042097007347887647096113099686010434015934445935235869172887032789819230440908198699191401880347696667340632614407871650893223740342316729014874671565184161968444189201284380100261111893625781004540879938157021522255220097560232016110258318189273626253984112500771155957412633601726463838408338391081743264107181981000983241338014294509959661491899433665442414798610580433644469452579252297031560727387090773122804920793620595268688387367338260181022153996571200994288560820984131955384932961253054614206700057463297002973036345297243504134660518513701881996961580574846342556909738529757734083752457848077004116251536683670523148712162479419505685270335655036255811845516656251871898413738185082110376938963029453308271969146723933445544216678398808588796325857038619364113533668691823371745503620570385452761404154920548093410520825116469923732960840574633323953299604756439187838495643722882692418256684935711312036970744285798944146626982940440243259206320572796355344792051876443036101761681332994644787692841270547546815497241521589993879677697811344954642387919302619269069114422411720727505990735423451330236685145375692843166401712641598949681625833621178075801577044240340071039138183605355261034345650381555904925216199608790225487990994233691341995561918274311115484933907100130613624901334402947425324732595908672403212756278334909541553031037716359151319952120653042856605389565451960199378687488456466285550453440386486449442316436075465412730419250581233139666068439366350312151419668736085450898224960861536152135185867422179033657408130237353463407097386978621181028877530741344228160851611782763049954423922331086748980058886944241598901722090486189482891116186122984744762602126891286947788889954518037578591847578658179673263761151078170519556196548101019542192422972178827452141236839298899921219950966497915159963931990383064388257226032583988175352979753133822329054471424193123102189976107095163514615701988428768276143620002933888436709372618900225400066092744402902612288263222594251081272178085563674870351150405363598042671542627249119373000672370544791115233580684203719978420661156756575264133241754701291938096108082521095505952594169906901755205108025544351605683390495611020686685027310838914181397731589055033046765910807089076438722439692069253237185857137407988146813617107621592397623590111842319147940342320189183484327386225980183544366740558835878843434406745632492106509708038785993044801736734464967455835506186045488722914290849033980967328636798291623395457706051012461749608514471654615461907885805155958164090759310443514151280902721897394416296202952461167606841258264257193651118507940376209277559960160750430862638544003063119896846885686308249555660945255836944927285733125942873321540463742126298892446053447409375701781381164225129047052323576876115966715458698064807588495517812849777315521945432890630824963283038201178770224803107159407149929479646287778403261223363503521843096238878068016076275033032400057846129001927229528074731121536709910369635680345865582468045415180096308379878570200530599943053379024399721940135599199753770367911763892068510928853534535660536223793027534667971689088093696435534992754009484976866938576457247825720595436885913356878436322958885914827432834461777384041935303678052916192057300765644653984747702110276470448348261304824696716211523768334834584325017618158170074851708925030334616685163105146998036994032265082649351684103595458267507886500401023249093858146363030403390431799321984288913827900366638405342965892869411805422193442476607778427804860619390023267275360916943876367889939792717059629050552944288757089730699565961589308369298903721498598873130208198052252937274686985698597344905910404533118067231268074572792895756301224635836344553639050447585237554237187615473926385081725971346708158470906588378076076954234169975784264822846836142903357035020444827524140694542365117411608923879982138250984626146225973410078851847835469593563127239879771322422252803011466255273916077108566739116290181085988702023805629054379505977888333458504416094015610856963245373411978353194970957817838146997998546212957235706053417944238735984187577496522741666601382622235945860507728374126431540848140543257728770244553667498174585506257885908210145304103830793512012313398238220240402459010908232491281119259790960787362365853740245859143256938521334310573770657242082211585528865671223986262442803461661294045923415017933798657008692250925474656641407814925399627174327947173153351488674309306483952240324476504769363142588211809039201745398991620482072294764065698123610575879239990919018177845097477020110188152252103091781478416286814718410798560787558236030521274235114408079439492361843865383162611243353126248170586849267090366392700903847700590940711759919940268376417849924913303869210713650881499486600369399291375912673510198082032566045905047271326744222624729754819928188460937054909005165030475628049504608726327800139376062699838534615924810999663003870604378155518555809057082604004468642479634386279148978417226841985092138233192019567945601194862143024367423491231656852567185766693035222445978504956414644127170269890778951060560157319001159153366444945688912640167785896516187416026252108436232737684237870537166514396679127550270604592869622215804521639294660385732410599781310015225345997628310835183980464580563822726734367041635004304793627613291937708418892365372462926012236548997706033819654636153944102987865814120045353946081526322864440433875320336989593433144809809287702640335319111203560607137123721673008213168452407190890800839312430109058275366205250714407892400046592957567540982767924057991193144834596517056876810135614786510587168242701730027060674277547544360855967608029267358243870478095638293161230580613772722648590595883965498285372353997483225164681573333093528266518146082325131676879036057929793769564241938695812752681974985635735791432701882036328410601537685168629443895380935212921501316498984309123321630690896560539245414075818582575180680726125397744071852256811803697550537811370773387337254162155783077998136139260045023386230002151008937374440511356016500840233195593712624219950456755602709741548431478809472161063170533058463573348906519199385797581054784171265703298875365928734468959889440483105487611369342780128156154506685642168619083538667242888574463390992326484854028044806416749277777849148764094470905849921200556476345637967246843060334087897834548311337500937551924515426952910820739909096569074842467465608124738352469555852715638237837873809229105999301383972349140978518806314128545656657939971364546512347889814434677746499243839745549434085496821905785278963818138788227119084483682178560650748255496269336375767160500845041211965416447377864741704285085968173737266456286908636782844882796843252204640783476567993922910740340600104446165595352012130489753031674375325514726659179226807789348871526142047478527815890295833770781423805339726522282109906204407162586791301051040754177580204650906370435892416223810863510587141797106376921507923706585072705330049411670249556770485585344642183034999634212718033461765721855167733204373924151870245392790533847136034096921915297875369116167458793156701916598963504716256970398298744942846624043058237078435583645188721516875220895106919650335582848850755877436455291440466679541806420121936012578497709616052436055873973110660887953814704294276219136844641026828633233491316942380677424565587243892817132573715039225384756492202385260634057495498817409376729174618996968849447438651524275719897830014298261710637311990498692791332034645450655536681356804188030998231562843856749783821063023604370825544478727310760904551762920340740054148953214330356436489263966982869543250740446778739602305595028057577044913201487116514013284845059277883420600293486999398653002478363962003931282816554196431802299133964339082686517334134710295459862422981506341151656444023354062306961904085317346156234440780181033320752836539637765261812566820748618332072579455425916876140950445452093640519251980647111131336294915130057887952563463890526477075975505630759746682078699506933658864698844709636934628626432631603188453045840677621893487627957773955511659584758055591582395280627894515430821977708273587855190336548672574727324152789639268011569756601811312195510818027425182688701830180389618109921180153744002327350143685877514046791070145460488573142464014719775224666462607105289341672175785785636779644582837116532596048648271508804280594404787731236383174239526906834594065731387806683810312339023316603054832991693812305626822290368934010025515540824505014373550866004904055800819660402669900188425933575475612489461754006793226037128802038272137109163234987638727295971506986200947090147147290644536294569783641257229454059969961569491501111813000167352111782439735715911699933590110221549287088775621807813448580308090803784905680846251140651584164161184898802157153359622411872964143042583752654688245178871627111852855675185788757710687400641065699819078737785124843388331676884814126413142780235897131300087000675767794042295138975554820687805238933818065774406875754083626164591563831567023964188397025633678976831894705897441619015556852451103991414009509927129208134883930886827158614697856325749085951277057143708132412972416443979828107155858099653440555274506127196970022152852750026260994663235070196068838195951901226193050700694388679288512181466897164982880392810734594594425145277010747540254916659334123724959815980937243187631969395057615965132417466883973065710392645837240554209361932638188562342046798326174009784516587691906299693443355514657971495391544728561880426793101845300569098425794416290843384103428433532725964973455720173366663835480451370644775464060991040231071869446357671164669180601755239422468740024479499174422540969130039548177043432460898151589310558487603367914589312724342842108089055031800524862982788405484828313503010113585973009842828842997863357496580850860576164764862858808695787386760084901091315664532246992972551334457471493248260379039413448940273485594457425872470601169491336610499425951581859141224122118609224390871842226264598294595713238106953126247311569792267591408045916275165887647769095561800526400361629892974786278869935746393289302784772588779140937104208130677501595295149843409040045516916436091192498850805604725778735440045121225430496531246996116361338257485789744105164418849630515678538830100507097929289869842380138863012962031595870368449430322352491139939365393163858627014609668918828116332399102195797196969204636832594237014948003947673387285362996498893568324450873540537743535056534603854821711282110267394023251844475916954867263041823882795389764029081874637667579629571754465336447217119587583298900358344826738992210837789139324675349016026924418292221582676901997883241267535795172502456980077503864620969260120519151472935172454340159787782578948633095232403147098585944816459715895627133616577462176777316463008663487043363428522691330556214498260015460938111888903483407164835238911042307958495011689203436440079726231947645170871740607808939726247817029707528046791796933672001691962619084875385281663738558971614563515171808152347823688835776551044010587300283608210304593247647772813318945215708243356449665190961352080375994732457200118921484350736042151554335353511505936967574133121751406785606005018892183655729980057364314447349331423462170710354049148276581887984956710446898431493336486442082501219693670051669362012022244584070902690289188539815076991604896249084585412067748770020572606600360003832702446882175756575421243768003392041810525563044846052561078538148051806566323889286743358367912917370568982001658853509419994080634339731737391887572723857150206726452389973327405188617014289408521826221588525496390096927700530194916615694712704975386005257277282332044101308269299946316308380373460537870091206603957328263753446671166333815126793409997185985124972795687935717332809889885294553442439851672033776503291554274443264887721833908801545606871464178350272841555445717183503635712835847454111574555428957040813993606346829303983655757980411390280488285528087048760495723343296178018408911091607486062757193738604195400505798586462060402711393542063473135601897503674446238359084157510675716001029712794411831185773271596144844331631983914306355847293130204369394906591294520017820555753204606191958963286060879402715289803376680564748631163779961585544354732605706829422078651876340011686571921509101147262919274733200534397714725016253909335281085498101213048477307375064227340237742738404136781388025861879347027829132928424791829272336845424984048519425023124383448680541743849065766147523837599755837436827188648587604690823004022272305530541355960423066622373404408570028343499328893600522214204868623144814096262598162427254917103600131084413444878272787958879586554627615636950208307572376617162878077813845076335610226315400300149703247844980376207276134019395030611891268642213818207551534645325431944404939484911584337895170629409460158195267486146123817552410310988383689575998696620777190344371541325321997610755674766272585613341864762790172346868596609005178380177197643540542477995827599858740813707404862160150196584296196865300235108316434722715225684926675833958816075742314465697600267290450802141478044266999798181754460314505939286458690822484397176800839036601814822536718951306251367277556047336732610849574799475352625319018299248326414375880464950033718728433098790499803680893265155651458193963227733678302044298227887454288069494298071624407103742606029726511822396803856771495738107959533072467418335245655763594612710039807932253413639664489159692525504663444014337135821644881246409904687287163074679059997537228125978070189536836543648574888644831035675845563456444256543964585547020679321324974526847822710054126868557961907016693914562204696752255468413654384841268914265584105845135044638348889740566635269100296237601047179521529273264080935500504241399172682317437518371206698252191164679109390317058985937891279210843135287349978923746243942956587236492415673014226258839242367302332332756085209960393165689070391298929486883072824650983025008451103480848813462473893235424180022676959276002111060975015754828522239530447902134449505542204271152266378675745642741095246354424117081949591174233756386117264813839431334973368993945525192858448512788518627713778605542911015146750683907356611234508054578084624714320305590177341079301003439284598636287077900137744074170197369832791362678850047916448152010409660825591763840224509288007108192613977983238577747867997916929628678484312086981992708344321702189165553145725450483938962182308739647047916262550382686005430663054055348229825466904033844960345821361870865497056140175791636662586196624553270860317688835588252318167759745547558061988509192208110982446214526926037094891218640093459290193317557152507105158206073349745662213176430687292972174814710277402015125855006072072827657752807638040025218633371894350219814524819056556485173531211595503626184379346080052739416431151701013819395884190318203681373846017005322447710808977433909401438013989700228454097468223262761822220000923587399807261978256800947277068322845924884982934531396402939878411968907344588411382353608130433802770353956057988123995165356338163629008133976720829250879569462785170071147086142288384865805215593930042281142716429409244206010531251545152845688482680385023770514390120249964130853888360546892416262838329124215503402995876838983718271233097180345122673497705484103613990394113665945201912310315279381292586441039103989936532865831657468034996514131499845770963950002987876173624186695006791243263105627032147555717600603384534055337838817560941475709611340136645498272773613354278454612251066683815383469414691917815553367145480458707855333024642595096969149913979801856026485556744561854762057979999525740659452823975840558941991229599804031501046377577122795101216805224759775291566915962943246113082957559045771262545476622900836264154550337918516762181438429594080158802743644758386169938483215729312928421578638309216759643654267239420575094950807684245791472285679685692775892231956647090070052910672328409059881490452470276241219306230441324449373327049935981028345657803341186138419014009323983051579450186450465236765577232893720759049463959695398115738356303988996304279133296397873937918454993649074242840305122969651781840181008202726251255269598338200201732051626378655203168283562695005237842315442453660252635816785569199733994053377611601936542157147928731741761984518796524537570290329910462203555855980512475764232198841731828281674744821677575199272966037384877239864969879821282281216306316645460088073497989088745702395632343584703626010687091038348669366696167639706807151020724274881841995504156963095650191658185732910504727058708890699778111331140953950996238747055691651168475711091623008132316710459448999791416324672791918879480341368085320907258619205084862831383141755529295553359069728282392923456600085422496232243993061144896990156087591195532431941673621783415534968864918085335439377691771399885070440351782227214098577120483079833078600698789633078109115743710576612129247562689471478971583027475694823115198057149716305975770121796850513128610473408656178067011375118510117969270769436026082511412473317656872143685277906651400080108776549606897106726106967175996084903691835076644173376659355214046083326423358591910239274183634710260410882068031350094763594212742454403336523913372221393700274914231372395068444073592462894832154876033015869210144927808270706189613779082330587606066014420229999040579785455831431784105413607063116378461011013372029175822827268642955904865189166841838664652494511493849085978259770122551290364477243951591483173084951800106309650343509243630679055027252127077097600827700952087529190110006990441313539008514641163793769265414575205907556226903898936477498281989187329406118783320836925104094559546782652175911615886119765838200005727188158614917160453725457394345265893867757701711237565986852695983178760828654565716204778832471205400775265882961679924499263777024651043353187335912650444663698352687445100244941790884161108894024122383427678752507550399498726797839014912326379651668542278139770138196032824575262484861853591126638605613073994015174454697576497569304185424876828609536343463541936657585075663716977753289795834390912299860055429595692350309006552596106689188771154393960991964084021774961684836725505634469420888430015921389997858562004268262580275086103107617087273351169844582758962838987848568536866274928480728215796520114854666787860781401779618363512027862852045798514760342608493993822987536400545682148741868633234198130429549917416099743271744548199466518283262878362304295802908217642511718774160780299064430577468415408496593517485652051759252477967737225877442715883909071511492752225700519516477621338834220995156823016458971267205590413855452176477685492062701573298782399345736587949597990847657051207023521317854186813702775881062566426314043685313155925442496007240616522028384434220232729907459067492454996316302676030017696544306304289537515635262269110399067115015900933601949325766344030018675066039165804117002370244609118128531220299897368842314840612038597119062748801523078986225354032657862343407428395876926893959759729734723153162246236849971787094096776859532796825959208006036988208425619137684422422231309154677467588272833957610832848352287272596425874795625902947295639279575385827706416874042815517983823206436790114288371262305728617648519163484014929254993635098412914618245093814607007379330185176621159604129333547392167652500824237395056106993326103956200895372444492615751744189578100962691038025550546037844951242792282191826493618935884515901026709237027589920224136377733375099216629832453114501071698210895924854448183543908330026719788199319524798816495566653091883319488345761537805676272851266974874431162592271134397686410317366356382198968432036329365558902025450289223503591026822464050572236380622701350054429420598709328769459925532175938746011470086558931749498362404921507647746725195211616896923105758847113524329618183881161464907898283091444573244578184097527852758161386836712160674583009146702500071328217859367993744141906753185919726148864893083193181292896071545500891246000945866379458555511230937626530643193399280901255961080156441044393640162169967695430650093348820038676994289984373045138325125169137820544511579862456660067292867705615380264670842829031861437506731285970537292804777424349382445702844955239728702181144924852025466268119718209523576566790131052350557492435729091223472422859164927174883515098241930595790363709530065970889791703108533750057351251199911159195577264294475529889260735508067894419670926865794789351634341433877261727556440231258065882678000948387854943513252782007035914545847935753402817916777821836066445860908202959172578947128597886747164078004638266272123437664785514133303588703323708681682464960971649078934679762026819866966511815787555536056573057927743055831450600979237329372321938847065165960574103701756442912105842364216735372517101687750727967633395583261247754870643131885475603324781116462486219741957073944079619749192741972683688436602833843687505294803660621477004817343642645739388127010280173106210702470444616765112048914001608306921299518001223052784158874451736073432892922015318342626295730073914814190461102895525480982437511787723494148696247114141395681456377491580768588854388799954316688495478455787618087101864675473462499849248035613687830603455689908640764373487912950666926498462048216154213464939116587750911262108172168234994812639575916968966524273487410921529998951073966418527696786737743605583948101695970638075146221400929579488333079911500421310962746011621821057537334102628004737852931905145691320043757298754839263839050213514767884032955409613534422099244209730608211143898885658409466013379245667498248937491785014178613056116726034451382517538516029709992224226159899784392917106110093246521397583724526814694561530447730186601703680100354425422777985344032844956476929367536330947769827526276805617177086477114025435733732113747231507771446442388989484417278682268981265241767299508512462298725092791724699920951138814704193109436752560334696910444727781638213079885352757400389434286263726571436300461985466334492953843406527945441686902657659864182871994452942716428887606538017419138885173276738872948781263847053441736347086412342563701942881008967642535891087301196147629129157233579307815407237373297278504887155979989263010616678105636001580867633474935741100660421643885400749353289261443365874279714614680575527904072627281748589087299656841781934767146167866717105761619983450403624133710720632990418007790932024267309608112252577049308015367795365535061541439039344080257032436577718030963977389539762502507387792546451894217557092764742695948548513019385975002156399897407732099204467830405023806161296039730562553744027433940764719130918187474328017537980399387270190932369853437521610778333568595331343444647253092856853283980845121049424593556210844199603265897303588500649051458745521530463682568209257097911049937477964436019833854013629573226919493096554483340172888119282020344603848801436205732856344082913122288595615138831610475395105234980284161806122924922167992900985620870672010354828703959200712932349288903353666392599911579741275447938844619781298849299901352199163718479469505231442217610171952592304576218889424530543278529285499301969956702957382930115466399770515570546183046962860421461789942194753610062819747602572682341607477050726063629857517570606002387488595388841143416995868793594246352332473589823045922427571073264508320486303824892412187710506482888921111931744418228856135188652321801798727771404144618587645951727309524029230337078179134359457557421597874532423921598426877959290135562534413663772170379085506013825731687865909876879275265451347883473765186225455961808918884654882129056363247486769471741816478432571934427249270090665224586034241129826570469051985062565281304204862674811334512289203105656927385109500666374850167061871138619500635813612543785183951364541992297497477539833472557844333369877728904251799882830695979238276334622715422810220216049618986364171126967292043806505529596651476155772264510617803000723539192468945418266926180589646800537911517873674727017955473143177946910262866403607832214097504785938834578713036605946390441654648599142082537071073399991243331919247790860248978900753107382940103731687176054075726594784980495106832009908489009976906655841201474280824694520801594968483567639676053344138972815654069286893767776802206910150747708666160607445704842631988555394444079102053579963687143132731679286264393906870663836918841001405020954166601792604948141384345823525141353732731242617897465687797818884804588458586968597818114636637033929972299021071894938945894630547711078185076764942706200989068183139402392812727067642539967890404821424545427875747637766284569988921645899292699331550158571266654508220117074773387969498339055111891193635223139850818682056761080286150043742221618198446276941243591585508281964046014746995971680287381119567632443122864922345623921408512101522039264579443992107437770578148926527921614982424327266070020149617153178352371489416063263696637719162257761840347414691957350033835379182375542458138271411285020474422090297723552390380421363531537886262034673399180572635117944820751785561831793845111671973756132733030190720538874580464197778376552381925908953931834822926653767543874814173425282820457856235780368598866872978655098839682836961407534834374805911013267022427665006531340635940887620904151189053362786364355697419559497084471652083101129907613850777490421701543725222543627512723202421328781258322536277440904294216752083336075099917552537402345576834952387365761587814833994642635746806559980588668858238718542356790249764702199303746481555517246271675700530112834597795833699035025788086344270975020223936103557454128713304810348626056101912773324997785725484973234539363509708668476089890335011982733754079520183857475155483039527116957759899779134258281363899379924750896202657850151831982363779346839768185533975643358752434807597415704907222073050313616646526084610675557655516540509436452861967899605674691934280001012071110329167574686779590151938533308810902221046010488592632279320408659180656176256006071159392929980737464315529609068689683841416992836101642952914490479554344125885365691861845917663542216982634330845770821788649271127689160283690994258238163475575732129636610409918898870573555371787738604716764402564975388356437257271170029916509132498956471023891227689261280019815527283484411568327065033637761120214425535326081308440294657471810462750231775961427348947133290283457780664431796238282982936161374417080051265548228699010848031901523891941664123450072760975599948826862307192945890765151721726415143393333284199665388587669860613144873247679270722074512996056259132966077999951692952694073695548450809482629931059209086543648835030064232853415518193602829725290838133554039368861323901760680441930116797430199554268257142376144957598801470453594900754821673498502400554491041037095364515085800202469856321609008823207900304954335434091067489249676058295546130540019073277934023667887406097400269276985632534484481343419871235781343147647496422478151681336596134672873902656758863545459735323003467289806126521288445189257907760471326102494651728283332218432678921752770875592467257319908538868565129108990298621178278707313971137766477971058470244691141718249091906299962313486007343757429926470388454890966772857346038680246637891248989113536972005824527127955893791451668304080747856649817430097872383128427967679374972069340740754256936682877742700557168313635278233995580685388519870934179354591575428675345680433016597622012153168220216159079887819844981631991073876343700842140684028119877131695650082102221632103418681380767119829855289887715419067374537911298613930757146075103117052678398796168403913831355284479089730081851487211667541726276123194302012318382663975447347836574686866459963514929416726012163700232320979681988489677324481308215311974056338866386899708062922551708465679826773205867391926476109215529848295349124191205457803267388300438960918778357112715132710009513173754023140693056477344396137504139411918584310399664804360391895504713029815383616549003388329014292818993745935872111090626832858302407314705359191886199813425018805212119154699201512067154331445056640853037345744602809132444177683279963015249834292175562952216091268469316620646598157305444766518949653910402783021833503613843076084861554237647271108603206912788731741290867311784976256192686840180389395380114010942057472047955716666427101157928493816929929056925577890810644843580203625385206855227035910857866032062547432942640321962502721010842410665155409203516200698686765179922300526947678029427502691669742314087387542007598105945912276674991098220820029751656211285287024194707994481606467248766770744199519393718346394287697461792289614421751914878701000838593480003973205209244778618294027847630444792296844334137270860628608038531727337718445104548046144566026979687416378177745218529846503923166859773286470621925217596423666514952858132348390924867676977332497438119726057364771661975139544308634569485572425774207636101930186923999650224946950448162428845015958561673317183099874869472039276315230131690642874185430212801506186764765239328104590028525709616745897233850180706289027717231727876427621204690140297816191264812735519987153581687047082744632422571190210873885091838154328453089451986823504399436243150105669441100672387950134548340366725113062256002939975390045143530286311492462751838229118155611595829428905957092849458354436574359723759715978562788404807727665175990497332773020134428132816983824005027646446785244082914439243430221554953228158525767563543509869516648079557617787277153445834326536135324795204917834943106144789473759010244331023281886047778293551748319962669143022970483217658240461230490800692353117818917767587172710248657350238010038542236745568109979698697298602364256026845943492502905594856376334759788521959651853257290017668147888713874626341717737621263257329386158164427090585879798922033021552025747716661108135040564475845437467634441655173999574305499325363824041384506053316609531408257621198131936089587776523348224101004603361261396006912799509958514386967455625617721047702909308243883660161597569846299910386126390987459172681034312097303464353594475798695952037420133249963016099160053953826531905988151158429181275105116365288201271629809903663581574192205524126652058796895395722197974931524442435643849899026433025769271854193763998813285699488494383330941547842690961837201885537488298477650725622005785489102264008120723293182173677281298362916293549806298692493574081823723802902099479382565855214778848328400544389227946753715199191221392617891813196525915327160194178643565341732440841035122980100083501791033005380904501750995692737433199076053544682737698084409450326143915496887969524757233460240836821789299250768507353817937774725591977070287387703503399090299477193247793476283278887721152898189013961664821738886404125209743283701609277440308115246480448403161004287623128690103846572992417797594691776086522724188571386309147223561513637850349368284167481859989814657018250897280251705879058117608241672571822006818746631980087980847150034829153278633480305360746035030464881394810218835695869446511060711998267855602454240595237806698536331222509944525770780583390223428729281208315554347348595597307266586401551903180734745804357090351774745245004219059030182060591995010090708363560251051513699150267997403918356321254545319658757147082919755647310206779511035681999951883159385605848925964833871665598954669255168405085527418980186404846750234435694164197579539487786317009895118874421951327903329221792404116477413875974300922406555517338030564937962362399389371435904220801838745492358177876601651763462010200426588557781823878210433825719268810901696855363820350619163751955814906034214295466377593824511466786512525050954979163952177702755247333102575343531204268761540551737256285393410832866400911825962879543741163991991930074784506045474954240338596655690045991890396885677270763658824185271625669138440464396936498952455534745318799994076821384678018038675265252603489811854396592162433253578535886172734991152074030578297724110174256630377040851036662609712256812787826664716443203639601379346866586403574907655104222156905739678737791371300554349277488816298858220961401244124614963123379726041759810513546935723332829102875454609523895934416545224733255804545164006201266948237008794189115765152909601770747083777547793116625882480207348923966928934297075804646631964910301248630158153890237127610950929678199585689326797142086918565364039170118956037507059269920883584450289484662636251989567067625656206341979893178659136927741365106288551851060572064366020202304214968734244241879350704767649764980300027333875621762961288825265988147016515344867486910443751677585338353810505486917955894913216750960202272060473059637921434812662369159440225991624729771087827464125546950596909068926541146199281507622690868398740779731122034177631407634817688589135212956644311350438746714042559144587782376213488747773836748255457566797152416981086859961706132358107470424436071330809858087362534196113279549484328491796604906700277491648198881261747982877348662109646191374831402220379347449157639926887818311964580872109776725785044574188791673953654679931433169113068968403627629753033725343856610575204741286288647101634894347007285867967055136503422430710033317695667426440974191319411370278918792105265371452573984811981342596144773964388519606189670475333158677174215303967800724983049089235035297124570495527190130793219810276757012422747184074319891819905293708923656327521586704728661751920657283168615425219667632533819503399188846907891663734277866518505786964374756746345062682237852603330778079862626624488497493467652315028573043686751441918171910204067881848486426460970761085837800472584474548240633824853140682213052251244779953954833684823019342636140674228746597688745036163981759423800581073678649499576793771325139437848236637648291774247091239210047311132446834347716527387257173348510145910666865941661049942896801426600252154155617327594021222010762735191788364154699503156448365007493102026939174330110561601862904242092495800771884157497893836367155665206840136632925480561956608355798480025514283914409506030464327528224633899782228197561689652680357358497381379879263833181573360333532578503383334745390482508856531383298046276349137292215786921758192268604581169158369914243758857221060383829499087803689928770796968005541614289747586180301593336028695665091368076713727100739376929033188973128270502538588014971680876289267498172517218564579719937289092708025868960749618249761826238794355640807985844722844549353168854014966198158600235960197794634271670547032362785051540638652914189840039435652424189754116582849782485772504572221692709320145319268835483336307711753596829244395607611565950663383113761813296984397679098325160150401243496687818808795903278832828363703499548220327509694827419279225322077879523249396889700182441588263210195191622172865017319542651920187344817782909452709081625339485656818282351383341232879250211112581452312563496161115115260666963548392809028273375532062382218345858221076712591168481886767930039259478945724612073025849350780840356898073170491791952983122017155873792114278957994113058641908626587222998844172983524584793646707589317275156642442595432296102915565404079774091843745203167390219697674031645268317884391037339583832749086386720077779219597445357814196366726611763180045449910352489712219328630174522650479604252702554546920717686259545735746939903530431044552541270897669143781310744179061319876449650864008870088376285305589861118506301760515553284653834405715043820164193338603615725190718238108716808710527313621522718749412861248159550483995642256008724213043262489559277190656570234314171510218565957300481712901251576014391457534124330706066462991629491944558056303335664392227094286796427266499900457356670456634684777843680497921160873685119521261067223635722944983297130076015977431229792777759560136653458740037681417582378942894919930447817726113416099238694112181466001268237194309680664553243010939257302791096224510026638165218214768052663595200827107570520642106316020778310707658270908188747969615863827318834380186062339324771551580925370473112593477324085606231130679451178711430490239410152936285270065716892459580153704663261437478660073017111121279851772657901053642122735057499727520000831065634776831358089450235928102860414601552057405429749208291425613369690759149189528718910430672399449505154096807865047378196533277145196319889363751284653532152265977794788112742409839414190002870797814048384466099864706406067981163114807860980396143121452711940963522401839987796358249093557525227728233672547405783633702519548204209304712292700999365102049071937692967310341650740514534324404427272191774894663060152063404080636163607014197396813851985387880428563520645069600891397154405934609994269867051015202035361879280489273422523388913203593802457210823596358703347413121139693095918299898553568357970339498497575203149471167421462491781510637876919751685705406117673132446368874369852406448348741268818330808352101708649969574903820741463100196914483183297009798741986270895095107305594118745567824944083341970448767117656668943582478379841980501732238509633983737775798941881498472463015917516084183968029929554004679127149096812949244875914356310331231789013867558459322234900767251462378047886263915006383682876461250072675555147271764925710657794711926719356466870483089127002400910766157578463591804311826464411011692723601813984573404327750903753487835065854687862924586361137881222426591170489348326696818209253773295282158834422077268840315296165897868285791981615408731671533318009800467213117076070975687163391918727501390578248392167290316793826239647652807874488398051739756805680854049907823784640458401149107335249575174629331231026599291437950147701580735159967562600302277187406840675228820714985001851367270020962428749514143496946860178300586724319415206936637089668698008406128592166605213382266404738523554985137212599946244966827294612324072829279440329218410993699086441311031590822051222388032964332502613227505322872206705915535160502580695335904839256944472498626153565528763621511244913636618844290489549986952206482299836356140127167455005215100868631697425989159746034977599029611919017940234423189513280566859821732161777470027034186773227449726399794941141548847843818183976803622967678314395964253335139600203475218426837954581996796376633942574799768219748211924609951234114860456275924510401029249478649433737190492198387925393552884496652839360086318210201457585736321267368570711009040056848397774925591609537618143544650511918973549779768335063504716043680677358292664699032205550728315701877007858972332703201332293916411053724561205882236463102103625523684292338031619495734558128830989545090141027788693877101875725428797104066170203120386530623626733447248512112743911559236715425047915701107484904620769588454371603961556450837663969530105252040970834504687259924916684819965091142227688403046499378916882386915226147346544670552061349580346888862849827766544654659776990076545985012046518444334438070644315342216786584335755301411096573093114909823022511190986324433316545574884470382472238354767179833522318501424908905086069659921292597229721170417716538180643451633111513073721149710021931042505004734350794357786590561311434866003681454041653783426120004929259395618874666758650600974029502899385492704479102727287636806914620293684902290182461834065001195933474371445496528977938091289128353379727909753461327026724216230719312297597391517400318745377623067256520920276219304939130424270848184140393306886608000096692725646572961373098677147306344751840314878910930546924675577541022734544359376490904923076430563309566319008153590821685617794085008769935210674350745434364997916768846094457924847144174307038971738795892782906052557068373484585017005314241801693224836905737930115540391925669369902782335671548802814585343162080237230873421274388294246812319399672706100193069302102813690034438923583971306923509090482316575073088894821443762122534097588466125731696417376895012125923598279348364943871319351930586376036136500251145899054884916126480843576326746097878049912483837341360291694185063887844389489601512264833990166535728610013288371535565940113575182848189942682498618711821080472926090333505645609472304583538392300987155603898905712418878208191956820794943663936261436444905991654310359211953423104662539155705417455931188170540711811058473982438580224568539342381610028530872380166570530684544241567579821010422481001596506948183111495667788944346466685242278207228030729724955747364162239619152366121118529558772736118341275011464732416345813734995582332006738421455600697539638996231269388164521564782048423785159516332879073663334365829964658144115008800509898792080005620492147049041455815764302370040204207564709197545529227315468071394707701123350173351275613096748270116594296305158915622475898103041445200005653161078636040416603076332204744784819143077312124435849442611201106695384164227056362739205365427600887191184881568199258329921874101024767288934576605792899529089587583265750102692966178758946896485939986593262657225356450016394681581569109501872262357180311356934610134958628181791508608192025713653547728562461956901400768530182867181988903637301209439915944798857082769150503670247037517316190372215893315463630201591215193322747197035458214593216092176676438888653869553734055092609154149174940904383387533928364457692451187595558808410236915794757541017396788309564834581416844697391983070146876387996357383587620775268791399656976775716929634171922474943918628819000461894813821425550297602679170732991212117892806018100438750102026661954341828516518118880889636373684902397787634076629379853700281046942079357071482691909461177808321734568817244624379426538585919752693770253242602194733498078536810651985852111501463691787487998422377378883264323752867780998563767952309037400269982201487275423890493084634993419718234277620418750552507863806867563841527084454840125487607612810435886797106802258130497274377769419167045194191772488528426034266885192706410551507810414767592430935811792803223260736803995319442140451343679875818154573433209477301459250995042428963195704586775868341455579645291072071480154241003414703532463521177108892971157077036070575775210650149195783198121388086702081282326243309885478507113861921130758773259898573639883793777508320039637339889230122693969718423476230858839280862771674669085378053303186670663513206367153732676571640689147739750885769750390821846456304486919729917150269956130559889968035170416637021744437230180046175258467036822057002242751849470446918913814822079384310299998332801402226589141969742605527305735036928108331797329665104237711919781537673169942327319993794330823440825365866122313204793191212757293278168525870059423839328697378886736144781266224833272913481295224072370453530895032626591961273609854975121516820668021381781914844947905143137246715976232092687074353804333281364742364170820692808599004743000319051545026750815077128955153113948041692703606070867940095091092231626651456770488453155641818256294628874290062546721602796109407675123527803699725374486435567489301666937701857504307747652552744145406603484899678325499377113508665344443485634713046548100409877842567419137473852757900152659482444553604641090515347655884881261445372889193329067204851896277123378674872179496016187055735143205307257294201350751925252050276239614817885336946491732212176419220918029775772966509967246405674541648416969002489482037767823351391204916594941526890559267339852734431200395373571046038768833162880060192127638517542186663042810469019413786487842031788601346405735525345530290622174197626302861227606039976055587036068483548305353046778095372608959980411675451245286253565550603143689497076142424726726381502329039364990772772206012251397004045433667897709632748276157230646120983991583814935203534434879335511416198889216324202933480199046205887906384478622505284715981846303270598214014660550100256426863238838119324889326994069541712307482228567658426387623173282744269933270134093195531738355730215374403129359725649385903049278238066361379170508746649261452008216214785727549849766029797799400790933266956522267129157445845508771820934275614682587077309975268214326922114959850488336430593534817376398766077978505638373369211067677992836881570961957657688259476293815417436555050709048238325891269484032060024585058990451795316078184880680775804353700991067602608237957501267218312917994030988751539113482900206777734559136487312319218065352839076378236730755411561747551669303377162685681850462766225976077587026046586120845177862358807642624880348425093212497512615288564300710409092389921662848773458430027736824684592038217981988026182943680253056121440003005012071926735155178236906200554447875599419685170480702847235604718499328248634004264310252720061955626722915110719441494648996483856816272890821204910491841178154002277013466818323395613684629145710692917843470035429854810282122116413305185944857283523606340151131194502988868087964506484423089659686460515706210253017282919690847648548904225847885493071475433027248637642629343039977456937277308021147499405249696289047666509683404383954988547043965717560052163400752750601033360181717891571992257981246484794308610446290618611101194645926926892217682322160806908941817951329845119329325097842717289923139910365143421154170594373231208239741340618856274860447678392236235351052451593010016118990240152196456010062081194677369834989051019874058514625689397174968865801033213521685632548850949008276359105874037884149176264234152449062407970273239482016354322148175341586112133892629011172990810211479290264010363113628900120168153149392146829557238845039261624908400951298302489861437689692760686971809992828543144353905740849468597915103284102376007175879555911967268403075215436513541482228639802863113407201876656977347379613828457918476497389244537734943523586883325810971690637866507450685894302055300026794151093765814648788082578561880612642932167822967034363853206001541818285260161097451008142289780742141330303197074489634865325094081439826905941022135392794816632774626877335508601673943985839375121203153576069033745959437040720520812662079551291002582824412372511625951620442630173782138771435521267991050586895477397029339536988183193566582208852104669933286197432004187702955391438803194856000234653962294639377499038303981916292045349888247186635428073954726408286822945917598284836473240299844749291306972143411784229866835033434470625885587130676412034883738256367807345538906989493335133551777854903077009659623696300272040071244609330690246179413191703941110512745158708089084844070744372060216329160587398543904246228670456161468699131512945135761457701227695225983580820139170831981645138166636711951219083216413135658304102237346669897993649339522697552609966038673437952630269430878636365405235663192700527796277476426698895117248838360714675459327139181501737267041561583223550165042666670082398015246316812974855499374109781018644985560172593015970457282320215290393523950423004631944266781761086443969616418758071877891457923502194644257210003810827216299919074125576643569497970570624068229845278220435574229628557268077795915879754587594176150024070191013438567633262135212229228721242058531271814787867478624449530338660768573523551027765973445933814741721498866347674615826690938824588711919451096891205314429701828731427902243832639757791396191685495441995964368609412370131448076503452666851470466535198981126743528886992595803752493913898720791924429525672845592334777683076671380946574898249606488987890265256216420627207799450596791898696001322218903443927448641413887470546925027725144466317816306874665785296187616572224732645229415428354264914157291771296654791142687837918457478481190261424935961041081878064603894019983955882782290604363430338725025915324921309013955113961840018242322411490004820549127859525494452700509651803486718879030621028606215271145154694336315022168928298202118236556248393603808283881078932377079544365242538900101470086150251835619694285059118524295837242169703527501702863928269766286925724287599920358545120989938990484124626880305681089036651258360460427746429290199660569316081133054080399062167007281445919579796269974469901106116022364652097641947325327758291344544942005428651383232831298205266196409619715428464321706664529011187095213740563200950441499118616447407459468142322143854181444315621149436603707265374376819388899119340266822786186345856902597186113058266974748553494403090126617350205312524761610376848411335361524577552706845180305918985324154387976009356694010490964729004813546063306909697343041558956596972114481272737788779221828095828763133510377872756371308887890837149151894986984998799642667027106266332761402208734576890240768932937759372687509636702806510997571765779011129659648394248912901877420031906104870432129175935954503354048371745592725603694488381581962149524857912652290651399073369229550839931558417751296841786590830272030895096173051417133147207893622120043649008997026667308467993670665024039979728279594570376410164846761320682754386153820712569509450725725054671789416193549898784331529130511897640609368637507011274863422084347978641123261037589518881072383406313678602225500335199951592798678930482975164358764414139887187448877842732038447107160470932753772074167710444954898794837478992271017625389866610135458546951548152586693548299765025775568220489685632437872764596975247996369247606145340867630877578550275395391792067351072727348945877742961908451227918843884868059826061936465056159347151023989875335727160525970982422293612865824529132527716475341943541676163515211119257667819766463953544615900183742529124471055414219163301131522286281142054226590144854536513384491555015574157897409504658291409964074094275877710408000094512409354551081561707816863945741911995766804729089907254860867516008491765182726953337415388508016440864752674956128500901115885009455755281855618047270644013105385448429478279047122010309783349202277777916004138807742026429106917994244668516931784668951885931700068613448276827164919388322106583136414747765082295130374932704753141441853918468924582160380436590442444362917028485317866329906115714697404244894630059302555707380959482414813886221367061612766827784969363386171133201123387658328061397937086311097360540230301505224822826443091312954667046993314029836428964468852529451856322795484787163459494753410355476542453125097125737770282981945756250601524137545238066025505417896263859633161184320239940313259178093568499541120686586972476355947376567059285505003048856007562676381848514653049207628955103364152328538853054283772731178895980564389429916314932534226496543178578880684069730990700915449318064512358714922219508448927459434830999056882411097760519353908854746889426801461543580007175671767245747163922208575830578628233084384178851226485174447456169359891790147879287929043725992380739300857201519187964508245496627280530411195998022017754669866251937761416191140226988567212292317590420723190319048590634564933332194020292625508286741730024374363978653667111025709034342305981468544414548896448975632968347780327345473612645059726890722486121021573909721119607042723709637595444999740626726984216022876267708247801819972588870193976795982372879204023828595914250911079193074999428021481452979282650335158087105047458588630631742821847655884319447295732476654302106623062750388122780685304423902966469851014652484133389980345363997417997456298846917361934936353435059425394748679730153268081433736891145273518825470628822661172900504986248710512633095037513146650941891377791739241892238107170776358816146886024639887518091881691223170190944856023620588193381168247282766891128690131036668649739537862274559844651792008793354853676930042028475267191301566008953627088076639093901912041206950206547316277306752023119765028604835621204543960390566210632892284461238153187074740463027855861843230827433992083616390046707799776768692715302153513179948813490658340185019603377906188170199712553787516997025164669191865092960180703279395432431323791220630168563687848360417790753954496829368924786879834569649946462038794630019161154392882880021216766812007187563817630177720096581665196489127284023412405432851549825790958138150661708415428600873354788576915008494737532777520496930164959634394225127752358722733652396919601452777840700586387502079460617568834659400322516554034323358127728529009544727850133353091942270107613626897656027992565261929031408135514552369578969572999815335192225617493988040615593732261088813022740097908301005310445070531353309216911200549761632411437683307230401251086555991242062272255802528800376205903098594286939613393958660455869650941120185165214532786619304688065517934545817698714681466706107106404558723133719841222938370579371393336888131448854284143146928387566876453148447261185707074257882674153628085241922874547681167396364079581253203215763322108504674744471516635418329197565059690982760520971299713844803489294394576763901552947055210118338213557859478684953104293266556404615408395182600820019083334764644718019350256122690032546214951550454414872304028778679486219352714912043430983738882892732824670237363884717558030402172766571685128995790078557304319956652846310894063784968234489222031816022321135681671685589286459043302701872294887616501021551010702529749555414216823476110445220930716738285177089603052772482522315075608949695841690550915152540994060933630613457895615053722503703018837300200744843542057433327063006022454251310196609317918603492108576822257980599449492583425774315673778273186356596863868874389931961327782016397086511333268728109256919217863306989436585488244973400889439444868411129214881391300421517220536939121615193917972557461271636946383383020734693911614147336968353071468774394727535135504038006503701022871678002860566840598496264333154810352740315617834642693544517692545028745500570505981714051206187645444092322223465788193958105025126147704634699790132368720777428809398406231602797192569435069670640154446530566296521821646343887065258167513036663335492290393422337408228171260453800069721205487881889622116666476189398855744914750491036165997781595598827495873996507955748787754347303166468465118925504674433126546469187810371132391104247221933736886805845691617496591053766427858891466523418863262887826719608989494222650054187621581926962330009249822127378286285553527371420684651470506776988790715970375113461991617182624820596935272425628101747424561765000319577271264175594855061896503338605444246104184903639280705346849248180908811555808021749593725306425888033990776001262181830775145263686581532931959797715164879350384301102818968174102380474658729115232345782752804898777104913083049698225693918472079938888072989746291900965460331627572414379748634090881338140689407218763236460981433378539654409439623389980384260577654365477680886860691340333320801670446232552691196144298244805273292167283291907809936295556488168441505679350341804874267012466087944343780912425123008287561966458026166416451073542720637471921963279271291709368923196765956152968843796474593642541276882414582223902464601169271904637591221411546515472639238123525664328326146478944738024048999532031371192206839141206158806805487949275574016275831392004441384968416825187955865356317222226340114303506772295864675750036823509545065684055105933065010681831813703986880802464953314468475891699169294492895024183950752202837261745353266678686443799390385569521392221598482094060706162873756867892762459216107242923415345251075483587810068138964882785381678302686104629225333872968238437129764408546546228052777058541100192045103081913101285093429947229953313347669376384657840625438669070646405908087914893898154698289991674244802845772216791758257586673184403525454094117370347683533154886856666581522255625943969125114765558281458478605841513773800517769352147885536623353161990394335979808330359065835980934607346727408439114005625960429728706816637153455267372664269030403848970393742605069497013570332124917257222242219143764629516575262276343988699917894632407125327151256451834666618878454673332869638148703743576318790676166455243760190010442964875458854064731291705263130122912081879731136676982765967963544365700180615528443168360648518307410451842843119992473422472823919712911516940234136744493703854596666422601082133902652957088467678565853741588986722640415747663692242000406479450369245276886029766158907525718413167003425556498676896665228690474170355212433881414403786675372090688759692607966999424261438646681959517789945278693484676693940693523504669953800934023940054767868340982486066730045677107996167683239837131633322114987037395296440853612474641767795073404449853308526052193630552051991714468257767976020034273004441268256715520739848939948349576795109523585107813961857989507810780656845362052802338230577642384991794004250649434336511724768086512075851095778602291876656155544766653881564109047924035282533646022548633695215448643136404445854966653310922804200615600553996017395349868232584149371920579518972201127635804581736503358616687866685674136626520572107816578991987546185257185043991318746293714260554118595494275275056636156356545605745896028130608661642734752626883250840234676350585013698162026100053162102613293195556208839929944094322911600433061673272982182427308797910818573432138705574932909261125810775314783473014168832859523289870327639339164132479291520710633670583202814436309555606463004632481369383838566216604174803260920517060701550305435784812739700964770669702341774262055150299518647876064220645860524840113935912724757487110495647226568204329827191631118726484219356477320005654526407029003747236769334512433403675993290113515998424184955423806326410172797477358866031575060908244790423142565556614569947118216974438123400447111711883794171838172872268727666094973438620239344906661752383834869530125045327765825494627531342047627068237239805640616415873579849298459629414650563113191405588399889797043110242706640913070131008272155143357443073302751406777305462116054396071426629553018433144651248544652767772323695814784487440949837088379844837591048881469112813796554342952147262084694506216686906802515214949830161940798884064419189245925886619765734980035903986982607413342492216290376467172564578667412241325991453148887643397187776567586731831126953156429842478499590744767307858817048541330394376798713882612677429452368226203199051823592548044841757468361666390190343127336990045146431202075464791949884206418976695863568335554768902911103664186365643658598925930641487688641521128625142283370056376945588191283012638318368543486264768364494752899348231740198693471688004171896981734292504643436430832830587271451702715562325436419619870535371506324922123195088964711468912809060566810144989140237830066777888603891296651824565214390300472536728369017050294775522903759773964800423081004524726112836137672053246666747232380343624696609102270316771933798183559145972097662641819001951227039434907569067030966024508996141062262015165673247593670328799622874729759687085501579176694073181066837704867272160444489106691551291075598833070006493240284558998349470998272921361665038572694646565740962334450486735045159002332212735983539835699830767070819839177009281507107469108607613089785703060465808518479024385077744180156996327467754649550822029355853047562921535957722807221906749088790180094241301362469131721181641698245636511401980881952945126654183532722647187629503902010697691419920973798444699460971226742014639516296108587427133200529947128091994626560236718619803239040562969341361019184989129757383061586268536397719800468422724259785660651388555670553407631360816900630841240081195652210525060306895139277798923032726065184635947932113988596280438494232745874292127455859839067355459882152182760787462424148235123033948301735121306228690987636429177674619401614932731124078010037948658298831499897851082480075095813463572284053292331842371120428632698108049414855665834995928274246584184110564865247191084472777252507121328954823679753206876965943850532958455380064920832881147107246825544572807889148593132397848362432874638321077323435154294519317069809747918590543074787315553429814143825213245953402291222682567466442441338812162460145314993364113579793589870443016644340165666366728994652729692479563934508860701145647599988574153409443757520077321169041729190098249473796108942728832262928988208402575387024458825151352848918291576308131131063708979631247223889389274548598626126682116653454771213271012178828722861358357647634839928134912569449965303065645199776049094043337230585479318789346102418007012107006842684879009051146074445518546621218295610355280985934999418055784877354751783741187506566949993739401498240848889169518253167099400941080305865575847370562629116022272501106262103607805052030082154069892217041662505324949433882992117612752961746174982619070496020579899658324985152834362032991046847686873461396023732171044915676627482372767324959831437474555722348071787536042659760658513450726717859612757504195101103422326206411100737735254193869343235219992411839618623021645041442701448437587323920842917247983779064184415940331713047848601520680807875263128744147597570039157300072592392819331447931106065028859645434067706475198417977004025762186933200299278235313265971543545688990498644279528878257189339963510414417480151104329632933846317395972942612406541262482667673209286160606736434533544289237470463244233270415338071381223582274025942976483038162463430570521831282140535824039595071288953538629282402896399816061962093064668186839225579940540950197511928920483082230182207720892149192325643415236535889780852099417906278889062207459547549494252135990807283939562989034856736273837076940121997010949016626091733957217321382411310011197549733798816496963371223824810958821090771013159995206162666122344250333595584166660828401123841098016706792262849574867758583673901306900151256885984867533931059495801527340708790396682335182593743502005022440269990684976792332171371742212510837876498354035736032351078877486053353479476884695146353207432698072674433812084636847506593506563202389455142689627368709768699979359885493088494887864862001755773047654346200568248435748465246736673141199963505924652209971694128636781226406198388829504141580985808147306651911992134214149402574011823915850763846627652540569464106338397270376965641770541779919009274070125777242943408574737170773344627808829058553774119522461720613933027027336073935128675181377285688528830176891616004656717557567416399035253722165289636906321440259711409254117430006800449252022397229861974093169073031269973288760786705304857074293835258093039053142875572570856113918484453743632966567957607331576117390255237489489782936165464621834050562459145362489629098395846874758449173542482669047105827647799514381338652314166730172094172409785202903847262648863063308593214810664530851315346364293675658192067618661183393120532466543889137207968397421813540536015585426755546381469358659724163728451686717291108907343985084945466126238828527840246179878737113890991485752705251887048885924490174834624746057440571983109512439864265686276635022283608678226060440143934716983255161734309123971381272346469173102899080894439832022986243239574501613385505004559437299044080674468834966344805557865125499139015494927291545577640936194991743101548665607767104163338165790651298126761120927595546066847202148065368969920272380963507240816110818317541547298092679062489467087122006506323243751770919711847262871856510474062457710029022912191518436621752093629760239115380573559035578690887612144293244250315670936635504388268150937132091558817922375400630932402786243374606917872435845848428147391742103583361304712152113405719475644881482528164107863120753454681255931776490914326487943380115142144724144037251121670749508706993882141621913911825260346868494596307702435080096110055750961377147899847157752184825265066133910716588648957240072961348694440318317067748400200081463478687057167420080898238210316304104065589201615945368212425899558737959192784227888954931531684850593108228114273651092893984090112850620874985262645757649154646028828973696001172341960536571359312642995639998848662545384018628917320511237824991909186224038021848970223110249939562633918230524647840105142829790053295031939335815629424074356185761421668081953592118088799083302081799728480004333868382867779233955301451408264891041841023597787934664307238731656079359986221559501349247054833195001437071480646019144005030064857972571469208641102510578809013983013772682147070102639524739836627686604982372289190859873722244096655271250624643028681795740664842361853047643992679893437556241867478433754578865646523022423375608581684221320061284903761089192315987602565570591303802370128228509030558323835742204760429513933394409017287205518256929463491556162114394636735243372401405495409984814355271750768684427648264028491385680216214516290552498634083956042033002100261702501654708294740090138986816444425455981522460115761820328776333082691675193869459392546567504450230138866944733335100489220895338974919296875381532137578564753942039823453743218096287115924125822532492697188707834808116014188472213638131593086672127334899078042201126828411763430913412880141605736475649014261257027017414982961042075428865489503197960811123030659240073566381674043329769168547745670436940868341259530481128532136296899258733081448446795271972117727995427476106767380813783036429697905339537128849025848284501139291267681844833505952975662141258933099506337119181958128837379575817526273983114849833533532218439927075012098530241636039271827542660078583610980559172886287705501621963592440933975850852886597059039595097951410677224208487312054655090381090919471932966126349316602176307305896385353583466667943389009888410399316328894393821544145528486433236506672858425271408309047387067495486280678559127151862733236550088309258142414294060736463435855238638716343840003632046427024348888781190333299739906169974225007267144591477413373651231024261138786719429322807508391328842829912260648174494796103965127064846192407343541800521126952135724208316055017588594335280944025932984503358643208982116752031150702343213148734004725729758231937551302789089488637910514376620629255859884755451124321623057540940086311793337845330980436504650094785758364289024975945248986700991006869355371929299718141382345811526649197308350195903852815166046994577352666623008085213087060974869698870533403678011971236238328309295302467547558936202421664200424307976907143044295404786014589126301656687311832412821554799688185426722812587883086747746018106984585329199696120551774787559490303035266379833360414712141141336806574066635495707631936770210642134934373124465162913077616217245075917366569804298691334166610701478080174950821355299988914228392744654784710796781840479243817475654689426455085269151885779375347958943832480157659215005798358201854701750999214140461194494957502540374177942990265828081564275008823756650788567784094623489134525527378634633244286114436262213278441790941230373259527958680634024812735611201355863400836328852574826683007139145851782600960122653172088419150326469832587763422876906701178159712761612528585658410856038910552418682385652079244672632605822166826247839385624030252316472178793258594382494925517539133273698036623455102211419283483823218409514901745527449363696248588172338221641738709947842935487939615063929067323217446635246330100552139616098171606107790759905848044067819031454168464186554004805203294078515100538918233442333032111118012920850056789568084923044673467020085912197486603924357397603586774176480384911562706887248250536447965211694870195143563353384111287971000124318551146363977094132703937062458001976933217231992883668375323122721879589090283538150691065017188358711495596823995392467061034117460827552479483849602850751832145018356467223654671859875574384243692882679241509490583863547104081594110110533378935224311760312773518826505109359866893625282495494827989405580117679008299326095894332095048541170143340005549470711654612544571378869520476324094176790398539941920532723789804650881060416579843745629401329017731153921


----------



## vcuber13 (May 23, 2013)

how long did it take?


----------



## ben1996123 (May 23, 2013)

vcuber13 said:


> how long did it take?



over 4 hours lol

areks just finished 3^2^19, now it has to square it which will take like, all day and all night

but I'm implementing the karatsuba algorithm now so hopefully that will speed it up allot


----------



## 5BLD (May 24, 2013)

I implemented toom-2, but i slept my computer all night. I'll try toom-cook, then maebe it'll be a lot faster. Ill turn it off now.


----------



## 5BLD (May 24, 2013)

Got me toom-2 program to work. It did 3^2^20 in 59 minutes. Here it is:


Spoiler



788476810003426547135889756681970758108634492343901916650652456335468779647991318341838702766503160497945239367614156592432453907986276210422161395665617411845766088149877340758343132204414762728363172469671383717228257049475104766361175533117890229656674516078546113309561749859854452844096685859110093731597429046914231515849378888659119432573232122513441231566808558659147698121973873565723819199644094029982973436558904655084612940165613188641726623346364641089499782165404850784382264881210423199554707401425571584548296706527550552438834187654685155487715991880710228053092114833209423367286793408494332049018696681236308991630174396208098919093091685549340380909561151363295484782041440782764422959471234077788287664871283454442014172954883614230664956320514727947845301781071875647140206544583442148907778613739359760663244621134450219425749515831838119029905410426457452163925818927054354740290913533113490669295299532776275157390449380640846084870327428504859222784509984474161036429416992224407481365593245918117963633579931681794031707888861104793655057516683452389564111857542862100524113842945620642631002620643167614559468301197065363817831035406859556399856052584017989668499260345928016899386937798609317872097523823248317232353227498185976154846788297335345922124041106682289304899021721912512569707058336525217922720165759434635949572762159053178389425365762302186465884305504647575281127615964460738298181232287137846213055819669850237102965512151945234504675712705474066091365087456378378293209200381105091675173704906559157388089958479261088114570132216090043502448041128438354739965112590155185091817497798841374721629625382527465332309653705971588028401036655279147381527231097815487702360581297200924217752069266052057208911843560309821612695768213842474202215533450059614402603936653527362194964228858325589723818974203026436384562740776444720108453781626447086575225923715024646583351637043922343607735357150318798686882690321231213580458185546570323290816157624651307023238149413635144451873783850317976519301649087446682420347240354768568221653435679090763031763707226189651599458807680295022667312902453566281344804847394334938165790124894710535598248080336356305005572916065469590117492783304812778845800463772136408155039576085327375593213040494860811555869985547508195943036483287853667971884590659662578178487343892915835401676390864063165392235974890144409779198501203083348960273157943898027659788457046160307827028931736580273232509427654358003408671547648702730764014216719625865403517541477882425331439873735480004806473288870626143299186756643046360717248376532645490041598215519742994072475147825726156395447078582289997949834955711512008471782591818851658463582987851498492796190474168417644597549490429790657120922483777214332711048787133911763354236659162694861068566504307902326503109815364394514657456265099554532860995367654987255225497382882850426366599198688622114605449013211769093031532614069152025305156681396219105517217578902784492336688139997280338410533072245085810774329178249378375737844983920604089377930478627511853189603577301463325934143662853294224158205444284776761417009946489555671697053531812242191678834996846749166459841921521065370700377936143514108257834507650237575829017717887761137434718355528140302538460806867115226929423716730916580886127105409911901920314269689458485161001403544204822353458622473409187530760436131653734353322138845137776438103125811423726505205893417684634375422587298325888295384502360105322120102749921906152246566566673119754290127581594082400668590581807727896735092318506338996896018405300577080152655175491398062358923622044480374177200446467215320040955200208104465138559345101178984741415432631197699779559067202681675733535080683610280517127461008817222165086846981031419267170505917496912648159331413985580776687202655598597523753856945431872970622668434058453085126635074831421692731111649607489874228223407081891786121234443452035409679544838289008627582079219969171422427820575590251980712620525509159591252974100472832710789653603388243051027555293865385763217293377193133596079984564922485714835360833245420982343026389059177507104480408944902912625405127614806781535639884281861321971639181166511338959527283666079574312038441819620567567338851305514750704549022883636694464927286801000394602510630917494671641822847447464923828120009721067861397006299422242422513941610385900623580019722920711998996685824806940397445464396631524342431620099732128806647969677283039348472074138278309247982779334431848528330008951949400532979822833537491513028122752426626621236907417096702966176223114781640676453736900527847778836153730723144411455031757909554264170809742952405026270604339403247746077791809112992800982277947516038994994275891125790042318360288535238752138275474456221391911130372567106337161324523878916193439169572471154944987545004133513335111046832919018220796201034324920787507295574485159048706819513286041975850801182216681567865737828537180152991345915350732566117912959226630362150774417482535555654275032490719787788028693996567512356257557125711198324022323440673544445581081393749577273785058745556490535217316071624194400277362055372311320083686168419440214396168329619759438211250750028089175245539945142387616606056788897389412560645802636465086402608069610050062797296774725256494267079235764482599606819351934221753238758473931940752676800228508912922104011236604457246987233558764600786637022690792536908948780850899924324643489835536312406010195651675382654701046511771023173685946182728027100716156859158272397021253205273275692480244257284734846261916179448302594824993046545066036698736237813949490202730885809389798183036040528180981104572715460205025154433404186586768415944908011850887452559271659125354468409195549100943398984264873091493797734415277589544885058784281820926528966794524774423893425201892795404169633888627592254840242845888668941587857200855038976431027986837651624459996946987463923576719364112570405063612163732764186037394483362603295727873865598531663282520324187504742989606665676907446716806870129204018283820483182318762397246709832098769155650300395427854443421644082919562620652685845489987030371477920717310484972284746953898297191430832330725676105538060795382727154890592706079723039527552187726883932326338386870393309304935044385223838174433742300001893582019672396439086041619048671539330079015273992596182817414623108171996820029628688453855012886141843349029634310940222764638094759141206821404280611389300117445799972333508947633201049868939152950920099740719893344384928975003802177316363056661057229248776690874193484612018104077375942041143530430992897600039785631660870161500233122159535643131141819119896535785069265602477516821660209140277639149291433620993566112836951897990437575765533548089986945046090624856890227299270712172493062172776681247855107127185632875097535523604539722525170167242630477558420549077089044483297847254191757189398005823232529078384447535266550064620268180328494615939980591361913646454626065627964574254600751790971293072042490793456178785930667582684575008789374884147191965923712351241297999600363674942551809769919857163129634805347699591370461460322721065765471917690253126102481189886235810627950594951247986742152231988783676540274521058975659865589874810548212747688106962913285963776982469658378596623790438791895466077346313589336199196360318622985382784802033184174441850474571155946572663043777508218207810075700436076861024973253212800725310727048574354502057124904553336263712211158339337827070679256448087412342672208397977544944852743267590122340997030783662177237731265224262644187504552200964515288186937700269805104499802943974366832638961176012341924889669321437410529736311541478527090216311996914874186330994822135157766482381168232241494401945311331416440251887516199323816512301118786301667519496674620668966644587659986417198839180290432783758244051462031824774412432157291181064800788176030758379943979936155962684002017465288886053130101159416880912332756107949689774725417020042685919726531941871960614821434934007220467718760598517833462013904811576802600134005494991737286609068953315394258085619099515748664771286710451008773939956030050681206880039984860106054164068468947491471670928114643075535764936554577756772808177313738510963846856055568836853172842378633168484405542924394537276698439677753523924175950162454742168368824690484599671527342164926382362708291915758316234439903877608247998362646422525976299076752517111741451215902855643006655592207364285210077592971962212077672239734358749934792454177741512851399300922438581316776538182494066022903450319707415534411824150700672232241193909451685272294259093541768463109629791583744641849779813721041073749419791877783792392483127658545366430184998210429046014217623880050051526295883045790870596515971445973185891358256971976036620476808925959417633232703953189806388709669960665506863040059062497117826173421308031612648628494778645346026306158388142099149861347268328271160819064405464353173858474939133336376367926129532426376960702689344812683741190511526399397115808236190446219333386261164166975997711715168039084268791558413343871488454327395058358903524412740483927203368765046062616195666408524106073099151670817141083061583798807846801746290298766118367516372462639031334984513323926940740914721843276441950252655532723595221181062208808722820736082525955996384853775795271111935815020640774731955851248910484332322352906861563799826626736686226144221179928223851856892624464181013427859948854554635741681337390018817424707081055865837426517835171509986932144724325390185053249114374527341786824547276579878681258252242024600542998080943481416926243098859932091770505714558486319750840227255552491878916529188864129417230594764959310902310068376188559342936470815151877931369147113757511726651692927261150946930672471474004478608236603075185639925539496669796883664184245136073801613481288248289025676811422786812399332716929144887827809962005465602453995048407442103959228428691880050713190170860461380973213057032778095145093008399678603631108936410768542248107363507780049971820083882622056003411163557756277595590670794309812428516556132476167419169253200387209591140630189542516161066105411198628096399176549566143477848083865911853249959225567013874675298100702785291200943353450834377786091970263169268508899572590796875336291701586941287311600491308562722596704304718781403114264770947278362039546791037091142078389137818449626219413147162034620188340837026794418632045290631840857267434900940255808339441176025672184404818669249137622401103676737515978266827733930250434259274670656573184530313278575642549127194011445823084782744725216919664455589805714419120794447086600966681631618350412987197387384161974958916875915195504519385649542499502787232137893135502971072222743927483433023532366186280398428067687914589177574333639499993023829379664739754531666461279431644572710086275448405841105320278994820071162440192383878602760243533814294577132489163114702353927078383477990098383832492174927883580768440930644366885675795333762723976587275942951572280639688121134625447310448472782107730751566236392685109144629923140944306033047381574708655429524917839280040085074758567508442504786539467019043971583898940153903731592860657251863408726632798716869417438881797010276046468369418294468741377627895217516773183283069576915622470689408028249534957821472088410401652841536290399088779189305899783476974487137452941641541105920361928150847708924636673188275631667627341636991268272785208102806792367959638294031501961098174928218126456009840334604076318355922281998100728775026818805752686986328082850188129264613296419103034316620852320662108831273291330483773210713843280730608813009228714673272676260399180426397570728308802587926266852395891697229560524685121592508311143267347688422812463475676555824626086170021999766896983003773558019692365349257146078064122884893422253390196244431093600741693811228271387196302756710226252222633326704007449510822336249751552528204596313001133498959132860785642314234663163525258578423910794310973078707724536158776585424871845404940033978679341091248029094963868435132009937676368707871961951632906175503468871833812431899328805765364917396017007027738708777393962162988340494012344944076502692598962780334723364704080265744472803597131466326461922504563008705482330937986418451565047736411319550392089269888168397602272676804680912344420476695482635932441748701252038437867611250173120083307682568791654749185389692857347561889763877038213311863918765420782552380789141413450788113738125821513510153576647090282594360641483835792084424366427515578166455406396006235006335012346755093696044508292062390939478718780597900844397700368446617381613946407418940282249473566378765912095899776355205856786769476565308387433984945577772279556693133069123408341690377549396998166437276321512744996982662939104768281435145852251335959143335802921998756638082026545254667562616636485970056790031600182355049448487588404710625505868681960984356988024147277197960725291093380540703436278611721875888405184567859643041982697739179407113940728279170992682261461899851042565734071316555734661767674303134330867439746516801321079089441633062693155925238946864897051634298498280388699538930724823219868772924727503300104962385227763224527649209598190600701617473858156629478276319343269819375984604346859284828418807188439012448907519449829627288776231778891368307010377140259278217361975540147471656601782030270223246198139103181015000631171285911347564450328372101933761111761312318898943160684199841087033336957735145732154429094401513756339463142162080896392644254355368244257364349245411314622636709973547249156137909460439513010311713571486375268953946509689482090157550685277375703177404609847031473468313955774260751952717137992764093969063968150149739212362955888865755972737814187390800286978894413140382919322794013281494583077361629674395399729499185029218718322454344872340339980910135886599971872820731932875467501531114072438395542663520946465318410706586541892419263539670254509613886979084254674357969708651474068509532212859087168525272469827733045721192246385116266677696273327150435661202792635031809125765739728345616984996077325640875858696846740165573532391290871066583027275655091224810997602305316152050329307449066767874001229847815351788831006380443306088610859139385852091337652161566558777830336211314091662871871702989630084005479563769822527449425821053375220834407234139603510063544325704948081546774092748184785281996415974497506798823164405504178997021673644900694774609528164926763333141285100707796972097655341099844863974924960523424259153099299943216471422257554140254673478867536794944404773584067920368301992768149023123569926001700261177299328883513797360006800148650473948585710436998629331545351342644836808609431742163977883099394264152182884288873563043976372923336099461076302007836373464817293749335498348625549033089273027547601475680117755771582127923599197976883616923901747301535657639251773714726449544173007540154127243868612503778219207077467906621728132650263952231000151987831467595261160525887707264576549198748297555010803991729467580520089907298297754179695513195152091861267947272710393277452545518214559973344516084265248444862016957883985802313551199563396349290513541973082554971325374666691524400849581254597617305928294803134294184263109177913485898563059197561027661853163575382472127474708040213319048111640620473909624639774159779953099287242123784475738988407809788238425613132032976970530955443343561797780025296009991637727556450254210076257317618452987376568867361509675070170579380181812332248299031077074805906976451884450829498909223323931085042962132119991385364499702433304812839594233549119386574002899547150868400250597408154540625530810624987819649600097776497439145521276987753164210901224988328624273527317875466107059017925507482143634820530217686212092004009643965498197138289517573268224134136147636250866753234688008746904149525830279847622074444477900624279550736055866265459823242417641537214517940638570573518732723702488741061559509923753871826149946552500730388085211896592947544960044919013041992950811288737678813870066675947114665572680470067923645527905403295674181341538595589032431095093435589587712331265430260029399548214222663708795819957248304691557598067040706745562303552759167441749402423747814090809563310300297262343064455856297903848988521080180421399404672420731767596351146502090840342023638888417155662344683390686319561365572535453476568661928761426089895411043686449712616663551637514842361298485367405276798669760582857374114135753421750810432493074053562525112880402573427058669872009672876150306447518130537998829926393550940526620237874068644366196607488223044059027691419753966895102310779024099655224665465481651818353771468643774787714696143994795994052473124057718145376827087872758566411724669240315239956452994065328588501172881101846518106894597988067810766614439185610372124502740754997195634019545394709281893121801303348326896733498464376285264382152478157404872367086941538384197320735442855244809564678534472504653095992162240566802578636312327654675391011159706864501812028792536322445560173875052523946692782810328693492619435492173521160099312493478333468313598953711344023984619459901430069700040006685110835878922358319623799205637373039494624391149832828898803997376741242348104496613158613930582489644242689925540690750994218461853708202224378794169849603708265544526878118679650732984626759016088972538127138259549827751696800403803595661882329486292957382057922940989347920079290116041240441997470176515845728127587552336602871145630661422310479437616865807286094484394540479145745377261099906732912963126429304417841917731463051363270683033536383459524548485407462963426327482715019786889284307886397782503611228297384072543095126958163856571361260134319480175323398215071972582937115770758968193490666803128294354701424279435626590879523971879935018682486882453510881926804772139582699997981463619246275568986370916292425172018242383005938374705800563940562980359524687427280817338421567515426229609177453303565100257407802296044716968388896629567020212267371644103329125183628314945283910044506665390563844747711771135295561100618873540341102764116454554512990358718018446064480801052338642838228458998002486986066463605091594453223451832044071783745065379492478162762634259450016841795644259001655714386227259759559822260419970376352163418117815300983704951800939409172800566377450749176003168152896424018387990259126937871301046274805620978588775845959939718013233094086943193931493563336537661508613718625420870502283544349178110229301069939422616145905299490490806416624241179898590112430957452805722930247759970746037215827331727966246941627614734471150460179266279571266565308712654735788418601879799159064845599765861993328381483522389111467420444389288355441016122700539325258689626572286770226050959871890295317885478757364647726908585529721650843338884140633488127216771599154185330713798524654777440087695655495535789482278025750257243039007464087728712267802029547326492340853410379619118082112195343443439297689758172345431520379151493191185639212593245099322255303841519155815519355232286071777253539686447485200655212932698218161427180862784194700783639903133921462031953192319477093591297103630985825550038250928547825811140978726842704533980679953342007535752138105083168220326394881505999257483357146623954036709195336785254689962741175642078539165799392099187654207367223145463284752180831146407263613320109733401077314526867500325729913521577790295426321156266113594760946816551757503995743328834912063256504527178248177886270094181343763689689671677204953121804945418081977072631025351662635408940239291282499271401458845373829073753651904204510825891092367962702860223253637459394755067925348691612213142464015645235991331871388000409744678857033465016940483181887975464991685168759036301957423209706296824540236299280644134362661906606682291507570434473917755750810317254583232658822577677320801717836121686227374401643919848810414815441701140544488922439015555547289223629591152135126077023487721640250407692183556225224751342124463654374233686761339327502635018530549674497270156010043176387801087084937107882376115899780450254064995039954235387995417776789555732421393448866797713133188359498658220242742887730324015271793276720209783701023784172820016197877414748736061561453218868687191240421187699593496593030693073234106060467933603708783816039705179704800254176981046418341920694700500394977272921599916895862402897600824702649886211518948257745324532184169931690081449113285967407282554971844571068994378503547717374096184225910095139978382823256130013191434542402096724644494612923584066185280273994041744928592963725753906206607696119169108296017076956859896063088234454074672790374752855034796285425679416870353385353365192303546499293737859666857569306008151738920072684681960526131902130874452493960756091399907669894568976635932529430786135357746392623593101378669977755300692574510007708371006462680150098074231100377312562001295048722539020052565294151068685919933072073275540523829263597141323673195012808452903397137983775976212142455656900876151128897020262123157457028078271810502698496701161465460623327839101619868342874707452909439243811688304157375951983302691072131168286485871988265525405724174153644925959450777826252036176840045539915881235223182442331094395405496698915760749098374033776918221787443927583383261858742918672116521663791930550881781006490033287435961632845197293850318183434570237920915045057667430672110825159714589236238748326425882467094273774843658991295215947886567244336096224820316080619696499300901035425677028106084371213641531700076172673839858605840453927926937819602587175193000277772823374659799217319215940752178488532312818302014276250812607175929546839104559728464286219913992063918974631972381712867991606717987546008773479671862720589595948719847119553618966641869417637756022443165793804942791519483594398959251201021001533045367143473595610746324744972414238987885876484684179295605585876329060122782274401945425952964163017693279997947633048014657245919709081706734574976954869418501722279278738409500351148837098822118865053542976144393320585307483277101218713210206098857299299384043397979605028815260446196426321635792819336329789741042483940336637513171024776008514529280217607134609582176923258331834233014550314639077993049818446236235145134096888236847105429764242307110093420898322872325922604887689472102577210779503433904486546254100223451654939109368174371291897676925707409269621735977543120533239250553514201306721084361608776596855589031772098365067045869261307633991773730761399473489066543489510324752409166045907602758057055555417551385746038238713382231582004572786807586489180282105967916424901526229611425740155553850196425627774686361678661293301491141100173639732530835743466191750758757033912142202683328909074050505970728957777011088353537435658481329962985702752139055077248877212730413976918638287880763422663026242736927479695385585375729761340709212725088844231695970919636540489627475663318016403503790267282690034303612698445232118071254053043144104859667640187319142450049950201107998441290710450133224759960299754784986559839436062248254097578897164943889084055191501131799815411268949929499298563268425642602544960229274024115724092315611900292892327834052640163114857232761644258505389236514255056636171203538460288910142046992272431334539288665110124231986596346146479346760769578769756051644529756250556307513599495704708700100120237225717849854135034183187111321127792303274455226745011123896249957082491528573166406325240226562405305542677503624475940395608670455515614289625087345981577586583680110761737844197414162498116783851419330943161098694604874106910220193672480903660858655947154049474775352887538112017757529543852041377267959886046439121153193846031741848608698328767006912115913243834397818371690802898426925556676882857400742691682085274467131239290596298479948767203712113592546367311466318424511480660653325108018071532282271501360747998495611791194922647839957951120602982499488630713581816225210409034493078278341959435810713611057964106839971657340091459589787515387186890660204146715754734906481189371428964785059436487290372570235252057776610903839475535149124446978523009909687178053079778165400780491816230622964990119360480940252556872953165962128804787009488366936677742371047690688368253892383059256989137518076605940893158289093234647978595100625353002200774534787516468960007973168971288002141280050475402377092093357561827441629796347174236610610977515187225803758030129360247361536458072906748130216261533352503879466554935929554794151263960557896240140817841869298656320673432643042069068058433921498065125984737013043787703549765301559918699585653767834294721904509384310806326022572755590546696066455001318942236414297249522734229936318111556274158349905617316631393803717516636139829053126349778457429067533736507368728188591128441818020091753099203657385327744802003862693667390272520303970690385169786365476149200575732685996550929929662851075336949669947807764825738318717975806200334033751643951779248319558999925772023432481886871141954581784321164575017586642564169823725601364371537065649323404239145215375994598690774993083060560635267520398247412375875846635285548421901657659928385059138069274807916808440974766991082469697439561622223140473621524975024143659010786783779999455835661288898852024162315956929510742456496492157302265244181066435182170875677566245641443121081627376819886959917373521733351828225626175179283925176777030478297792816940611259679601821867491649356337522795195412565461749968334472595743450057639624114319683971574711016880615267852261570774137232038335930410380459513635631612021428819075813957231728215361828677870667992603814034390229640488748365623310595995428103730486212976894802594662379155036648216692846245131333770068629235975217514193103873300903321107145361906164136439644329799193234454340191203475400444236779420801854651674635106072970899739726270014808225630637927746063702507890290608251911371713721665547010357627788193251339753431023199044779883208435194395525623659520438709166332980525735807305781364243818017755512741419553667794588861850035652960388671366811611461276844297139113779645012461221432853707347245669207139612902506049068853384729892292856588150114461881083200631552965956052595202723162585666088015002684590161114198069652037177954573808711381511881015518208402933185755683741429032103653791358507755800613160520228314209708861999602513872556886111506121801567300665600551371128408616650342815879780088657758352776342066366365239754715907696775362358169759605529042707215130444413711876913026014039107806544438272119111322728959668247916939598826470476112904275636787819955456602599313737675059557556081121548387983912733702610945547150954758242883216146724991447164889529620077798063680589307289134898459167849136853080194257010767365548304933039059061940722973258787171948362246239379391674748015792543025389629343707566799780625099349317577381709570928082375703982482414354656127810204515192206575537300400617948105337550409959983920164126177657184043635436857881380173260332745568031623968722910153603459496537640352672261833860958436573500746968906764167804400570901396254008055957967131786218832005076943894571263349911513972867610075120195289769772868157558316422479015983281502157940564359994408693635452209031223401521473847518054896766418372809004588763091568068433796547139388065325993657737929874066335922413631375347106136240485354770860552311487115158579840183718282117996822412195512921045811986314902432875600546249842374366515676971800508985327476551970210379081293899871888098871865247464526445304833193815144354233506678842448154041586133889887709181907061564606434850388391408755136156494087988396512112890008375019211001790974857244367876050159246624350256436344040837062764407397489967515099236623633766873431089644288796456781610720351236476090844013789657798560620239131596190491309077257125448254593242564969526054170407906220498316841499847439563121858030411254628181946862077878440776950278926122405464813880228114294114890243237389872205890447269521224122922018168114609204437179027201829413820580250768411775719371142452412263656005245507507670841596092187125737278930611452722551267248383894827745513132504733239893397063942706553583303690312901410214039577923930932777009141780178808657688256743079501277262183151332569654067615438985418737291077174468272451992382211712105800788298140824902210717635378950303798707310243126938845941796103077265091665813365533924183528720028821193312078895175779718234436245215308701236076567993456782898631052186257920631318952227963480616213507946160907742855398124625828301152057314651402361027124785950317019337365723503499280982623260239402057066088693739589942013325077067253323089319213348319453682358005243342037300899877842504220818337676084894642971062679283947080613804100829581229086214338605404393284962986589847462100213849988210843549868163573528336965500738319532542550170843109832236793226818305041539178389864723376197182102224809177647163262798993094648249207452670484596054651136996635917732244732897108657947409366227664882952566729436158193706607910336939173616403761942716015878408144000150304013754753380220061125415327737707657052244417178099295758827628313088762723175425583163308743652341781809378290210253103309450223821898013760040159942435992737131103092302937871533003492464807495528591949075746160080154887422053247790917818929283760602710235591093975047125873748167360921517891388629704302796128419085871959871030236160266776922907377197044320198951190722922044590518293781954378597959587521184959502449331429524019835369825571444719922155911048259156228099830104200552601655854389157637049162312584324609806536723608960416549765118480737739226655277299259080295472250363384365309896388417361901535459147375720229748516801545443192356726231624432998935119213279606500267749777598070503274654379746018015205970192750653831389207072852677451611881430690898040676880426185987347315789379357767751621048009499054913117199419248086764562670678661193920658845049034468028409723063352930262319440172166520741437230515898447228452757820719977830734759030151925333837754282992074426773188437310301488893229920585316041254581879815129054696077224712164069807685740992658786902458253987120711026759606616577497628461173580232759921440163866482504531229840294771861475923731395949845067478303017949965148165826256812959462835408210809729535848902312490806316372950547794224218098538789744375079439079517368175928401150096912011470355885605961396607128824112577232157288785941066472550520357720002596886768030535093549451678942478475150848329913638740021959940055189733826466701700524530041416660181685461555680544296762344744713585301599968290747617792047531744696841566486145125938018842655822124919195388257521422228236710925831430881568275530560371037485858465581569890506599482783810907345732853366479263610005235493205852329833208160110308001288630627640094952515127621204732802059382966643059891453445310426649317853588501481482116657099895213832376171639718161236734960507506080205969791814657960618711348690814238051656726322001394333088821174191336598890564999478439744710328089792326371736730872225545937228106586368458227276207264168670825366866538656847339453827088759923805022946461042946663384990282412356585840218525986719727118977986179959286408626114176513493018575133815614849212851433483900100590447604802751982434749317888895234172297111919754661316107901210412099990033506773125328789932320781713457821508890231291563787831397962544495342689178229364452627688481799080181874345552587248353379812922341518955649451159347902667402971753699944682991443469218111800287601197392674081838396106533522738849885648982547938526634783346316097414155459570976268555576113586037911675379758769614206276569123604204227778630622219277897610453187590053963427765055559896502203984194619401408464789362682858981398120778829024927981637370930780544985165100852394911257415119151460393096057568411899681135542775254537924074390703113727249101686412164416656550112996314899891213432054242129553618892780245078543037620710104871167298815321507864849287231552865987059129640707763372814137455022162703355258497403642334783170487727408150928919101699190141617311612848202893673942951293704327003443356176431149991372042591202759938340011649296460977182709261099726843423766006605666045091275040692690854025471744272378344670607379242275980522156453567127744248208346951038810368732436347448287554485488833994270771467444652993651329762184189974237888944309814337612422651311052250233790468008623399673798199168257825142527662792789692909214311950388727611806727967581110523206540318070391282874580401130579614474160499172902249927270702164290457134849782352845589314728120781705575107821864906737072056061499357047829696297843843173582463463360477993246481649743137579551970401308973809305089375567958982269558265616299899738151549842993759785772736885208870299676780916555634908420008651127462707293564791593382809534562656624706525528060657925801648956347293623734052875534281779826867397167690441161772075270201576829343649246341220695266820553958868035208812924615423949745331275089203760882588536285197038534259109465717788726750860707090395733908121053364006099226742760353498490488872693954617386513828902967896044436563679028375935912929653558299759562861249507982786543294829163286947703444655444143154017986426730725008713151135775881345676347258928414324068007508976599759431626096907182672902934925643147589901904446964561957303893886379326327143183882427520359465906143305910655269862214228034100835716449745587937126816051442435124427574174868725001616122214177833259752528572370247316639855620195081558770462149362622788057369977145106638377380176790295984756390842108106989230775496113042737163380490086028572461803611223828112702925370546433160982558156879147469641938679926433215846463403999152796300743445730559949977158109254922981637106994051002956580927787021874946981527747829426969559076668897953203767700337139143690604200570267212585198517599228625384316500416981613910641221947783223864928112602108344809085912456259548398603968821682665325489635567460439300791097897553326102040651579287961226945925130343818816860991139206382997083776501967548457782854185295689870904183544989897297819890671540996469385736471230550153402651976650083111591421566725583501402662686450806166185767132067657667349429898708983125775548496601601488708315998222755265867855095550198645100742036115891408569595029178596045718083922385800171625077101746279179341366689981011847565102073265492094561850260373061836105493351402718680993741892304989682751788324470879274868201741225304029847245620222340527643047809190092278069769781214303652437823676348482504332825660105956291444538200148163384812820278142960843306024753361749653128975067485097776077778417131602241628243943411692036369071581680790665216615427210301277861275559441952512598356931717127086897553097057222289072960883920802282535786060120056082001247359560601088411179860567271723952377474624437035910299878229222789867984441840811981193934526307127280272041505176459134009068973425400708173420012084478247438048602917543025773960584385316261620235141744058266098458739122914204421941117677713285337620638915440157825896566387697059050264870346697264699301503956039299790996414977830532054304710525718898302162598365338788446929641737005675879400615578054110577141942491316142394154894772907456102333345634067029716126200686075222285237835379227959138012209090721094251022982412216090780743186871102762686786964309242181198594797129272732335391463014095965803244813377075972335034522837730895552683448927291126369595030121825487416034501285258071578936586683669311027883743025513750216696920295374740598520184575968134375644458805771051522338070309089245536793956918015855706720951330663380328109269650941924110549283498637918976998763868929303602899711361678711040214342954166964605202169970813200549354464506618187548284448826603889923351437812679728334954673132638436900461357430941909124790777285273544570318999860221176512218567448131815585361514071605397427380198799605721010126136766555863651167838050521439463402738210910969545896286128247361665172998147446326203576675834066582730463061796475961502375103271803284930018693091355212862439424302323975468450935339057176258250311105755171505476600376208566378379818739449494485608134023032186067526812318982386746465474455052931539594564012212631480937327801051068030639969071237213134167983908505360051700254762198946975604906568689092457727705835620233616615526076514763489101798246111832853903763007702655903789027544009162240247718041236020831681460124713809996028308023762835595110465874936006268058106264228095415692596833467488975624900231334198891894436839260035480542411522743941174198273042534668126103042922157394394841468710480113273241138817247719532884833534573583229275473687756291539808494550181270563919542195696166388903877187362206852143365597368279069853181662378789464838595364808827192681452517980918517270630954902121813821673096637623084739447744153320200037567390165600706337879417458813771249022051402593430373983496969987498947250396072301700664446707244839935080140427670219064126570046517917495876899415268676026665674230360957682907976725722515533486675792984545295225104765856921688271440809660960353063467768572828716861577891718265303881559677634437865045437383900095780680928151075783459594130681462479689540636248875732719473747910252544504481420502921134427720727499259259951301785020882798483280625332745574175015017418195207655313001799320905134704883561213955259029429559029623081130305024570892098783651262456631328129530036690562847381883317871508778414727376988848101421140137422046269025259891899994012151681629304056221573509163375334218680308553786667936735908596960216742046863798558247298885862948264788482693322976800248027048041022296312059135869083543297065728764276563919893721848464445477732911262632577625098378681749050237394939322661557285635604022869525028831029027332447441575342391756194321494368062037156189377048575831779747017121865437499438751823849977852402079633923380338951748844964698315958053980233478046180994081360119430006949852575627013014112173806653742789067223702081634415478054262834408944203625514027622659871424381297221624487632167536471959914915734711963674722648234335097048477737066784514419461101830653339006072376551031828831685785008237487175095571882633521526982420122223839163307887675110530327304586942514501508620853976980505008279047191849846769620595897110585151131205435605493801556387413677087896944148542602855914423570921501081768603801319053888705979920738020446519597311125235109248533854312075971858034625003436238112188911868818727752720342089138812514221815852399072330605087468994672332459811175440264375254564129651380951535835784801004645157141912500510113303810177569775919328392369659198526449134833899386112343634845208579981129403465276132884685863931531072567085667296552794448570343709499070478672315112194606167373994919803583595614270320321409429692979461604200101627591239136077579573326178642321147273191468683290820008373384904187551918312630213663399354080153319752600275059405443890470196178937289788780167265445825318973842447212245275090231519106314203230715419333347005185182984331574164923857228075425445942385023304946373794714652267956944457038161570108417219042967285013263924911672897071151134359754506578099211990446848047710479186778854048950382300074458850554554465649251104028239554558228251737646860494044869834273422226185296404197171157315900232817847855793408982758843137796000491304763376840480199476935541241066883567239517343855872655610086030636618732263856252047434234653862777040569801249251070242853204559183975988000501451461259620204884837486549893014638183208381495418253755378400354811229387809514108270734042311272890480874594901442654575632556421053296527106322186716120261226682568422232439021486025390732661482023233511864411269221975949495417880215064913030854029245130791886539211506020493211540779822443476308836417694022472493151512467136607817767093175809876744640792711655524342594431776811369026836928830108262512437024015774139002566978079107041350085434956199037573682724013229053246361634714047251794494777216186963009536639686628980461476382117757237306544083127986232332741939380623318977684284241622292264871859383891705596281324712020580063034752844465132700969832807968250763586975060066387878703950804404384490278125824345288585218722267746651846490158444654349208490001215455091416942522609425212093286716973516095483690925109618822642909709105365183829191372161279239988295424679406930898927593588527204319865992921327060245630821286575285584953599421553522886245247105833131787338512625417830620924607619625903239784143588857685076511946159122772119171951364569137592854294081442109423959015379317887450053935248384392670820941572628553124494214554551911984067432272610372681701231843032109494719253634255973561464190422337559971637916697860837742829536881770622858478489667381083131518042664931418468530414114957056936773681045637042933743289341098319002744885484200867742589128206173784159845719569643957921021363220958445073770299377656182810001374868887700268397041565732175171745656111488998119587341703467648353389657547072295565836899244124494506820934668106261849042106119233283936293414371547016682772957380776274436203506212535135740457918433862132368367938293542367283889226600004164927629837255025033647238556604139209909895010278860374285684440515952075528878555017733353625039939039963109008570767626603595619218041248894896801134602815918078231217000413255130525967946445518961300521609524058866147052620169175287233980479481287613416975832468572042839024623224712752095619357882378782443589175056801925898701702943042622397485987792318133328577517575811320093887671524729461638095266865255164550275542680723606644976122396320332423265017855942805471207585363659038833235293536265556926225495973634575819572618624277537112260101700454137102437705996175246148525373655872691790782226301889764330092596036978183119991043616666332544072158162740071566411192554272023673769398323217046561191274786645646234025524327273074911439031381319326397032935721606615981804387213636813037364118218987872474076679912432915655699578408945986222567620918958154049383299221356615468548996009345310216848762997196995632147425901561177596156009796979574586836844112998131008862384306366103281893216738895826944935225396199628743049169401651901115380914237502501049434697506376840776643667915214909241272161669335734539666961456945880604835046026229462079371759240096079020444830280817281710309967977152080063389115200093862764639800558695121429013477228387042033259141289094562381063935123953053751884791482183713898113936918037411501236374992741136786188727949209343583554939641466932038271645763076746527753520985513170636944120785417980462561943422406421616326708932825587058827454710242932534739054676685798981155265264782020688401887730773486006082910256706152455948930420614063024986859956663750062398143600662611963562085109242177711804821888588631992853393257656891890859630681689220086922794042471387318426668647680961308861094329715109214482415553466264050523230393048072157854873837262323031738096342559358555908778551337081010836428559594113779387444488150881584497924799960014933094160820143761643490193238731881105512414742462610084079065607441504841394050760854873167361641489578337335822147417740950416956115896533456575716072380736447395090782791464262737376594678557473374800589821771771425121427310035487136329893517302008742008826776207820521659902375769869189570843123500887422085579337739330932577649559411848071742969471514408950192679987597491151270281066357083973355988443463859587361025934625124323321192615727944319474406191850334117330545188856671201132477966063998906836948719815596226739695368009821954381476647038857520187344447197857528303904701008526855246418438155867591659758086409144889509642668110769916369956819588198180436774953399939960923648271578644332626155437908739161414802783257951540624382452567234045713916239945722841415613927269284378137457499618801914278289014559287397277132138335857331961260300245717133659180475754368842262707956607660404654282349929693286033447790162094899044272819198759088246888198322428648396127833782402635656963110726642157309433976221424480046221329492249315354204177898201019784684675686981639316909156522787514399189720681651608449359161682921539668786994970890555812349756196931151464711597726114348573519356425415967531029258200830993554893540345604853031825051673632463528011793877254475452820453859994065647820045019900455883381991554659800157380816995614846719843849334767585849561746889146892075318816020692417848925824371976954769945642231850186155003587573192741119867363617209804553823618781397268905501982960418271792743157065190717080275686310918172169159703209105552009649455806824329792957850176578312189614845434626880148848242746739407340859862649146954750303060195324511400277306885178798224194477960880582042952784642678834808998558039595935637316797010305160794893965619258933945144499522372685529887234174123477816767560053708760834706421216415696874183532583049526279223653168922453516276696747981455721699149979728519905550246743379968498518804663520270059152262567311997713518608759371013829138781885097728635770277276898601923565819870113468232544016563550554621956828498445601096534958200427985907121183965973768087464515344156264498858230020569920759367525772839764915095740426580311988761674373427104796609755650186279291538367265712054734200234679823756226489023980253477799130341417394850510279483697016484145447999099368571680987970447891373049786067967361119439786029368879069879413276859196126394318754604397914188556108240260537755443918032853649966321287879621445655407389371937731182863293076780312783188113277140185582035749332141671031335972543481388984866637157646031871310159699135437186073280195771713960071022912446224930830511359848408514155285093068221935766043313951381790319031617011991738062289018349718649533106499571391804139242629797479596964372562865283839253813241275319341872822567686313296532649601176006427631800122538479194568290859947150875527981260621062371842537020182671129053441138131409363818654850388669427381981985722141539621764992037834868232881026494189286847812720339659847675931342972908869950490007864128387730109330329283908024346100164071250412957298993381502846386624353233029236529893660896078390565797334877079145843986486466853784462307562642915511480252736898621540230548153379818250303920136697582363822803095148311559413870653566393358692640235906370288746013872323543683398404449571026272319944688783094208164500642985121036502271537997786489523156723517488333545063404731521106534214407043068178562394446494870282381295904692193082772925156600707560066279050857168423212140408573741928267515754050660593922442444925628617799781753655125556336552441879762327493104872417080807302138103700659999836388228035496827906575588187947834546313077905025487897573561690386825713234463779229820811773339694327213121692641274014708925319346596418779888925260901175111512940606015596133809074589120393132620357182595943634520560543097253056858732571254624147054629418853921313913283421443667307694061466602360074427186164177115131323684788779182116182512084358596884114033422143728259855900255129422652677248309109777924279239550059516233020129199620717177601979554590540597573897943402904809240772446252068747336884297618033987083877715218727718155736813738155912035011411564976723146748957666140393258989059003428141334194052148241956137567237458933452062379886565833704942537379097141858569423527949691994213847578497176471570682002596874919645395964864945582789101742486265486406365476176234973224138434766504827844462438076305904686113063163415224625731892823738725460808254939273205421452161758475951657483773410059677712296528015240159614478522899171650490495404700081572033847052553021867926258144598241086542599166712491332744265692166875897693472391508154584551902979942211644564969094310964114419063516909320314904117620382431029325965400518165374655646659154356593322096749650341400568037861677898252423013332138180893417650345894073214990930054530223780757937430552232279728459734059133129293660644792415896540856294248966393230407333804694781083138163622775003981314708659253131523700634835081708760346467369691232654696237510640867570537051677923683364562786601846030547578732613240832900634985618699026851042118450563596353634550604679858263299189951926097126850769865953125086033352467005313183800022452581210558337728805717737300619746848893077142571163916496408668962555058178918418857511547339781107668383149017168504607726083724626279398227003530290942267393913308893282230817099582619538424751698829107175953284354003839192691855216645521647147923206929760022525641661970981816529673794344990410390688636114228838272441257414473426065745836257022736529722066311867085731600824845507928144167744792424514379098497998723992982371554746376171143504982426285856358084696136745542401310367342790706433307246354795621246666055393391845036827167018616834106593931592740911855069675971945133663058340235150079645775039051211744344772142025159871024106043323188110007007914962115655234526277923392416320956402438188600185291363174026806868667760178431043310850542047062545634778276793940206413828083980225560126427957285073310786308903229594839287806870421598325469219096618344980401034684452487269774904333409502990471558638443980993361557632297006711197437203517898187337021111505172895756551957314374240117829869217472706638571124443838908180785910553492971306599639236787658030966725114827897533881594641749074117781273916127181452940416858528940719881118641312114369858882863632036335840268460662677171700186784941393837826024754615967895375444788773341629359752837165833287320261765932623029051431407867483805693667427986218660987145624802691258119345455156019488448313422372841676485788265690018057256586312266710320978604881293489873272026148516790067827463993892674897545417628164707761689659786368920753941748932601755567998322707913583642865765550915072631847341078931226585629382373603468172229532843661122401245267286841214886944177228445591666863566688131877799653760506085827725191503993007211041952238410995694816375325783567258390426310365727500014351060772398561679871807913657590191672967932546178200895898975455665518880613900942325524444138022793404074434253990048563769719460809151092049691190169039662363530266995631252473428069775637106230818487238776542720055980139453268409700742024590125090132074883244477890711184650452925458030696554860372781498521674854993765580922624889521550420603653936988912762072792411802233318957366965642277406919989467440728236565355673624969793042479026547625462753427396467431170044295397290859772408334369101613960549278106208423241605660015592014474301465405302129309492377375710408128337773055763526641777439422028211588640793050548234113490373626741556167298939285754919296347044729469099555604547418756820501665773431051521393130433124399123195077928050365661381315031018226979362413796810466859819250959240937777019211896665071651775933177617707482631889400828163239253896793830144151723238003941255399646136475036873826738446226603291528155600700241022671910896856754456161598556958176820125942054400994159020955922459651018751886262657023747590317424045523929217439053831411947352937978617041631809775256422065045654859678709653852150779392965820742244437208979940145604931787953010509679429702775800399784511681768420623350841041333198328131541528185816906947369041254654130078097700478387303957458963553918107543299307886833314117063484709789796433846712632984804098212186194981252688398438834117936116627321499184042472561840488241342106252965252675319407551712391774200121636743701831894244158837575403851056383336930849911266710127442484772113919322963345187247416623352836944419381214161046292734179967376958198795378465672259208095463014394696496445882696015043958419629177354612917657210157551395498679533045158098636873662200956333986530499490337393202027796021091259153183898452532969413021575133905505404506023028714359312807407172746508266076736129476495353907572550178135191751253598364813640376854986751851391845462963959631031173578438997827352010868852457042644422513522765037003629309646177143883778771205890806806264135510577406685149428360821196963070994947765751663715358331747215564650831841792856484037160843746687724238597265000523968529243646813599384618475859688992370978400863951996666425729636234369536535015411272573443777253233329384751472425054283382113981805352595860411239015528430425584047289245069588079781542131954432145878820352513754379977050600302757598833422637852089081612874492060753346638333739052148322291599138345385213207576487461221183958634070580541561741200379486716379539655881047310962007526033000394604868237831082822439866101077395250987997830034185550503712010717618279381273302249724786337592543341756136685337624486437833441270494409190955503426895642263689471094690984590773656700611304712949012249568189623203129196911548461165229814414095197578059141787819440096997189982427567027068675231463118521551238238348383855937043064613575076023365576667851740359605955854100565017898228531316913867889955115587039206737827153651681814073078159849597252480306897013178639771995781220443346255210752870993522695614549611464004825434766262286157950207514826689980682586606822448727187796756114461027757083127629893348231567129665005744949319305089310927977964451266432814811784026056100226892115104445817522582649347274563475915330873933669878720917419698444868393979033737242725298964222911348952124651280649690371776190379594080750627186321935025884804731149132703464463760782812743344146650232563360411013740504798923578447924782889806822081639551559853001168139441739151199722358160212778030623690844515895630420468449644616179319796894841220850869143124466645103085938234801373701920844617100006997398072535688861682398668284809377893864985249381919085931223455625855439873263145451821080258351208200331718041498196046023968457046316943223837856600856505992598896600664006274807472678742434504468937295135533411491620440562353743443915672042875557291103126466133314214686444709503661293446966009336557622731829420591934966606685518228384913724352059845434203533597658043166330768527930734070796841039639836923933065429980954053119555447784315181434291105293208662098455118446119741413516112810614738443217674096358586967294731053793625179525119985739282603949052699597209205007790184707401139824345515017514656875521903850017255801592841754494894239773847490831828092358358217491601199766602411957830247811287023628531961846301406733979063831433834354182205056003566754616113773822666521086323670057424083877604528131036066124162845637968337741950214608091575141524313739357031080278003759620137181311401530183053571766308796818350040687685138532817389264841861551477402096286044378939404111851006413038047408904922400815476022336559574714200967003860781278969820458057438685876510486594266465745780624223341214411868201628827165098708847516973740804877143786191412759809801586584870501947081999264929668520946165638185136988300289814859527365433863298890577965997649952116303943801692398241774562106357633358581103649676167897608184994003905947052786769803897767615585141946555437436086955114505533079748924497557239000364494676808857218306383559228005238165652422434501963732951837640201276892847421901885752502766491712196055542806059537495699553997617066688095050438108305048087659937069683097694551051573009049621514917008759663361949775116947452192945083435077130994944031284685424443670484137904706293916378244580511775428423566772143613416459908231461513263901754584403226815488840001638748946163225665071066055545002249292533174888869466126527902763594588609958992206869227317590829303905652345582283327611790276573471161429110828355350521426121219960386657111589734935153859400690829463066259637890426487289593555636621186293711282081540985592747952055736687430759749941559769667108589313941530907937569676157270399303725502770815885591664469749864706616228748137594303020422508083505767837767786557235224290796552960551569578984956695408560361450977767364519647077669412778536729369271093218771282258406425747810611181517211674927866328421479662411894692830439882891961405358679011463783822077716183422057335762532835153811967816250048065077824616909891466842924623741672307398572012024068792108782954017381366253072453032285145718738279797352042443644814213716996709171967835766554900809048291212203804073862440568933037984416885801021077215933369681603985098397370329819394186581510627138707931328989643964498694251376677169411786167427438129950893421162737735244827687821898655385430094948308347675345702184967171406156628311046860378024307051326178535099775670203108334672234052995477608601789307810841428325502428199775991841872656106953125732635759266026240770888075237416908140810030269648687608784213327649273442544642215219289797851003074247876928862590383750799644133173453160683356512721730695671767505016027413856600176700578850771647004596573350859017429756130351068393610220827391728021636845605888020052286581321313233276977869234000622955120818275368067364371080877215258391332124172690542549702956176009745194840763610715542738183478599861527986136904385507676900305979793705238415519134986245317886234726616351186800721658583579008844267338813526375103386100567911851256659714153831465853057910652896128347040192774975829393927921567960054039455943764620511531523859305491334848778799858063431794887653430665753216917893703232579298917041923592111637241509472082148948828477786185902175243743151181499430698692704599069112802235272898863458858315911813479479362934010289548762820896486643832369440521619389713919771683831938948523907334284874988580717192509237471149398612818464116917695283503042780634568682973255418301401770229219327782463674176749112346525872651218916946757829530941072779320509993944930524729810844822157645867748548146820511737263605292144401322143241484050313633022427304433034184238990404746256115270702670189224675966172734829065257325758184116093069216800579525358362952823399768895028753423387960080422805962357329320673971663215076201387080314650825540961158886516745077822537015363372010170295270893632360595377512842060522205678488728342529668451470863913614165429071758865048330861370263989836942185508354417498387063159206884636298221488835067053398825604903502466324430634607242923903163312858185402731118027045050337984438179955107420591858135964016627760068297074136526197789977761349337509346889735506779627097661298840655328982409497460299991984233821010784491318650588967429127131968077358891589150308028525411907585030458238064357767668816537112313136424926598199653000930423092876866064103701696928392780543382161532743714638151631393079795344575555190142115915688636489058413304196614662520237731139287363926200399960796765684523367162351403612850641905658317297549384954972195162875918364045937108220730661330061904733700878721199309236179537614299532192259305776642019867223519897033132189637709949842002828929554822540416101368896105778037918559648733190612792324072496951484443593253263461781665518861150413596939332818306190138999206289506732657770507776903032804577818834027987169026655258855988062721807666074778916791665397423797966664205979025144156880884302151145653653218454541315850333823323952242681180528797024835983494594141340951995750572171068383990231699949945417668128186799824352029188430638002253286874604111001442492385040946947304032931572199068648251998580369195235515770772173956806367865482975486187849285795206855225516501636748554649906622577756652475096241948900720866239022395382349299629136559092144684060034259356499350695819414238645551036424894965019654257879518899693062407639822648044165670760264740685553548583267099180167015859396465343107508607943855956772641475402834929154461980195933991027495239520072695614569719576722882648323232740090773750866381921343926179455220769880489034533794093022363533081825701943724341769404682600295329470822089730236116570319522642839177040600456287744814480659094717418726928701413944497036790183674690115121602405825644749780103876217985264532665654999969177203470054966968549438317556274241025005719870189406075622800874565312377785582460436429034364962230210598326207832841945271486643001568822692684673962080404349068916765869547621793850584580176640291708980290094972777070849177530529092794412317556086463396772296589877200499318244181637486885821006734837149526910140838330613957006949022237570905750168300120870376166399905845598293477738178981074764790154279581304603200326517577594495033237823812099481496210828995430678767130598806463391895592364512635637804381554957557554157815887089336758460411397673346533040912574132880037492950378204922707212954839404280487963528529525303923761136545177641515300108622658026694864126804452377118026530026555488502536126864195513126757330816851597788533253272523232855751885966624147887460177167380860244658962790761176090886333595821491371399611691721740480725324196609138319602325631097490570373697894822588621449098365090149202268861469468451082217469438281705488879322547861405632262055793920423271650423395034247256569846133947890572954416786926827487803749644139783131705630370659125971514009973359385197879574710825451387915269859948798764938049847055764824353545276169889491700435423512989249945112994684051353397186637833891246031984231162493141963735485101300002639307059748965343666596984898742351808291300949257508559125203977119959328522832206727541249906970379666188794257773360964644380506083734927168367995699421453069190946068297431088844696892953671101650021249895391821642754480221571002068839002257822520537450672099026325902853428071679789187426163946550270857885743498030664951583390025571896561736649298061535197996244549145871028631001509031555857698117655782355416881219963897553341346356214975920587949758207281016437935370507998267988952149476359382279272066540404390818255148085586512412596156493188737745809218559659311053962972141570971359785251604275624993968333995332928677567862965225952588155761225353254987118438305212152151676660693651250321773597544550235142918009735502612989928342077161252470109799538789937304605227455732679871207561795458614107868143366915584969503171447423618269420581492103585627547465158168811345979470113552584392977937877389336578399935518503988551237523851090951038763093620843818057926167809414801568611204844047524396792269906581349423309013200805443836943819521583028418703778513247296736231614941307255784030982401679730653431326861357308865394847808383201527899626494818191671891407661606939710444967654266444274653432430444310603861148667999780251654627568692426810823709032217608941021678547063798607056961096505846332972992608189379740965268879733611185798131755114511294945735674252588463224858956302024138658531282044317236187371000668167934515299251298765233647848706009706096769467615438403340328415401614458681522384839709290088727515689490136572820191813306838978730253515159212816390521366699988854447556896570611905306691978516087591323332457606796041746202496473626794471241496850261327879607432303509961735146095522919076911700575807824561208309964811421608394894844173786518128737551289786199943352293373776274933743286465331178540175696655011629861421416429366867071546806147572152185931050904267356292040101052066372833704428131694507141387181274420401146362800151924981255455899626640910906306751822714712585762741575720274251821714091262893766508560948823278644615020687469139321935077079613024353723602853532856984011419625450316439979133927223823385291739279719333644295731033247089788752708366913413222883667506895207307399475626453745153133337239566201372901578592731621842384202008316931591621451725412664784307188147915890772544920275697001922519067038494159143372702437130867459252904189645035553045446182661520285793772254948187409187930425050043398322685666163069233750247222582052787352842391126360482467098935723670759736503149425245309709808967822532756679212414854574027698562476461265341797601779992866402494023223883948460728499802725778383913981015407205743045028457687577571624921306176528675675011582105032211248457763594756666953785728624824784222570994845680153120845955901199413396954452123929299919400422257057850167432057210096602984760611533634409613422313914872387829105672514805669584389494124131264893412941596663041385419358832560087209849321572004332937256270887461225918379098721601578172189974375773492252695711449780701476593578773574402244974926225780636451139012304766896318446520237826474302678351312738861001362499557286935030481525888904032527772130261150092757583199471832675563709417296543773365441062317644277359479576664327789635016722122270631340713055136414920387609270160509559499854678589293382472627975908355112287506344646716496709702191390452741976349923687903614335181908665270343021583137155869982601462539073168188723071280494193106853520682136126326864520744263264934937548542989243640905400557627827670971336727342354350837353662461948985862244404211901900442613923656730354164234992275296720884677859207352560072927415256909030120865337060008079551277108392426043781836792937093989844121995413305266563502697911783075698721402425970263788427623823872816823509002049435690135393474084457518073793511764743065391360442917313556746923700120298098913796742455328919400578489097458255571595890262254654034690134958415023188010280213231818128271028965868824177020831607199912905205411041745537910453944987347732915118005814311620767525823613338583502580585801362644820126033896311104859848630680660435409842895661576039705498123016092125356665396238769123560058407463536751084467315511775379690518231210903697742344300719977031071258140613516527215898262517408372497707996094103890837546511273032744115028387273145873093938128762931204422041778898881607315978530060213769631205012433391280288426904503936427076753580818910530932279142718007726714478643614730085169054253360149120323201512802623900608509949353139531447612389105181907590115323039519805743257408366615011176358414199336025498532746378497728046838321046437909769295365602529616513586373987685784616952353011689931049336027936670671051428919549305602939238188468996212154131660406433980542693731240931198652810770190712540076088230331584133782518491019271071783936206182990995473284487451225951945634324002330595031126762801795910637193986595871139787601709287000256593031440510522066147943262782530599790245260743862346857683524140725930943873750437038126460071780624209540160098928972306811105117366083639598083367026869386032897196942693428891440971610239496449957086887880003256637531956434946195587018262549387925193429230395822234407674234041188216475894109766514558780934933234345651359572106332448301612016193951876021614907229822916749361999738453401713813191302733240640322396401846548925450765820166231882107087323872942741026270253162932629411130227658181663450090562279988817884513237079575447042655849835360941823185444064696881522787748556060383397190012419981748875107629391896779735190754065377921076731457035737753252017377482716382682614440986907067916969335878446672158826392378276719033892273941386615190180242596130801256779765871767251893903403821065347401898149504791874696116147433793819061270798359847411908260190908889605665096335359285301373109950214494415057450128578489510998860249542452873270083510494083992884577577521324709674497512928057099786258776456078353010198703725854671114499401582310804988922341246666484345355644882156804839656896820455976205982857726379175668738765803928600907545885422330747103937973365472901393199361361061109019004980126627495024819744794008041720122555333318540685956648341191058452972747049783236420686003960824397387442945900017249845102252550991701258518354825047479466748961909407128118920978249449602459074608146413648289185727570224565033747467285159980235787778528600823552721422796106691391731162073564453801216933176705390499490466619993426555199300121528851447058052956014900275729927582219369630474292179761112247891121787730874781860001772842644113223016335690670362520500797182005023862111078696748068489522460838774227764902517820263482907108942491203404644222917174683111303389672064615752101114943894709468249568126798096150658014274399907931820949921858331031166614739779250809978198269096871033739095383832639200136438508250383393909079033945290003599201682317268797447807193133675206333543333538586558376879955712284036409396822033720150943658152532134584836687618461263310871354150684692139147141995024287956925883375329444348077114874665347559348087538751972628186036237358973820056682447962562634831984686783720217913851071816894633097440648228893041347964672882994930236808478009761684208065903590898201113434962998596757706599737786012212467297346418338618949502839856508558692120721813639777387296912543654212860064580744805359620237075057476278661679929737443847679574814711935987639416723531042013264802342187427088514416051757173141029398599138155235971249863819621926409914357671265016886395987992103463722065685148515073911883024175026717418689104153119528909968957173601383434022152415984162082023841832290075422398790392317294191043421325756075885466527866348140239603201310801019333179922966341852282506880739665211762811342499118518333334149792781341035673910242648266142539715860541204004616526787802503266331898152823332691815001743488875648890242012236822624283481154594557494411314084675882678776918922223603671957687796532226478175108469672955046704939316018576623998650605169555157327211611642122870248216993216876671231293377322483765499019871412980898771409957119822195213981593418893311497744950853701916365106329719106059463101522676402911824486980721646563749708954032965471216196757277321621297855856533338328301107313318863242147644022416490131526155214643111031958849321292637488588394130701893113651263531109911693800436782993285955212922875767606520962627641517183755262756495318065407702889013390438837975254011722817158820580420697992897609314868679221144591277328432219204706515856870565000996229096216430242190042564966025706524553855297507930574938999148083235638421624814049006115930519153838692509433605430292859405842374233141485290013593280532379285073480971335388290216313762028265707731571373070833770494849936743991764878409551065889556220793694993540887696919455228909045789923160129998067821719900576935406650985456859234658985389224956689147419667555535584910555157605027730493372447345899578895030509816744824336413810056384644726098881515129260962425321063477043059197151983975856159225209613392013537912927240014993969601869270952218852719072112951972536271385681965780871584072849956499429956562360802762936098308203630272175246409483033691836486472009305738606400955649528120430931925419812037549225320541389354970707724966336052958928785240312547699869572735011243775978921923373726271863318199428854356299325129229864836757208135888900720365180829423961719148450258627801807084896674155279030242726422229716623077868565190668837759055811629352175931141560498155013201643155895975137699526524676384714154939116529937710094393296240549369617857378845661182318744441030335723393641617287183782927076642211502922905618787357277983280017821371825942763918725080344839332893791633570907279894178141728541190616235485411427985478375359989221020688136527318513611189016716698768557553052265928522806738905721362838410657191291790529749637296319128213436132426716994808992628508779535950066183827434375889663290718337744347551562649361841627278995289622107462852233406154071796228813402744640134008730819677849301032799694359660302020009589433763510165303771597571875946456686118359259247767381005776843045516388408842253863365775858203575604090730522695242309153979997269910150608035581181548535640904357284106454162472972856382390380559331310609891960862049207256319633690044758257013984411397504059057219491307938244263137632181665908689196977855744000553543063552543397104704150427799399033306383556833098744204154658560148010902184404673440256654100071622188879674712116869836703729404535616019401376656261305556299106620714556479252760676835998892528056226133119076528820951922338779456820754379682263854485964579160289149618590634603993303064986634659618459392476435305762446310465070368592466728699087686886937500129299645524736208125306467791694038357472667153606067457747747736803620992545208428201506694180958679916417796386670030472943697272648422081873206857978397782982763378065868413296281348978489356134777919853562855543637824282752886794499825504745009651099641098557371033351640072753736555167101887965999351978112344444500398482516359417443161999291167696974642237500650113098657440431153185559958106931645295415238217634673500026153949837068904604487625778775524258976293593985443922352237881417509783018952345376527740656503464332453546322774174642721284345850494813851500344118476159442752469419803222301477881341319508062174151252023096830803102720440610902015000536309760844600831375719366680221247878864686298288922152975713600350348724443233296102965861000507588818312239351608418122331044642178525793594073630686379088538772751842086293712915792158554293380582306279609934172033682045871644292523619464505579533634870156003362763725922609046886623209586837008147910651350832499875838064421441287761087772935571330065526252290427124573812977766636253312421065014421891620844689621306911219969476382542800061242118176076232883988811655691052753542320371269203334169704504920649918253784825088237224059759675926751411027820592463011448359579790304776970235702915823614909473386592737081406781067181560524242975932854277871724912853778062151188559941673971561715148742555708842195275318076150321327325501895653261686219947382646257405960809128333878539468459726094272611776699580577296570631094224457902444471943134633934105533410647766406302100080434142368733833976530300072147724881628307601654420422495715141204657541867543750574352737562752113202488154462030515916681245909780727027687161788222696157045915189181821681916373876844733173547855534584487826464009996277897293728476531610075667283447345964492992704388314931108853962189714727237985226391092800539912274598849909137340880897759488394042020781112450820825828490686114822593110148371382032124920773318496777773775552154919703450795530105512797097156043203195827459382868869571821661897726683515400701129881671343670623074419529163048755562492945290880712416168668415232298182932384584413232092174850068481736491183462417615189216181180091041429662351298430829398106795897238669868078997602961451378453517249694143039919946388039886956647036017885386228146480284973279852613873038532179654680706290260908913937948430726766360325094569156464136238922533155884913551576338333675285262023457254086546483233770126908017723001819380590467778505493422865988387363969540377365645206739318101911591301808410036688834349672967302700990856635984280513328842328929009939768266424599925742776590050186781047239715133310695867371591447183550422834822342114792862080349014079749656801916410669420241244222017013876848019877585008163429336696646942407291998126431377402303546922284223031320431632859184139218931842190256598770941045413006333191011041627991171026698467325852207121702078700144791453592035198967630726367449656170532062743440571177770476512553779765586171831429242347912203141166635625430051466877350817950095630404432453892734839956978123236846307534529112876790556520452215261971521618829973453913929387430494979043907093905706636429565244027293012589958276211804311551419571317365673800595907553707036453653517925265824504119120155818051650549240950290016349548899240270828309812052315582073350850566520940513082269750359464930561631811395537992700529258627064922973216749692581337011287488571486315753354007770849786826364975636645250243968244241665787477625315513998501807372854321715214958164986026477176262057900268767270119186795752701091395141687018116732528682224225531451734155276423966920773508629798977795781401914630366802954557721172665732869369920519494982021605675767096391198657146559785984751251366235006703077587799336953601834934678206441587127889386185872630688372578790128443819074839548976312982459936052237161674290142912931272273967624332434063334068325252437113021512837233115704147558315455303958314239478426629088527770590375026149335665466459903683420830958280457305709771962085694326160589499020567687042284900734078759013422053027293251269370175899107555009382670144745355143023136935608550275269723573930239503923675408272485556725216662707834562947276638468762845923833127924136756984910246039009282972247470941909967006386120110217882795419609959139058262475131980553098108805721513210136543383334458405190211586984214991274032428682741666557208946960158802527125939626911566775499805156007530619241940750069086967200532032323709467680892303920093191350868283328580907300199194589898520361747790186263418201440060798084612534581667196191105201977206295452139252187249977276705626687146261815429403439675778652965570804891842090461700565619958666937228656004698020056152969599138911473000797125358743938556691011069973848604336210895357223384217188957571696601705270285426122765953911961410049471431445545791746038450472627401425504306857142759601787023289868184464524790942517313776546546032343781362269919148304935112160896036174302849732882521770378069886696365498404287558511381465379502003724952385513642480355596935698386477267306480870266654857774524725692537744848410465269623566500391294056903801451263785531595064922901674225537407710200938552135323188743021577144067403905188402385624938927890780238662832272014539093253363726096766638614648807007573843291239641950753160427584404006867030858720649137451930809334270623074276038093517524338048370405469524397962571232887945253993742106325125907735096216861612172016322063681900088918380628197839828955868181424143861493084369033054491349694638938919169100024857301385298053074901432645287307741489077361926546695161475576699091070528423012713229826309909988658947488156341854852493946894099193243297818968325302241406096718111882002411391183055567912538945812700377481856058980406665158347223243370624911317557470588905307107667481316787578172017867812435867647713301746603578605505014185575000866948478728636164919361089930672429672664364463833951508863957751057151879319498688781032499103791888858214715274579617375450630361688774648533671102980642918420001989372411408752122584644480088072168111609578063460105356143914232320897000054722542082178365514715923546093720528477316682870447405610994230235459875144381697047561918614207955082150828153853071115381782316803957051893841536753583494465962701712222505904449815129132316408013408961581451932009220039520519180608103014942538872988260438001894639084951225641568958312206514904498660254373535288355849757089487374576268738250050505088255849233437834355340328848868654502352546412306269079149000882392406230752414015197214920435883028428300568725144429524784790401899479618912034423151611201429127425277362675561807027210915440409865973758860194062746705753221957077167758889603588068830216675211295644206165910478961647201597165550570383816159957582161163139518879634419383694037430893865598492727617077959429367159346329134181529123786372703438044458655045988947605737872351500769825030424814318803892936369299065550586968217794753868700843365622960987113792616491413496231250276480045539948019421214030413144634510096580851961630186126592289215473373878290810504279745038154559457505564819076174744949336409000609085001326297796797535914491432370628873076998433039401215139839269831278611448108280145559081649624634484329528664409371914585326947479979915187616911329855533668780659350544778505854446696174311638212436331618126805345034167137831321075185739351897789352242445874854311757939779928623182172381499696870223503907326585904114436848144190542426998704288458505332349634778226821045367780334682200632015025749388323226014177136662367377875183154926390964134611432649044616080880791203390084551134800715984808320991983717988337693203203724378315180212491476814847804247333582244866569888961997155793831411397447995918122440618244877813827945959909895700387198104122566345598343062785684983558332949202173315508709029382152841932118382827633214261035589857055769897359677176370678698350191656174161025439539290222466125887448187481118228855267715799947993301000384768139774222693725079546340023234379461451248517483384982260289678759924102628353068837006485320521424866032032179180220762369180515236633148722493590432705016720668109607452475365647738478069268420823337857877123912760484838128464827226835609117812901613803778807493855022408635218438581156917210803612006772605854309541320975343752231172369194536854217669933256218278035131242047195935828478766218606085664539873401798124171929045434398640395253128408076561949340403914788409299991024028857716910549191888346674956725823602106303734945330584423876342928412870481149622546494283089637640676171248986482421311669587082613915754015200603374065822445907131178333232401875803881451907035326894132244210574343059173831008788910587845063320577784814287394743978810748476838526770351061512538713179097855133802361525948749110337300489993155454039699204208507912987299411914670018046533446037642338024304708385276554296551536900474098198846699394251808298014825858702790124580452930490193004057520778278266509787703394822124558786043169511927733448850388986655164567104897345169045942481520811827904203204801610466042165609203414640001991079822342363247794772415853772674344712691894531535649832870032487340109069483873893125678752052860324209426695717764111876493731767127657147651530836223758248071219747075348680986335074003644741730159338419757337798883559547897239474733496720883662651608436966087132526616971348703743634981881655335284741114073476270617089325537893650349605006277580842592485099532937676379450992146289873584700063725956597843020743190508139268754470377067043899094810750551694930562462370921579075260088919877848504198040452369031239359405818457819216387085781559626665879240706328683288746016375735075363172119950196672936262697401647752332541042737316597918612257488908579333273210167326525583141986275341387938954604339092773995197558115910282419586610982950023220260726739404331539779140198564124764807299233594048430198395954847639350907126272047666882480154923399237522800768140705936052876803796410905249114126337439954799725474854381339043322648259403169734272541241136204662661544907700229206210606987132832112462359466614639439211014092260246757989971203308679486792696936855742184165719551575718594378225174158713968111860677763985731186224408799074058251845516616061405175024285807061653412362649156108786163951869743506478795011989036354930388404951671672315351061682870798918298641719895837279650420075577382995645480784198354462019220784147778797498554054743926754491645271098783289178251561523357777039945627572776596846202936029920411394804937840891271923698007653773993875871082308572887895195633251765831227364440950032156942119891108901247034429698297933480832044734947060744073763497083370126192934964470684659028598404569809503866131637168058635779229558265280814011286947060566930985896304728491203518009067772850341322128668669009772837829333107850749542183594104631069885651781060079395667576024078980828766609385662381565708703161905757795144357769362356788889654723674179233802814119597546621417863668135290784367266498613268379251232714713280219554735357872245609718012492182206207807630193945780038373143860532076378311480277555876549650903698935367688152547273916671241702374641116028025028197983674472724795757627269310954074945040364478204035303650691080275432354771873267970613559585944038721283005870823455760869441153649335983320198398905430507710912634326405326115875815393498415724765560239667404971299737249107305199455114981088071828237724686094839590678624021572720514461814178027548470741694905967793015691180546130510267638450539671296458443005271329496350010140846562995049193174333256806559745601609096956515813628920084982741095090149995426180303422017221581119856782282611355464543219480617055143752715170369220327133864612887536346978232667698051385528244476322963967999702977189182338017510093987778102763245038327280863500680935614324359124266939559008475320413162047642181200377288541655680813768250559396855667168723708322293495185309486332832027825253041896912116804156382201738810623579666043087237838826773724630102850459367329065205599706611822793872991731814328511942011018277900831540490149744999959580675138115904352291508431712002243964676389491773392293849570794640832289928357706841706487502244635747670905166173770850214915538075884181821725985301626611021277491225083936089463250067610172634020393406779488979123680329724347719792810818728387245600520056433684860356619721725962786863830202375828262454326505865638714936143842022655874165573569025826807234576706285921394257679558745292111489795383767191870929712248347594357101435245130289078725117267857704911211371660145155950297412150111170571690023794305193870862153100144856682548846475178778653001270729984715034966712726544955847717570537376077756693044132831477006676970814615866022916650607383589476672618303139750944399933497948241402947513152935689548555264152834980898758072034830019745493392138096047537271375076494816474152598667103323549792123861876709044887428359265548203658528497829884437444259798708153877886424910980111398981185765184148320292439505041942335154058963335466270558540825431909881260846628128312828584538951129631573562499051848880814236295898902569097484286810799860819840725431792065152865072420295156526551791803579274435342110468015001917963050213790762986206423482733363874634963881039885462641412701617113480741194252899484841951191414848464020651737594732706220060069731140460936722735288349486145588645939083914207425180350079029757326803612541865719800830320403528053164058912714036670496679271211942904983010096732597421870300317454002326371247221545354028453351782270149061920784502774860111416171314249240505084341194026991317945246996975598669422157287850480806530188511709457165977484682103033815164944178725248174992254452881629892753602427844056002080508446102525841641318008836403080096767488118021206872900821380758294638863855412513309771073815028057960213462240455899279047305386586082886625018540802497105788388318080892337538939099186693647252567408782718290975968547370724068769963781071697910747480433747140031180972618456746655816101628345333938689869684609648756686324780744688746274838262234291894401847113418086789601861313709070092006013487758638834233213475066526789204392584931275612860067410207104514920622908936051230717044756920372575369310044122653494288236529879863598170180793089991070219683319382026570497896148243688011969067398191698523311209975887005101650570586045648716992427048809422719499389735619441620396188869041499415281775299277742723613733202192574327181940285258793173380458886905319971991208295940882722595012975240927271800358162649859838035473283848810269421664378290301386248519403025150286996504736161026757249190568415896999552599741156953470465803285222784200481908406434919313365294659081100633498046766138313590165457842966251247722495417127255971498682033261730550752023714206715349932192502709462870989863358571557202203992630808908046101568424821123500849209211552089609337600211112011008768883535041510988115100461513516652969430927808083290367720108767893064470499015103603040984177043437832081670469092688210030307519039581222944410694432416506832068839801610143058350569586223234156653929851975001519580830486703808480944274325026007221870803697163059599127236787938017123325620183025442042129597015295010125086541394598273337094688225820065365870868717104604990566679212645838579144221873479139594707256495092804104811006452084130301844062077973396761262492519183600906427253683300041936085232917510918176053696886946557150382405036739264820404887068233647027051828804951765802011784928507042799723766762273573959943736264578032919617961267231711830436476778553498157969267131965744761161701720085912215947822139500354282209262130180010479719053142070041942364266191076399828706169338131319470342457796653322485651606852897057780179555244498917552610218835540990031323646546625408012503821024022146432083308479803637189004799764562425740711205241059650694141285968297868493902697469341662550051438333087170425333403802622423903953118119662450354336720881526897103093672580888893720951778616905305106031193976039464215994835885982217871562458247652131453461287921584444653230410236053275921844126608429755029205192656965128287761430245144051791694801934558006929578760081248237449205164159197548075776569394782168703936945674469397187063384829684010247593120664871553658298460136558476997536548325426908537386853866723108746827278254649082061842335787013791677135729239969408503329959840599407560567655617410303640438447744589373354471261714448510021348612894159480063149050613963981728709233612688965720291566042183361470284042433729036261955277572541062064094395037167176143421615025772537827115553003070011095362436529722323798210185544997769486420494330925346299841683717482621112504548098937010638707247579490174663599409448515864770630944857508510210325379620430898666199048709548971939777505593856410711330636258534430406524185938430656720493514211769407020305638076867314875478513834901279120422850514582145151568892469075620896143247793415539181436456873133988004202258430393060314458446420331600503543423706641752446818727720177982826900715691212480606826615044787968628245222399010581287276226199545430898852156215270358749697752580777782006578375532371424303376921851938923709739393398702648063168207078229314158077268427487145161504035635063409947106920011630839797417233348198001689161966176212094144097991917563114827071172186440750410379162522709615889189804175590499415456944001557921868036217617805674853777016985648140192080272614772234970553220406386290992140782245338354448754364505787124882279878123206460782020016390279208574532647597987619848445149121235289977688960424271720114060703316408877068704618559853154394696710851175253295962523561638928376176602386126487561056943936649597566568382122228115304979414584620481626186060523139355920811476699199800020725854527217187284588027882489766497238498784539451150554585386997219458787215066407714018879442235264516238397121222505769893636877985071333708188597669137147529659940471585281505900853853852758773224876181777725367435796620851601390642118253490617804894805125832438310293408548804501212741002975992848387046345820535860368559182178366357433153723173652886948087818408063025630972608027387078845312393448799361683441998470346883723987216801463051224324658699774234797425109158779330336965772165446983510533736038866936523121937401720851009658970710697357707092184059610712466806213731815335896382565386772852827123541360522618279700379229100860659746714732022001851444463874979439163394778781272367183284893632804696068924056252966064810722481335677505827138102029251483883431637431895328342589524165055313117163346082724854460392899606025860765438481835580182638635823659589419243022471119607016975913469708829378931456349658614989300421811520292643587169970687961108744055829768068244557417070106861758761800746039696247703864865932319948529815982422643385477402562235781983888830022186987635266066340546667435654752680367506507444243119014309183945482939297623139765361572549921942226110741491150332100509984143627100827719013117016801798365689432700991089689884656226126716071922052435642417880706464455600042801569980303884896408457465388346704958631049781515651781734406057952731698759017420152062649145775978490770773104119355274207714350819237371084761657853178615130851127996484740122342651717264467735161949550909329653438102786927497594184063018229559926174769531759989574682769387377286593049350421789835848259028448605124788611912064133284903642451530414239349798315718006470452183355874055794827991661048663357298487798941266298362850464292992535812239576643697073204506948562208176010671809407045646295814057226646964021360253424399951735666556460258317358246555559169694034620227940296456005238739457280890624677243827471741984928844667385966560147873244960246797516358553403753003691968692534417141024405483649460730933189562270832407390401844611109811357944485251319147834165720859541092348297592216328176618617481425604908375182562722072229583372257929882118802512263706723598026127671297855398877734202938542752354518752521510759258604716356710270368053015370300285374301351319001559344964707713911282226843360410450974899059049425256220503376501084142852369315692459124564071560574709955477661367610571108967741104660344407114224231500580260447770801138569872728200857336823177619479646014115309742677316915267328238935323479423812137417369785721012823296628780369287955367703259495168009616380563048111821971052256989464587542416911599607177222275804911585327304088892860660237159273038551767569942349474530491159169465391349579970323705080730734313270504083303556639762079026096938051434023056482877819088303567110879266005267084602597217264705321062789007108614089388573435495674622583093974289344148670000021387007236802876437886449837671225661447934767791773842090786436938599974798281745672975289171068330264411805301276761591989867259100929823632109535557323463704300823028657092770189678752246985513590395581969105643424044864109337679765485330840451614418844017979885963080767165739997649172656895107683586491591735689159340586327044975709033008599018271954163879771750257096700971767429017500127264671908683272464933506072717341744891882747066719262260371992390949955019464160647881225282332282948102511442441734636418259649856290765819998402736286202889409994087259342820784004768115073703268327451072776751794844315538188708012036192983993005653395152835832164215085135727432460299565978900219629396842401952588229128600331179353660035690792479585283370901488923991629035974405430427263247965253382281518022184498864281148774553504934484268364117489646758475448720390921723512201587332852685252001613610031965514504209236610592796283565849195854070930576507595898668707200460841930498701586125222907196304195619554836237953723923701892968244242502234677952442679650852225701807432811662515734780501642809620920082823085671029599577145354915903990766538851962068685858219626902065556410992856005242425284251139693195233312203261237591249574804133915209764136687580205422394117517813647159807855087826684657745555551917774389877239162999092280829927362271287264012598125614202041529601409232343836057410671546231787673403912493246465972358042818349172039116911773490835689506894980374207100977020860252845226524192600687669308026674949285532805630924451569069489186765324093797267375620753256391307572311947883019433910524760536095233972518673021040687778405055201684611189450830899034893641806278648986758722132448963355432372852055717967797783607784251180310734846426570525694140248834977789616824701753025084575847342741049114811488320611808520912569510449233685454775562613210867509776227848554233612949269610229337322626180248537522378673749028173408022190673228054601498149612724946475198552579864796973063726521116117013417885018428277592226552341529688745978649648399511045725536962685284191750141609862360284069260637517413722134654316683822813056449514050111234583628424383329716461116008995888446319028377391699735225945112074075509387693239924421062324440145496769972297894504073584455882419100134174734704265300112202358614315136965605230870432394697216881266343498343900477962618287068127641351551302200083862201728966899929631423072725473210203533143337159238403626813407944292406661843577309662890024457385321712914119205043003644900531865470997828131569749687451955943084480332239390272832023043903333174988700099804761572683526511543378749493634218419267282948208362343908618287392228071003200135622490842112412068547017690415228558147892470197170804041114154734828198347905596423229791836227473990578878237723376873443930045820459170907889864617956337731636755199346300740684301863118014067875713263752751567331421915132789085291597110615969210204117673010429911969354159543237999932708433265259607390449212167015154955188009618630680433490238149653770876964458654154878544792707089836442957208914844311823018870050019884351678365829879152339701632574757117319186563566051252295470200248742477035039488556120280769555353041978984954947596746693329278559610657875377689301075724280918024914956145632640846230951174312585199608052735402825042966512033096058102398963534434818139662190131427334979466855549352114753770552603604971944799837354933518681986380229801494892223193990550537165943072819444529854454632332333028553890572196469067266207585302324720159322888351609694417197806817856726022823623704665654600214631202560101318824793969670132715052936272714460221639270878587178688373015608445779640379077375986326885723545548282654407916020277196974422355447632265126181570757914743828841002740563617731591330453394347594052853211857642402564265522256312191875758882085747774434500721211187183471366422866469644206752521545519814793727811551313801463377330333299948568144472816051011713461600299401490393844147725906501181979467489749349279875687273776553830749633820047375031577231069567829956797893235750714531137922107382244587519164363225565782216226097637897744098837003795420463119249161236907441821287337712848551514524980569527829986511858353479336117784298122611602497448778767473782922752602124667807950538580264865037032229960685713393747398990906427170253326955771899438480378634350230518044559383289519850201193559585585638507308314755956032822072091905017663874789963290512785533442383161709395773329557116269424380398219895611573970384628810073319277252900521104728876015566680369224406073833344501930429323009637350057516490218329061304548453298458926415440479431476926103861998008321679203693304809565838853139492328625376713014326192091606347878618408226323735677653938263710049257492534675113941588134435622233086209684520092216268940530662274097869915857546416354572663043290951117474484736267023321134197269643481677988041788850330083725838411250187847577901365566813046192874956681902032280738263610890015620341662424080980060254939141830820201805070454892884054650851211086065812337651116790456414121249326973211293303451637206762846720194783465076359020674628355134379002411049212166411773853994288382451856807937756095727756000600984322741123096024612795176553532560136136610844577821652724627451297531979098748449112861751490645193928525238113629897593696294167970932404860987650846449314363256603843964856359821712240599140124243485341564162750043112777766122040498019663426319962051485376263410246322803240315681833147205029598861326831665969304751978924371227654804656141835921808430066605274753746747884292777117358676283911497083290755428501989717776551590983823106690334600201315109498683275293674548177591722995555922028738863174421650557081050975515934357662214024319268899082260772965783207516192959820732105256280281164611579548212089872132767371274844782133478867027520283706800318710008583685825150141426847474424467411776208856776218396437528655092406577483471192452569628660688100464927903929827701563460318481665932558786690106162079223654695101009431436776919207451745973390002935117967268987563122661224622451361843945714204704684313360131858717080568167824227518178517444360841353465507682059555928104964743739234887602554094418129937651432016575996938805957248006400580908931119887357785055349189926463056919192459508444141962841405865826662439285327114607593095701383738553239151189768101333590924740562701836926571226978634909309525339084991396228811640742823137528080658686757577857179928968515435317664966394245926142242780156521817379329400994628015106397704151778389441312963135347076938120347038437234951259410632485217859122282328882730487810532932134014361762783289569938210979559274884946778715916011617640682224407035263273754519021780784201568894626729834675548255028966450557760103915091690321011192828444391337516756528189313174635526903874979063468381995383661206680945158330210054080585521052157457677405703541410671357052638323600375560190723787861943233432237890383625418428504735482456813856417187359430023251800622639292656613220184476837874223569290819896541521149421357799489442335360084858747061720562857686980243792170296783940264034293960480423192669983697679956612553640084881882262927667775959706868273041595645021223271170392797378917683723751544588021654950904836676970423049876670766285975261906852161642670642838911845445811102441517580498897229145948824466026345116601371175778420576384011071976351923454760325295464588922807937608355440034241553105600116394375630547175902331113536505383208919736890679202609054825401751766751275887978335151884615824656981954670943577552014005932795050958934898413773542077361390040402654768211894632407399930741821123155696805292594724848877547014294250916690115264916332337816027264524501831620631734327872198227382088947324452124454371019595641059467906892614882118762380791727283558646176614259681737748911987606610528291576167651239295771016714323577884310063215393928550430701991435769331434139942594248519177705653561822125767678040195678273028919155312405278098035525290610699679096346131180847208667616148183640747144458459726257054705372194688587042337723381186765962789115323600811440628634606433694426995875650574660799969957383536552333979530694938627488243357712993841543392841489674668656520112154303821025094816585857770435060416768348001828446476822343951520827524718155432050666780763094395981178015457614904690414929741854473633194926525318434777949666450115562126570193553564226066996295830785796115194518328252970109093641188136922867726976541437903139399800138214432560382446906170883334840537356437215581944515921233649104101508535572306205187226151882691749051108939522255545786112844210587862807203130972856853208671423324778326316446916504478709409144420643169281549414028992428542471003060044763011343731229143314970721671118062562220977162082911787230781942747612182719878795904083340237125767649599021428904787454553636509236775831345352125157127795100766958852457332219916023126304102841589418507772676377851252897067642027178152171534166936802462863373210625379956875009979849577793776674085089860263235676299551826826900207184605529025306164631102417179441187586682771582859162130627469514586186055919695045228503254433695390973890556262170736996248319169128330325704850082781230274142328808583166277795554137115329419704348778720479409648065258678297262855089937124546607082238839220464523817461583542883742184650722114485859308778604778467356194557318409157218886111758701783398354397068947274827242403941748085473219309574079706793445806517018407598899819932011925944911061578343587506562077673821828151365925253361505366626590473167263880212318728103463710270879639521454702327550854192179063572860339991861282513567458561689295374221157125484011567847672804407586543679035783578390352570092876145551593793245167867743723611977905690902916057754055667053727246858298569385957651668392605364735808239459981104785752203759615007060698153634402745495638235622564003702087675442193249716970803625092756392874492811048719544572260826206999658992643524838663532398657711197765729285015635614068213856523948417281717575874482026359025544604739177892899829620251560793898462305115236394782553723794522712913128191375412640573321634432181213040766446439442413404622715101539294832699085700368231604607857960486212552863656969345109831699353322395777534461997655541807904779594796857589601284653437412196861738742104526793731573765623730915241586056610622805405416142421590829690511714075618356675371039530129544559400311216673768066998000420743249622174443778149953630146206930975461370267455316562716604356321542370313076008762876697447817356794645039930268132610309049854681613091765332078451253398538765995095141780634543656088648816321834438694009543871375191593446672742739921263820696499174194190496478214814511530994339227422105922531523805448229540939367225696883727705311492997021400924854234649946158744168474074424162182289481792926915171595852299967276359844958239358955669333072055880153173313001495334030040560964068471940839568113864666636398299168291815075747223367824737133928715112100033211261779307515677340607138540069824285109578036548587614039246420155186563624995259785218152984237013059930610806243351038619277608894668484532431444435076845066927685557783935587155610112830677247118013563357155781216243790717114253221906805398422717909022129614541492795276320685579227846664276274176310897780456284466016902702006898744046254016077372535260267084192703582444941900214977976034797416841182788492891105458114587909728010476564450563779545364231107023232483895647067544297138624282321719681841615204492364207238028585764544716666688936960225989864040669874799534911726538129752126554717332767266454447636210298392567660469642594237865992882069652301200144314322754108835168607507288812856220561679987530931354039871093424909392142941967470599691251620132734004632144102240936325728534630671788857305113060972036008932020261065837184886104095997174847393364355924146259521504256847656111882156447814924871072929283988091622334457938280143017884601033993854489343755055873963295819730710830053242652762710412731867068039378539703108792526056897097547922002770567018912503577604792143125443798074899933391362457087298893684927604461576270915358769434609866136828984462153522800670117005281953820792576667387509635019309897114197050741155473155450969468343838029053327627777201956688138666824732981332899589256021039374011007246903562751826234340411157414604282978656655141373283157101380966892122137038287804927478597405900634445788837951588652691075154927802781385926806456095800591517360590869883777834069891799589288513959550181900439047448249158786705252269723362827939173579142535247662070178406635248795238540876975658384085296552265278651527782681238695991190645447225119518629314303942584225102039327231056450586274467003142984947094216547839690744772770399535030204347030439373963073328465802544525382552320287105147616008038338961468645919763596299730009417158458371893122580843791336401158055946044924272031461635602996247611667654486309151026055157180831177983675215080013323274516655434808536874980502755451371508228256868843011946487994238806169971690219550783675990339670268743890938829311445819286653542270324394228606796771050873532502301022775233627938300484221158041433137473423855677362893866589724446776411653932762083542912653738051077954640618562343825156197613654454925197892511061908919431007870142460473222652604178901235822471617827230129182746082649965990014385120021035487841811719208020415949832493656628202397761485826115150030770346706884912063688173528428583694036462065009531414853270988708580425253921630239226082520673233167900211767970142226128724172364115501862409132583170649452478135836470307866337452535448238219225779241089608896040024068774337668109895407675620314225556092494202661076154837277595083037232385897949205547810061397118391839143036847967895785351687116186222197804978832690968401241935608482869975174062714038360981412449428004227997444191419165776344621405744070403516819465151954518881290677528251702577204964856218589058631290735882767362584196217052109304773973392811022580238087895553456679000411783316409900507643527419676377039808329789986773999691084931506119746592344575605707909968919745518279422946648105123041001668495145066068618362529007726190589757360171470224183650716298401710146585654889754135854708215505870989409893588075058979169652832358238577165859754494805706002142397275227796190579154336301807539805894227988691698662583528360206786516931025351729715115574670912656814635270893098824118814003443134100644051289760359463555998730697338835868860765486455526430724181821651917585776692564718272462068419771508502040581999981505163472359750981562769145527284882080176300638118831992202763701622086773437512023662581648646717560775484543636045061461088594834422483329163583849894744493999215241948249473409084963197464256838884751119759585752155368881296163802040703282879447810355336946121412576617607542494062207927618311396840486341066565386308330682114279510330865238521479329716838892465318114693882701193504129569248274612420996498751852776433778328833823482234490753415536614662233841600178722209496420441470487133873951792912811792065962671396785447104486484453767555687904357707972957916969395195253419847082186770513654832659895696698274607937594628565924989965468610027149447043474345637098436906375070280824645143618545629964537985769569096368244663435353288906754894235362381568836234225303435606501504368273989831280002313521368591790919879268940959581734377799357279812861246513124539857170497692567024533791350002350882422561083410927008948198105496576173558120727339804501889968530218802741788139957020372880064232997206135036747743270603377360535844259350564553682583276806906026543166291371668415930896834015819930397274832290763448856641086147317289027621623247597263289601590195853464837257458480628257753610497806529694732667993209119959372706238538099090601915239955768072986202499880032566339670320853387681328538834043610270036619042835188729040567804265585395487348045954851125944332461906707948105552537648191178712215982936600758030534602650588586718184085232160233810304237435667883682294258345338540068352010284914534288402873517033328179083059447836427479381345816783005640228631922161233711275310522190387218584774406967291280995847719385706983835770258817716974173374605962214890714918666620954251731967444666410465893043005441772674163816274809147441395832624177129338025521119280019070449673684294377943011855991388607990299800687807135323181417054279430921346322326589620099857854542991335522043261377063502555690951714869631232648781800838831260528016456666549879260028734451196561997157114414219460045941746101781776579371593274580681776147589046722099682640198944557819725968483753516646304681575340992407575567044679103477117404431518223092714527633709234156658881199135512838600913320577395014905414058507190996045256263995656540237456396986777147096392323323364673011238835847018563078570576720093736558779667327696944626753311017340339613733861704608387400864958155837701700790947475634077345572021027488767490424615064915656606004523868564111996209814069340313998159304649526588202787040800134976267344397725913042878084130749219827981713897523122803181493071978243236288925825156889759996296615077755525462169644573344207221168040749335903296987252510734583402284208543742312961718892242072926704183551468751270969989465813417153524817578527827021138684392963485634983623958696200697240201857410251481684229743545350001257412496765279442307556599556792284358867238907003300512788670543751858169485344951937606148141514083588850878606790382965835892582975970388322304818829961283276751850869769405308983783063371700959480052233110503603163793689864836226298520306288204188410950603756822124838141207189977699927629234116655727505911752965635966111695121583485641392419821344756179892194945388425213365077749046040969421758047451676679923175439966129359989090526561108592770183828981699480120732788989785790881640651501669802942157504835791168643381676099853491466639168453302051122626636753416898364274026567545615746794082141586026296205616500383652885559837296684457357617579246384332065553779695557704012639546240064871006774294591568202425665772283394979620048149625640017340126710169154688114177737515090945103283340364808932110919791745193652433250109504220437013503062350205650254163108407240422798640580209579405846759999687531739598475551739955067263278506789846226460249232239165074786286226837427314410610232840490422140699064548680134821636990865684554830364046246726417539829577440563457654042517161753807810677541925057863771580447932869434102632824591452173160486823085905050019418214925122155362463708215477866175636781156850273424026786920045651179095414595803841808880126480750881795521866868311387355449569543283542866683489879037324014007940734358828682605440377293624087046745523103571266741898728848544870857472844608089406265251492409011385520078547283953293861192868240342060081510346763989368080547536706996770561865995930647948851679751312757558045740962065253136743442885472299962906435183946044024659115617564317728624718561058719557838715865397634200874041666441107641131646097168958487277362757790047465452309260397436294638057473081748540641127869830314568246665531270363146928113868421482809856215227016475886704965267426428290046770484037716235952351989270707404274299307038921063785962690781529697805375426528742017681370358234467028375480849736943770247083529401919701705780612470916934178315082260598729796735840722817734589107230923167125124970504973451777010037740718863828116473548749235175209513324529540678268477893289125247005547915343821655825654544129808989656594135237164256809026144233706610799706379280760252550497801734434909018241089302266586933578483304979698417596683364348296282678138626478976209027195582615875373562469112213023229936931765064415434935321351382277436537676708117712753155901104043218774275846109862250732742054458360647289375038788067828990145158744235253095561438267611526873360533293783012563097350790365510909363602890450462160869974376404848394970402345801091944688919759744595237937564202364740372921352705614870630374725851297717260864642171427938840850983139477078181910673519799154229094384090926546864032670060305493776095685653496037258356042764831596963145633050659114417881633284924850644759382776254754775451508951474722279962618472106471730646967695784004743721994307118290220991633109332709955219164128642603702883826184118966212614300044727095013585648329370588642472739828655202030598767435373740519106909300336703589634512323493318856782309659847023680247407211123962470633805385317009585709217933493022972232904043811837994187458361994919326129735408264844699798898032954760777310582264304781089669668771352935827059823947451287555538930739135454036030554386038535857394829815032021040413795979452884450674057017445239947375900281396396264677166851034668896070784546444433009207615245175547016418171215365484338868821603180473321032542102334740934134906797264803028181167181857034483956781127368621357908858483709612864224118797572603668727658781154757994817308046208964611560838061517629943975551979717577092783072269137233357231005423282834023345049556502113807475959139542804578816785261678323548908116613623878000233190869186438280811081409273066140190276628296983355322250524911575796442646293600072656061064750376702046044161650792801391077125561463900874181138994246098040403576919910587686027771836516650734998194664011364016213790014181930173375661435788076246558039984047401974720341123215779673278392387400987411974687323506994067099984076651952174546059809253031215358937968894800286775605069404120040365363905325455147026771883916489075393350241979854058376878176970193506284821378369880039495791576856226058355693149649097897826020593883262078868672158861224440359191388834782221225879304391203883538900715711384548999806873845754731321874612090995054117327797724800452389472443224303456223620525043890959339811834975273855235144678004786752835691389886558782071008522243105104505073166016894739584542145369097581410653801131588120311358618075984588957597701400892825047936941192447442507848906948432134630265399762845969206957369284133643180473933193482290188759398769742569029259604145396282603814053483838169212691473631269289353683428270870036389630165682860276920778625683758946145935130531413206932318374136125654935188021921625753842609639496886330753942294262007304944130742101510151344196762125434587059286872612779558728241107639181855927779341540303050162854003907645610485634949234413546409670878907666194693997725918447218585991116831436588957718453295016402989455703221634657854925237292750177997840387361583636726517224980278161956375557411023482432965970432675718664074305500127092084653575031060211572025315434465542557358516497856173243112868990486469448501087654703478286644208328448847743350114582366200018841362617692623491348433450688316722135799434261920764939488878730526249003345948301034416698456511446880254449998355285872229676387184125963395977877410813390619719010820991317342772565736229155124137497346244918720110900159677787390121115525606970791844605753144786441790322943678775036789291654529331884431962772347717383364507193171622726542575210278219257365198972928222205071068486106063498523475621153483549391568691531109639175181120557112924141133563377011063974762043463404335409818801594293370620089317723094499586911070232624937545055749163092670735388824356195296908959853267047176994535961024132661740354727023238242112303073113986517460656537609160859452593957098415135105579976301819230606116955381222912164080060137504450103331419293665772280068157035485766789700205175053769354336407041299408323011327367440518271965843109782579114146544000236361884467680690894695156431379858781060608109882521233950088923704848619761856124863733513370865915970120046400189883839345868499143628160473637384849795392303393872481495910421857189855507094907340213427252306120978846240826139166086469072134138018964452505592967278568523517690432905494478155561710679042124457014071344266243153072221631307076955988411937695297147040916687789140136960687634053433009051772843272599284110193331604463635319232667165582684880787115857282654997499534339163022984721038722026651548934895603126711112349678950381789006582664072874832614714585953336110750224392827447731834917619402315491465073009611174928132981680229020562558134943983908938659590621134592722554270997266008034076528047018818152777471538857012802671082362835243318352376785568774928179023476353191637054089248524962153574441513391226808129071124924151886315140074370365301630107792662018569431354790582727197292271587855043888086242764344576957090283876446796396477180724032615817529502228350780894544549635451637861779733755615212028940080510875205298053107749309780047056102787257432423609495469596045428147927194488116062787162708798678688335051206822147540858469889990317015554280183061868639916703017943020938533150496902091127263791362686610899341695454758760865192147851013009414551593956315696688199231559798206265458172472845465418925717479211359736357964493171819160713553518292085906682649221187051600494448171912755792841666329812721438874956668441547423641122432266469670018128534840792007196873923114638966189042226934462246495933303706970751771264913375455860906794349215406767701814436616574101162903086443111234909908476612172399557117545579371798386145732711694254158771602220224463153697029493721029688198181097399326005889458321930970397800372187282546296923737234479094546911325768632029400700733613592936788697893588567800947714283930349234933130611360580829958410046147864851583218200976034730327669054212671554546628129541952078217265068746148455184086100192171532251176581198590799665414346623542297177828332455736408744967145530787007356887392601139697455454236313190978668534486968021818191848710040495020475213643577718632729719549923509016777287494232499707213137848538007061392164040154508823746607545078396748291556538322510454603196963253043877675413781897961214512103585082711048589538794977842713678473612497719484777628876576266469368545511487007980973013196756728471860727064532640820988638204918681505592249427370293547633842682069171175936524888584026647037322467299380794344582889113613354323306822938871567730744176622185672804288716971619213041053604260780101362529072612015718690273751714039113883849217884583659467425200394364662387346188665802371632114919154913191790160479811512396880005683787725206366656243384970569188757004874702289679862951442724541292626454847291751680010681248491024464259687177128333873042584426598203010273012764858591192783218926446386750953843370293675800839010451303271574144389405050249536580486505008088278226587135909044567434992856536635051031743858760491474151430451922723358025908535020789552362785112546912071231516580083767661728831465465233874648837406270767324649254500695143934214766209963759437481795759488126733515887902890056425336620084373965214877300645809898457999017725029636726206938147207111773827785347877803596636546275962634387119114579774369798186115233313190883516455006815526494422668579067219454127756692358997523892320315682875342793641353872163245474653163349968223766729222028654118091756235325904470747698985124418124500465201574421487180090756396540787900359653568213487590957832915012915540954979251046879899602459759671134853380332819131179072533852406453678151590173335419597880194142107562328255160999301072632546776859909501114944558094787487318524340275883352397110220387261436655991945166712331461627466112673700214280853772405364960324569006068899873208657329724311057356077731064476490303065077236165653502618399350627216001653783306063832387494697276417492050348042600621675226184004719603183087975099820802438403733516920535409331368840499978302804510307175425565084615394584654530252333048733462951551595672470619588072195645341983662093064039429579033946591782285804431469978344088215980761261603220136208780414923937226733460413791257057651871505718948763688643922463747806159758474146109796381559644662729092807361288061286010424426570558254312331635412577950395980112726790566577206884595990719330587515760616783281385754517434376143442247314785547037626755472921075504116750660069526681900004544671135629587121587932745081569164096887752109573828083608734345231350284437269658806996280975567142124649513727075517149786663332243569588376488437511265624322388924231807656235971826180404556505041455903074853708675414267287096208947990075412433923662805421711478621924075694278649916485919215678713394785238346289266813733914685272894904522473769523188992750977063232619167807999750954935237664282948876466779809630564596589830254693813579808298356262471661650764612351513581231180806962569021000132261719556499366716879480125753416373242458861578073029930244816252704105793649594738837940572821704907450167716682182211837865867192346595568365432323878988844054048351365929370834712203140503145280025304346730017977819879597001520926403649496569217111614883908168712377102728190461103416893118860254025785963597779238067232704853156641045365933599024905634843820655558056460414293358912642507950415132762146155981912815842256961913032189846469787876600295944995924908936742993303865146136773955344654492916457176209828142419064554051343178771432086038702952923081515252620810427077801638018041565907738319941493198739884581850897398667788254594952576140155131246015709138449347177155596653809441635083005542188397249446367568086358083285548107838231940918421161279563121719842973007920493605629810939875649709143091425046117137211496095383396511052298767993416484608954563571397290761019043102661296758556217182514413138453252585298889927131597661344931593851764711091249082312920302090625957534329927764409875034856887182357075606208934813986465821150988894423625861349726125269183887345833165666823966604565247110966643763173658459279119701440565644837690875479457080683438315005607012271743484084919908328401347072032187619392782248108009313702664587350272716489702305445788270627152484406291784705107471608049501466991195617485790582626243275426888060741267460586180008558115319816713835689033161468646116361986134602759878969206653078610578561547500509545751338903697650032708482597212784825192403879176090231218120357628296866757077601211161858989777895857708535987753130486934700820945699199205843696919683943264251404679774638685212674973931452460498303049383370547417095857971043603869517742238196940746597817599241295880657123487584977447974092939719237400261513028722968679313821365044029746751834780453730301125787163580200899219976839529665610184390964774842824610645325481596796776023785847072994535573243346478952851165141701207093066843313316406416188005654006659139672053466716459164749143723141719261242904979989979309132280182143782573679637783323073169860892233547511172927175066987382819226205974039988718171217070502099000285985893588053837282367040514240258393379416277710425355473938368791091815456294872355488292624319914013600137854139567665800737183663380484965298599472101637850115831230726799559783948428862523735984476669476330087666309671463012612897262635672013443920742787680420914086455623199878842178945462820339470681228213000243964834557263449955350536949740327336709537049736834787276602570721766688281854812959127375207976690931487877778930712237836830520237960482168927085630059411264224079006427190180467875943005725109052120829696689588971399974892726532963988925653402430030027752439077724179949736216992058986167359342266520981691533692982760684533134850961218859485577776294639426128839840563038639015914675141586545966749844962714756907386130886773542305439035944109478146224653757729894715650052963168631319598064742007206235302635540368313123120693628041879796297676814601917599141249813300353741733010463807169145731068493756371768410667411050485317989339962892798681646801080103365785972889229893488033968719496366315112940716284728552624058403043921568358056668244690618010256802974913750680745360333207524277011537485055453670542721127057531249331865613947927160684826033071182092124012258671946230888055146083004914992186913285362063069105391830784799164680148153544272487682641615132497468260699984330389929571311258351019081075336941119443422377749149937399582403617539058715571646827905525623404790657115123525734960962119201530085836670139331053732446358712093566522468813490303616573883279320005998881430926159532876084402413295236884105738348153419616426952380270983458514238830801552481714092054846265218160966782751410461311788076545318297468240273294051523852589540547849748504607055627989239202706556677089870092887548324173776057630242460353964506558088029814344678041515876748597990933917211192422753979212543178216957327570202923086143485582403562753497279830784556739738626072380664942376141228650509617017145316006613455006548333345328423326105605506278488812054955824501608783602373660098651856907091739749258814450109359059219345186720879798114276904006275630654067056656363805493856777948749857128565480356931380154401149255026157545677609910909898893361022324469970972578133654864404582349187077603560749639484700302707155590652930810237798580529041001594571223241860807428928648164514264221500394640456716257526039842729170076849828897607996256679805317883608553364649816049355542355831387064349496041854003911522450971367165943375022909715948988810050421369344003330543809890604020694448236673086796994123327526141713633245419935368429583994853540520916917604003914660934246825389696509425424453330432599016142438941002360352212051907036554544825589189860085957089052827655221043835459811286542029260330860543998628847348296296166095093293860899833547124923803562351854872678271791691325973658268443586157151726698967607206403687272933608819087094757252892537175394421690033501190477461453902499837480788961007467694358753326521523044816427523127228627660223910313982737897727329525518300703209770641938208228393390497030722152887607373836619357730567703159485876218289966223876931021412886570378801644201688947446275332976792201025193195468605461936275481082952301832464831157244275993566975728113840590188706458055293082234048023625382094001469749336892135262604831380828829080654199460617257781702206027908567584155870386199916666759558335652617554114819325377163761089942631013535825423428167104306054327336908516485171927530866082343680100476282479025418875956394754443801488634744061079112678388320952814776498446570540376385318736644357291759023491412024280305630207931798928482171417882878392202005897572526329624768799767942097914701504686828387587328273172840890693110690266129736027265449369041600401144930392035606682620632647247713075567774200818930185240776553516674967833475426360923343690586598302352772506231619662698647698874177359603354705604811900187466464579598429743122995386352071093725223719655199149591944219961886045454159864861192850221511595360283219371421758581353600006597370482745526727518435381428229723050876921886407160015380687483763832434865425617208461366882429271658552192044344005357250115293777616672893430750634462047363111668560497095171601113517855194313596061775917438832302866583460214572546099193537167940946086065227773277262091622095470147207195443014287982625276095387914218492191129733738876177079050465157343053388433934446378186942609053905543821762284827313518972871951596730702605159343288721961236914140739367990876129578329847127628351916973454382473867174541976733999647506086779443431220558316784437756621869333194562496687375174095985166080535447195017823634294329304919879557865943512436097291612537752003855297848933456650721007937474010735533821063838255774306619561316796178374282924623211457145953137264464005775118181763072575141455194924936608750627070883617930603113042356383310499573646133690969529733651631632940209299429797933447956299858862647389237016756183617566894577814859309984966588081774028081698585702982181532388924004107246213735809154922357879049836599902783762410329053320301329856543228148339566185946949089325529064108967964150880535397274911753358624365600844235560711916812374002064677025936717220823045372874266899665493168717888877628263560679842884445853545481196885255757830035209725322598853620675960239075372574829841166362464651903085695738176085086932083099525984404035593227766562291605891501283606550865996580626365334999440704155964308293540662137059094196838948003827585171084410235161315724676190981980669344591395193191436335433455702380948214269278212252190772502557164863755243582241775009568543478370037246783800439241711574091356337885282491975741583131064148256875634432873765351438273421591603598765031252358021386495712857942133855613544852849331886448562614636074598324342251108724338361783618431909894754420529178078844166424041760666638627191163608028312826879954535788076462482167228931670826914837329548937751871900592355714089316149235244366785636374871779328645828655894043161745684907341494152564027514145424644295648141391195983362502055117521923891167745498783545944304048219833164136391931982758493812485731626241813195697039759879646871067515586404145398159061147768673091379751209592666657304721339049247634688406729259661779481548682154275466894881189699804028296432210650591729895984658159100973260141780557463390657998920225733892477405941833787784704062759708368180579477100518512862268594332174696932683263205908538049914356900842015628127065099199720282699182014719328772094304600812651422516053342222826050724223484893240283708910861825335719879656405321576945458578035604570354637857379387608350181820298848427961688170480375649347799652087112279211188135568365754745066988385535974509231356622336979334922842242409077536960867206798536626760181964201961050534847377985768915077676349548116190936644024315640750166411650063538371639424755006011209435455863911819508490436659071248110368955079941008171135909156990261843331976868866367591762764600848708548499286930170015175048991700734727098352223725486085255955955298142601469274169791047840733954575966022855550394146310487867740697836684844331414484187469205964210704035005468239725788922453127639387169104844811854769118893325502315576984148577192104016577521400164361418982902851686549116375637805416443390809189666174321184517989033351884906654294880963729714384687421159416075894073478837502160032889779356733384604570529700509834791057098347662842618681875827064212375326076664575132170391037558444189418644392325960263041681301976348434232701469973707996310862142866530600328513610844493476951100008377719923655633507880790652887207903152492689759631051345916064781304410833491658138941026498137817011225207877998144289804780721900544906754978316504373707775661236003265260507389383806478905942331376120482217383638999253508140598639330663026673150177991605677391376804538503447555825504837820819928590775343733632024934652886958277430775265504122258264365346901656283404354400224835370889519836685477333486180893697905891857353617334745645062009764341930844712327626375314629225563923276086357443542997209720707593852208846246894165493221171549457701770405857837404457272111828386836868432387506843963746347933207346981057416936355601751940394274479169575505279987767559152070970437206128185744580810145652193490310527802895342251307611118298510300417985990230774880391190719891512662505408508030778321944407227934810538522701525326619841191235116642861240167831407916409725682886725914260847938390655439150155545368588236742153206698219444763141476028613216558345011339375634451430251847569580240893655864907023675581366327343758922540037581858776285452264271738440912408563118445847106490728344037834751746397703845764328502303053530783753705990316870169992648494569825271733917688208939628415919071408809857594000269549460838224921100233410520030162373919578018362953584126745722384550628760491380087840195061645229923121355652895266701987545522403723112110065134905063775191920756712245336393987929858646478798982401979116392718585335266397931336293083394844860482896301888767240880483164638759031443015468433974143252069514317573376547544995370576782290992402999536059105837146835607709812441697682453954150347566411685516304305755542522241700267728999288392372246343301765308907650973023108061642664501233213347026861159235131371966184218322594861731540858256800049331582144073494823565219678050653325926667781759135960393328739880167439350895530284679713961523607055849483151483304407263061023843686283239078029905516378245463533908998645229178484814125426835558747807107248744045318509140889999087933323397719766513874368064371435549370315369049169666060336491584208804350478239993447185567908019049969917204136437293481259579244836296171160246749648853719612964536092404745761148034174821527667137512859379779550413004302489358682408099871042583783441328702942389087942201749822459503637240015431694801003396381226252609749635133198303508160825384284117260079937409162754406630906326698463547599083605597035594118281425480173926278562952600890535646033199948362464541392401370876207230707073585023245367672250564280410066673811754214722448479022180816362277660373285540432541035102732809659180756864253826508160812309195160316877239015138656094833201197486379547189001093706474004546290074379949523294492688752627101325837898031950098776746895691944081353775071504660520409965152216814669815539684283776342946700746187330188860484834750733145572996053772321207447543185569609346869175770267487744947484731275111998447675045430412890675140331114948245600179854448710061726207665067169144041494381721445393799566652440432894554627213503750383048266438974886101919791884567226695510142779720354673167201922746437251949607823892978107482056525512088658380450052419108979441571220948380974005786507421120803230736943023557918644058789989904085935326364051673807618383761955820352026408423616330570950325682199241203182560214585618792959998641133211595458635808951777225534983447293779742999148972966983738717997327572087093964246146854750008910043361634986240656582283521093811553758050635094754938678553534461324165535188099105695219928433406550373487013724742331922182949254318412600084047145441768062013578665950784029161992841063360644591917909931719100266219049901095349717045151010497294463144173162874953973570773720184685196079505510915149704611628275314883078405867409518696802748294751551446002818042932975356415300027106704403495411663560639058847043413795410185499532245251931272156375905924318718564495477018562055483580176062165039452703869616351072692747395056973617617350168153190406713918244363402444131136143446494449772240023226233513009263814629153959207737877146541133378631648934411266754775320250088538006229576498006612211627326922958317444883084685577205518799739661288676791547206154452522400998339295216354914687203514379935388120362837924107335576933412218376234821965926520753561629633451531554736648768786375421375546539586513994488482015535721026048641740826896219607067635380060191223004633937105966721779063558214166034828810302983850691343826849805194305195384396385360193132019829061614660462565936884381102131767906542738605592620914577844770024664829414362719645613063665740314368535750090956811654934392250729266847621202099634302109410033228567851682388961108418757314275121121105311053475414089575876824266614946001061724223959302413378682074097456446075416673280517086012439103655444394236824266267287592243440151682611764459334198819490165350655042376832538026446144674186573146473505154266735378205696607200490146317239821918257423007612060277027058194167994184277508715031857088598684109356364981078951912071808848575982407198466601370887265555353774500312900275894063900125466144312009528906045824475947867160029397479708617294158950208857059978877272431049727504916347831012334897298445367377111339143747464110721520271505374464374002928523445032609386453063391014241798586545799327028999372540270168607470131551065035985863825867683451774714960525208468475787100512725119618743276367323695865376143362760735582251391365562057364892315860191732689926207312818242782050026439119679615831351887878179747467390747385738900731622982472415548818341510794861643929271786533352869143201557480042268184468207374543370491244015814006379662871306402753967558047469274076425686673343963713609030237196245726001013045267782792676283532550473114160403698844221604062400399768133933074936564293252775128595109841563746854173996348181755243169659585752238613752226330773750414677599405250330064802610882906480467918112426337529506513981627676757931909613085548098999205747356047662418532337652182456451946372915597195955870120789825592322295783149276650484200399540640126805442909067107157441812150872926404174588310167349966548675245349846523093728191458179136451897199332493575502018457808503915982445855273602517187056448095435132033632328858827057232603647872029058750508113441417087375832431117689561689307916529223038617680874503596012609649498975173199851257389077508488809876000848451066575733645613735187987665235729349042540906062295787499528347750612712919537083206535388875961009313938792639052739244247110620920857703154716902680271177848140384317962945458005328465689256899065714076442784089074039679141696397558391760397282780464104304776123478550031127430603487398286829257315003588866721320704546009864754305041760872066430652653207321928181929629740864438764341084801151134942532572811314517832467837552640866164041289868143745036306127771199427139850195455517460857277283257677434592159117296102006064821156629998229942822957187715783665838415848451700097801544042366650689284257834605715298424997071054951854240065803260808192704229459581723530317111152287212964824430231002028572026948198508330218527300607756092202613920728343683532235465483838676836850934328726560363783826696493690506059093165351046365566520544448134140925501847930659297117176573632064556477768728981539115399869484789740830722053955491818621178077160671149192193980684881234183764334846617403243249288940088734179668314347730237317969886660235104744352092584079459602987508190962036889098828567890751706161001448984151704972168141529394474860912164445672078532427863863577665183252464845677882393248769705947118411032325003604099712120870139087269588596031397148502779522903996228975036872619753182055221271371336687467703210510225550139332913973164753101295979480773457348857778676136650902195822994126203276962488187574589710922789071832092031430206933056500943640153757253399073857859342748017265127205033990392299432906585924904227065571044981249709292260633221588631913732421079503012513472818990214271418060388226528351944502818454098728869081107474128386334383491445651902028959906243188160525348826941671679653725774550939250218542289382104865756943631738713256237190619452242242729523307990844489034030254588111758215811059023834552748382911588990867227509848811175981338519467258963000566485057861846856317757696336668480754517722147695245165891240399469768262063676567888846286905325936073572477178721796643920430030216439506146271687096748118460217367818699049806684589165832669494524155852265793911733358651749021053144575311205950234465682356906467222110589485439065711669837995588250938703277238678016328049490356084758713457008293286653743767474688060323519804250511452294419898211068151495566535975444088462115953203352877514278983712605215148102078446133834039542637060990100068900526978853797592833115789795712688997286842786953833223353300986909342068171489735717914659240862188639403683884157335924323760113496874833404766371262996210020710384288550837144175909686417887010623324625048192320136638967601072133359608905913522055418416808400286473348962874497187462832424763599103696615628659545540433515644250954182078436831387421921484230046513713775158780384843977674020167560869614926106218565282947521597688074489370140463520585304892608340450926772975666225790522301371079233581104971377024518800898691215794624638028252074485371173294571572676470190329056223663700672571602586501383544396095923921274401172851219115979004812851116750525706504164962552834112306741878356397518555663826330573236327710322307892487840901643570412912011900205154961289781075696567473282499570699190829241007219636177332407204257071239579074206791273210823428323278620360983798581571648374114937013867670086970592679085740748564749158539822813218101520730464881585278022875603042742426976154618372442662704114900302291056842002736137106954060779200690745008522912255124216495544576786726335030343597660767425030684528952191947448466818686385730643382067874056790546176604987369815200517628854355215458054512734694316278204136324235650468602704237481201241445814173142897747408870704647249543234453662236949349318540728265008124035560378103546048170902353975736200875601638628716983269459280277892557213470199383602870650996245733780663743177816441168050708566348660162031510995744002432589218640036069089865657373445113298782317857099961681401234830929538507805181217045816022194265364466439714864899516080184397556706748555422354599159252703342783463926026413234295616398074467928641911171225004636045004240675230607411380961927307814454814859096406471627153060753079998087796142992929338430652254817591784978796856459811569423265501356670097136188523906187426681757578292639983904897843083059419782133276004206071733172266979881617975670150043129707896252423086321188941500863016617344323941046515551393456084160135334194370332521453325649581133439330817040404152628965953205510011401367041562643819642343856293563314748308008527693420737880777811542058719844890898265189514008909025373124944373856825761785802690448570184494787592973495773162471470195740401362581592253136224120938366371636383533659150473363789326955033554841168290647610846009081947575632310080743412150398603535128315480023520518363833941854273715315021283194100529693115574909845486796738549954530438694746387057087882453199690210726119745532000081319762272024811526502921884316668543748648278821248457186826178655554575330812271179660234912322661919878264722430937763733541474569324715298203132712640613170690091491692515058949381305657045853264531150225903675638668972982608480548491831777367528971823451748469237526990750706860915282685726397303820947757371154082554112757685990042517223546358428958278499234577559546107812147320211735269033668071169245093112619072495439977029228480274183633869951270925800160974400236659453066187310945492193879891117888178384495580550720714195710214736482517298389434451589298173500994336087874799180322062012195202971114539791864776468589771074072860019744094572436352497499279319395871441230808739478420711869801844487888314143150058720269625161432949965419568669411312375492096591162330844473964819245092788084523905904962505232604044627134081024239862608007763636306618243559793155773608606802813845856133023454987928279100295878750905083559354322689283164358833349792933904746477137350069685534554833362526738420639747077690980514717119537211270973018684419499477328231950414568226632154993171746293500736772066486013836529926516899915559670983902307657547310512967178243612720161982584503886529159414648621379668388908185637463490316953478937608752099285441216822933191638766569107849752621987967106650001382165473158289764158695918700609634498760441032281910485618254899291498000086672619231761197319467247144234602884447866627392752421318648311360924206162352338623405220874728733085194870065379884274287717902433439108682294918653052128710593550438377714890354110723350710387213027254688093327848109946697221249714258728799135152230489083100672810389699250979715965720495508589704025043838762241683853755876511637689163886072679860571827342144270072406445811336000192066470441447635479039344927753726379702943024996981033784369166420293836584864643301964200971514502948493671148161467271739812345269415282597938370959780548444833930190158752680390114058354664944361128684663795905368961016721108277466103568938624830071922582860885949153486805277527398618941611631801550124592139491292330488818325370714186591178947078093338340358520798557511176550591572092466929165808021820600844049483512269469868564853464751241125952936952677764520368977987308869558964453438573430746583359113008794699332871648853507123450473106939057972704913230303659729941568746892195185587984355776559501708684021891399665267463830636460774769227874656270982707941919288279611000432888272374048656474438036656745420250885445402677244903199709056837701215594099018832000789973873600179240484863719181610297472734307676802107914169197305535175763220565443959849020951328571571509698316698480027168240549279421724703490380860162315712176209363532091427826082064223259729422379172922980276870624050412399778000482894640451498917120147652887928409864832456417663368548857859353397247762044303545772515280754277848038295445212976870391617262696710352981482511069453298917265457590763454409357890321602465822460202161423455963024662238271572300790880273847485738476289700379185184823876163418266091350834679437666266945971502395334898881899961217477073212858492541904230093642406473808023468270532283993187625566493277652637215998105691885103968358584260689571806285383081286677442144952004018423956419783150321164745220933330523911041659621972683231484196417110700708057963851839851921552664759161165559113118453086090674629683624975931082690067462074230506299029188568502302348134543607139889007733903870739262336480802533486011246013739515494395927364474844119122703861919053932545447596347396479092441423090251387223967221505176655618067551613274885247945725664766304587311075485718696385685404346467001146326318825726503462548649348467931072872211760013213102286344635906049804219918099488083373506770277350607317372152879077452998077295568688106270012301773221475544136325417634187368529592998222711018123144523700208283064799298016885810408307634857856880065148579507982236122983896196051502885532409399086512055570577188887048688150670629146263054889301481426022276911730953861298685852291491928705383314643222880793940291739667779572088674362810761475484069365559968056699221058161131948679608742566922486621753340689096496226710035589064986710890730904571705733482763937322344891246511638412424029952965258265311406421309823207311763522415189000196322329168822173524595062623613806475200294764048534662035050697458911399861481479517320311775622917996313028329979179762357374274685474053160993103142881178449665305360578283338143710005856950203010864386799678123650261866233863252812236062589584037703090078525649918561478433319622860887522859531613423399408387153735535290956594422998940072611559229006613145483882682444241500931022987406669668239575592340677874099450241609405636093535586494428866694650934127406582740961845540027302869829746394968347663101552273036738389936362121756148419184309713675058686483050070599042601419061884490391312093838311206029825096983693344898718508997855985040132575793379104132663137967110399106146034283856124429916735098898816792551132585675005619843636905730201772037024520557710501698778663990979821118967068960478973767825426681947954900629699734436747012182002286724273882988071422088989935231591547387246538741705194106996978406200148373704005124845624019723555772954383425797961851407333951838584708481363776830197679633898848545293432844729602446182565106511022616681980020897353244355889611616735770235444816865752041463125554151335149530341248783392743939474260362606286196693421140972595922443032519812905340958335066307254809120827736133297882789515416981658806175349980102938983319220231093690430893014337073910056586362258952202684248690184329872663684383280248761676644952881187285043895170470788844169642021633992164776615442277487927493118747043440411437336005831684906863351994569461094260046575784525406684765261218797550542510794022381826781529856882163179399205902931701026580559229522216293353344708134134269158295210115135547259241086875716448599807967500903157268497871733839394627876762468395217210612369181771009699255115330497627433453764085542540936538673855722916402927631180350946505673604668393576842712559646482707049676846920179977132569366583916603023074579417653952926662027900423921944428741648410528132753517714316815306166403525052941689155864264468428669753607127785370758958090136089424178090097005168787419528909654878625677380236472717573334808851256099742293967847470616875175926897870234469124100453729306129417524412198912131810370754001220041992225490489451765420120613575450356405639491586346005683125850261223816589067385848230586980645025982211630334235599712726082141760524793723707404837049877296823795118579020122165101240374253455760977265152000063750368267263688567792344757196235288632858691837711710831146535216107055111946799989341420691854328389042838791874606224944503437610696743536906589657560576298493516751076668766792271667263804094864044506368513006509905266893191870176701095176345950376590716496951607774038877595516061494253087694006326353442533143205457072188674602537030388487552729326656338273473973743258210875885084823421923328771064186065396476376821516066641615752495365418635300407558086601025367619871478005630021256274860297092224510184723510308479396547141388974368826843598768916472030706303486046256988238638603950084792776310997885267975522627097827677593076463075912803603720110725459877411934826322026161448227620410691354574870135912084396275240538769421575259923748127269856597069727682787969014408201052621940414405507416289417772831984925454726048230783337447356460262341318209755757414615243018859572281306760803855938770669918542110381095628987121836967978457538289710183313070513896644567170663526283380380416902315417127187047783007405947283959196881794309960558014589357132623999008169576212657401380429860992187900854954840599318109486587355539765767447081458651583421276413217332292254401111194687910236198480037330019140399371129710450982076228841396506649848013268429907171357304593700995733314474390402971823134769288057578571639235099340167937979409615768513454923861575597076600685394587751373708366092250457986892396961191020832302208603808102261352989132727549656576144310127729705049967834795051964319987976005024924765409023067466821606964653191563091741529339702157307538542367559598706814368460693018819307198331294664998099417779736353196095398469444374673177215123981666821147898764222028521562761128333823271818034205329032969665564702500380005844513412899123923249185006081061665074648335445285841344512289454482500929980104375526106436459472917786772097258840471310421692168261874357671103405126478819234227267071043681382288691208766646329141709167007035125200314950615188173075440417184227148078759517616914804212352342488337274709444394654146405659489592779265651971255175103976167856633286162437384312117568889574274834319083612521580624847448086376211941876296756255057231026166237750358580374003686994232106447138822085261068741543506385963880306411170798151352352122413514865142506819040411093238419573737569305895578898318833909716529332111210242434678454431990332014675035506422687494424803484048201610332984087827006592314093978281678591795647514672067357010046146831341817857756514919162086529300790907538730192552614663042699664041234006359059069331571864432409868366540099362042293874503353452323368960420099036239700848547788250329401412443365961755993235238314537185216239538261244294681606931150566599321500280413812800553391106946968989955898750640982682037958295560890278393850847139619842882967546062565951735844433612217050593954021364386969400542451593340678999949903675133708700246995510400139469589457530130388970566039958543947434200565605161674123442979873303611048308508168041178360716047710910413361996546523602010201182937647151242584449007204909229426282028949336214472576997682349657980633776971524957063868589307684789638891899113900779880940918942592918478213379900423988034156144969002230382146938724586885146255252816526613906723388540285753873456270722257300533777002429246181979845199736696637757755636039566394814208640861177747168844483459412605208657904962091316937145273018694907928953776320575972286185579769497482211390783398695355515519992803770937357855649270395286274171072749029902780055322659996986155108289713266626779936524917151157056081804933283145090230561906294051251861991366191891923907046531790499461402156380769475840840297845288610023091859813457272682306859827665570637475443888875862698145799550124729583177236184848753983858112708937977380783163831312078664872702269878750793343819398372999196936771787325342972146848299487971465854525299927896935438608518767205659515354699407163850465690631881471701647074813413876831340543335171714956016229475999723989242093956792471374538159252667899761616217283035939832391051347780149130464477244370468504518790952940316198234897041261232974695459055457156995432261016907184276843808495528933750400599487532277172230385146476327133162183132497068476894884133289029701628361200352793798930615419669024288956569798591486536563481767343273966064643078251012538892957268349925698915023288627368606213884480411299903093505036586076254023678320543137487918375991580118860841690930254697574723764138055014779515740769076205471095281693005687172086524597805949512974716756978222428277902760612766363546733306916448902194041431462290785487119400805464902024341594173249749211378781877903819100681623437644584275058260497475697648078766215679879479940797251287534387864782023401577321660484402955458192660901008652900203375942566021408384159347418081156906230234634851919484572339372878366426095972577050502189985361268156066171730543071037622133935582898039777704536975490720580246212182431176843348752917699748163019190426192847149856079408570076510281474320156032644857592973471809415544904038546032160426444378364258365856365381148849197780492191456538111204807988191012897727520410632356065358847149110744544525023933424809564399499638378793108950724520510717204559647045621076473065873272247259048001554656686012289435395400421570411502720303207473081430528304571945725915941685868817626255885922439989901479167465342177431873878019209762143414700640783922094044594685687118050667482756886300357978061351248872656062714221971335068646054251742524569427383798141669364851994101679853276481334774751691324447617249983695047840073363841863271576199855422620977183454821025546145325191720563912942236002439127563108216011422304207011992396577775223703607560936516106811218075480952896534036585641956324024761340697018031719909542346239458471168547960851410848801585925620684179827305295379731792950746029863372346148805820171830137602142134091255562376862532820922086152637100858731804019206201632528615978388734813612182362538454692889657064471568512621764891326246609150280466194505322057298362958432318516342718051135830747668394230649097525860236124454561155094392836959602619099656239292903028855768906640192519593705326272763688149896385834896531284653315418757245043765598778501401359834911140944858996096050357796988820360953855439241020476760457854246453496850167522196048896580667823148901881814521584526599361124989931400416679953072904545746955814205098106431367668597657821659898601460200966317597391726423475277746887444367840729025047540834237161665778481722072402486124899118726597806385724627862138585646659887226377587854031299963812720328894765204187883786582925653232386200934313892221133020396642060063998364761096488670913365138855818244832715398733111121218832103895750621525040472727577673670561431633114134910611490771726126885983922814123394552264946116988000808803490665396213646937217288741683086688292692992489192804798681026226299274688692674114330496784713700101585968644195114567164192429156102849249009535167966065588767081567192318509091724927034318661298972399781029861823395761235905983019082403261674062533911649806985981255548505720820976536863344185314196915979682567548359902140671615865823989770315471843310804062768246919425712035453010449982419382146177714384179249983094435581848822383023620489468580499127732600069377551616728251938373590786656466466186828457101686350613386072504404592314352409638150366181271202029772014254914015303596195971248487384901121339687017215683009041402994498525655532367727847086936925319322711954061687466993869400112108742267570454001107618782470949594503830622552365021675926024432689482147876043805114672370447176544012080160260659590044383964933078129811288596893078418982591553814464403939068864291924838548064099925758282828433443862844371223561896690302229532200151807816840151923962510527413733846385317922007986019795197936056489185266162397564559670572947338143856287925453431120097351361233793106421197407475167882998581421197633108888859328882557855408221772282803350615939171474155455499925614568965900667752749155608596520052143235717699208240383817278548926033848735541570164268192962360014515992146671190981805530031939595829049189680984052556865482730084411019563663621605519527233042140334246045426395595259587169083669972932818102377780884747035021794447360593294738308492827654165153410794795635800623071397568029839358685193243718742325637550583454145049283014131974130408072486247509409102125135853342944055448827246121732336930336565244360505872357072399279720140051313360814576485907635352283624968413867498813339276006115645225511814281184269457395395699342726233971547519609621534145973030758764148448766488945266344564557805646122858506133205533969524669410396057015070357001042315820448839763383654525518772579667411280225707237913356936750943919371080020856491814455274714961283517798685276745238222866381486356089789543624777751999104630386819172536443084085112474489014451983283558210281219399164443800180861249192120954446638856999663180681817963818267822403753449767778241659325515486484549022977728320307960405213799475697710531068978691849784582761558612633674382202620111149926175773581017308871142621327238924626500720450138011419846026750219740182289598781974633617129263088230705398996486648211090972205641024800598565347278647590895189118691256465528597891344556275808621323743796281218184694019819760799509685882158185919669806989379886014426827109234594293137257778879038221954193978682434730782593328459131020902152923104004826980388496273325409086650516583007649015807399414005286248546346189788427307684205574015706235453613464878355074843299750013509155868902051089895814316296779939346774265812934431969035930060209055682376830107461154029259415213569086630862801721400754074371505713415852481482956373768093068585535345902108798168872678798852073797443735679843088464074673690491864568587782456517258956678119161618876246733230588451241007690387745332286534496547630818631613631371138538159881787505984369483583504334770202793822743088611239059560526146888001739985817650692624052828826509523368198859869919118521139434230167789149740959982452123878734086839543894152770655367970675091364114746398238203285741643498972731638940350372767878589922453580345769272770953990929619422382632165652503683549740232054174727768055697350593344564484029628330171478907594425417463548763978244532369908444904544806570604066111923829991143423008863462538732803664902713812898205458051408921527806644973314838297927410874196416116554451553580664998887784768911984792158686729554756784517579800647876879961686149549239299396726265496264533338627049995346612422606517159060980405736377638122711797562854452217809150267032893257845101578747169420685632658669075422331934892306100042523620651862788465915529294191750492905009754576407672504662899512935403873607460335234601541004899555889446620525948671105050038626262659452417251471339880679990560931192608834111329989104636380516947777058928113652814738776546517890981355780912500154426250802487032679406186007171418975650558922063735483280713317218867309813770365287183056472609991904826378559091789130801902354686122423038949951670491713150465819842563289054937667487365225897029464781855577002957746412193578107380219184373945885775730105406899957630200013895479801243977370733809271825147094447691758382605082065720563969527041977001817204526803158122198809787545382850339918243671015372400952036799958683900400194017677361829196472460373373023966051325599842882668066520645541569927050023918812642171572638808360789956503758502881987912094874782952524568951416424536630696335591587886419292151126793433532419630179699383684490930044665100178014628046264329322699141787153839237056916675860144307416189506429037770941669739549562749074746278307411807928983800663001493277247666537045832719307930004283343588345339098886097960781269236994894846646531806368255306383056493100028217522866889642636594711760303890586584201619682616117944957297743243190433234599060669268800756780592263046710088405474756947496207290346999321714951096830217825593092233742701958483684491438340927434432344134144647633406738740529095346816000520950162001244850386264028247510216427814258897676248988493966740971971240279661038695441490909516867412716585566811778910642360258004507698095678190984930538751122185132491060860118234241288357133284282397364050042820760924853076980593030040369169529491241007900826148847425794885808858895014570887317209205222057195289284033235352218418129631946048373174787238423264014666428303648302054443804205096241118375676631522664169637659456717879843539577371851050930133566923289256435865354481789627329873319923317879961896006397102298649625201208091278451254598276749245470900784711517289220754013915434554252123444221178732010542098348356248691434567762211240241938463862755008439054439645412797500351801431181517447750123853345438973158810026454993875504708188665682972939610720425509879924853395363384674316235868694554838448271244547156982726427010258635681534754148529381218532885530555245155740674321630035794647058319819477947366808382071309365672988482140673657462821972493761857736382955337777149336484172875593097862569536285243573837380652811640445954661655663200544431407871495506102068063758836766892826217534502060411425754044357330929136739579344104535393346877924757766464055458587116615741265226693399340340037296167791576918952017549807426057254934728830164345865133921610173577299634842530984575535052030344425340879837834957642161105880311175665240415963002077882218177619892982096908273356125935949270529195751972795108784580742214241825684166006222086263858834454491693901393034969067369061571231797662072884657828592370293186932763478179544134464652495795595462496758608122753402453233407704262560072233066166888227823586509187733456212879140296786591709144117526824876563291798978807525286052835416588644529816235848519058866699003542617223316021552132372788449363090624342905624193135952534946202806708889841082974145844127460539469077763649294042441180887990133526392215463121839129482525350960161040072075311164399646146453893256168193430146533494261649140570737366552709472541314104967399654789638252790762929205183657627396610101897838543643406142001865517146787893379336074360989513222477808122938549109386559517473949891037148261698669963147345234426143180800745424149347432730059669810291805052647744141423946126744566715156837905845305723904408636200349603150433011089226618148058099597831191807286747243756443849875725536854872580465986465850676281719930744612539946893227013835416564838573502188649285488685320530219797457176055386446377560367347590239212450239514985480560919037361419145101519672345582184887351809904114047063907464052028162832087025718658276275221732585944944473847742223584451175127239640102498949592022330876509189664173875288373895196018301171644191517995702327004868958967549278431358915070827635211909407014165314158375371780811425472239280538223646625238159982288990774501124288300893418005989524330034227462275230658572714047599070131381386130165623111369601969710739436404686172954446464485859337607401322213320670537817878334303223939096884107149277903934921774487420844122823344484379969406926046556721066202481423160154541955262105429334483733399524288824284889729188062846301252313585561578371587467089025254358918376549553133963328408098307080260741515110798522616326605809974756500717791793235171373850564219396156628602681686658652410869725834200078831532939936478005575404121845332833261326026656161114539976259458509865541594935968667899309896001634492629865496459062749603572367961586005482414421541996403164762063708800497671629644480334360763781080800438798467824809591295176771947189074507058299692217823293187958676024669014638210299569643774360927586137438222433399521957144081094550929553104428603953362100572321851682296050771378993865621266193811252589250432105737574502028535607754229608575690682812361487979728773581832816917942957126504512212535418817852296199031993587036566132951633887111128696792856455446374008598184549025152617668095959133422598490070699886855639443176655412573157652765259915681241829164484652218981934356723226589030450706768708289597455070364833888131765023975223399525251136937673942762390567802960481401154941849298823134838925767016915355445401029378386213566042072171545724150880777304645398410500908186199869186069477274819718528087759507050005843805520460304392891804365111994283729940669059100157356237548596023310627329241935650701696260617916778698310715034811244183501259221547737973376041946751379976474366853288161718140456638082913548875591555421307132625917039222537059200367622290895094354762545407439510380063792139598320494010502786008156378502087356185260702378379529222389767557542377899189001433142813065188501354725937588901808881966402333167088744909303895904979267566253925640294804696420185256723864624972658074274898851971647024869894099600675257593639036423647449119206155779236907134197399341129665066622368813831832868513403266332492580090406698576916446823150982773303375213727931147469528429746978878886199787445753258233710783640608721693460009354243266806490275042916916585644161008075392993572811906924828942795851065965364578078827072110519346811952820544925682355147832102011837002480312405922039068668565488991214463291803189295732078069830269297037474501486979942325103055199146094991392820057111688220702126056333464428247967233624471698552156853797980337539506028617556473513177150580246030234206258824752095358720228196728560110160622274208842878521282164228576806966949818486344488368567994320829360628072298114470549920858241214755076608860245247769101264107609851216706248118844857783004835578870007592992403689507704006262556494747609641175054502416979145102144034427414497931519023508672509482635611226856168345576671326785862802600278776260385590692797964986532024497276544950162952051736575386743232063766032316111416944670752323047456439123571014226885884133712538443666672306312964527337323300883674493123308951578864593049102874812313744930463562695469276541739143608099470540009178363268343271511513639905015046687907591631424004459266730891056825480867826823916284299821820156179618253395442577106381957024384192169148031093974584880431342765223528112125592433377574967054583162571508889832646869554990742644310412476911488679042636943232399639299178269002254953099777627943177728987025213578191095957525214667494657565552106515324867072550402588865106750129113280835189328967028099350544448408687997301360458142991721354109049756227487627006847244898380334218447406183503221125088893755626651045205239837205861617709372387535865505975920750345593096507990063072767425279705126032286495509581893676705059308651858113111372362041296312440836887707550702999049756195957382254981684212580320561128220629833749407098292003505639764215262515088915798417227430389186630222829777889584484943935602428143013486308026204778200850978984060249339059176263107903806584160905226480841967059886046809592955891719664072322709670943088217140351484356857858373035772270570382283167565997759693257031466459707250620895966597746640981407608031536713192490617220306753402733517453282914284789771572081420834707614814357720214715797828494503639522416273622660375151075687898564025598111155815815572220702292886495125958409770599728473429179645379123571034573744179527557174731598413119914373059144469691963487471456712167848855569778588522613287056932815892521702780035118462697489323483856757497943778310114044062946819474087724897083828569742403550020227453684958417686975301654774681192786141447989446666539748751782074917094365442762180987026827472990297850176144295558981468312315160792170361110174617655269653370478995735804832489994805047195159757132468178106851855768123689939616624668623732880177918978032817163999792238516427751025241932787358003373512738093041039737614746337199569774634813952794250862401074161569070545056269975261875970649215806820647758095059824291902447806678726193933032139556855338853845114720638533560415976747340225155341993068750593200670212078750023801397368008057349213345323155077542094982652586598064269845250952192801837892737702068045339021284631972643308931656091642585790220182443431677886642079759708374300626723940749088904623626641446087776960412003955176569076331698358744685951570337181111473417298879332372671606895880174192536531318805368752913992450612107689080148019234046337013663968304753519145958468433625687538180511657402017947046774215333322146078827267856790411383647284468424769039262958632712711716825532395317457788756975331691295965947170105182691905817480503197411135271402601296316512948435923210841875744207432666048049957941978243897228174669149685833652128278457944075782445537540021911669296832940272237994272997774557613888194398900649309135985272005578248726624398549805160085442351576333351198714312582656646382365675984319633727153124001479032698975864917684486968397099556040929088533791265906989231453366208770161147191920761596472894912629921417769331282945358127850271173620487858526275905670575193036401681276982629380946701077418776019754637370034081885004746527434526644012987649946575087324130798323183442397713211961619291443216128325120322830963948980585557080383137835371271858178927906381488628476026963267329427749455301069921256533372080629158930195369975409421645503137373019003327055658018445939651304279717954517843901715462972506912908489187882485299845057250428038640464677363357400799987144297230013200309360094655718394923239473124197707662498730222638955327832323247266050045749122582731869981940639270570744015324393856484301407651790686353272782127789436073584236838326429366367679047710585314837890311704886950953035248395168442388042524804632101568233296840566508138712173640945500239956561279016825009911975291705891568221831986509223936439418730719097276907634013906274084476943935319144978066034200104383350198603293288694940334872737253794370893335969114436668412143708977981621093873051855782291407768492766089001690414209220831315305571816267311536825011409104561501290177039718958841864043523621643694165666703993571770454353558696457081148301185596398376884536956732591295292498195244622569730231015251803322955495865848776491422597627339713820311234100619025721524363132732899264823787450918220454049279509000803924848588045184143310317711145342748113303268109100047329557551285032129094721583177620527770509903160700680738036874670775779100864327560561661543429639667318027189234035304084308859457744355493231081832403796841790022573864769368913634825374313147980621685051777735762838123501553856284478687434023652174865230657108304468063105669759670997133408275057727266576193083072463409925624541332899564636102126993844067768715712749929604008579556472758949216481374506386958349795439366422270257092715916585231823711681254290613553827578043426588766153331320486407160378133877831454436568347418504235749581845460837648090472559217727540731177628007831050159773459426417091498481442245569444696397096523626583805581718426590954047293082026631408411780274371344803070607970444744662772398294248670126682052521262193678863718895571075367562504528232051019720713712743268823138950616045020410583392273999227292375771741860586301098943629000416397167926054836065075812059948084331590688287304228042467989723415751741153368913597723502779713724263217462825856072396727313477493887549322460387708664236725573898951224038746017349674082702252196418643730626325155347520342429167958472213710040616271367942327978913418439468514629948189042596810930531143583859249333126711399313762587876249319843017134375901454992514127637976745711455382677882229766184159029091417369649125730179430310298471777002575018061193575395766540511452539259801650711101143356134611613478195312348016203143411703430461087427286487907394781140367384093979534342000374440367316152560803650459251382313134595714055274809778797375320226347253038354310711518547264896020176938941279808502240777048003920928480637946147347272668155297396417510471155436870027963616072861100419784161706206888720610131586227841038941874645793448439861048339843089269781640636837060489083643429110078020445408970205333259277238726941205049218972350248239009226033799143788571236351519073330400330428219140095059538380153712322707948708909662316509814907387696718722930224398681929385376074411030380884887844674351037975413139398931354216338180452940384481747670438259936830101482488029070626078817757299948459690665095535600685153455579174070570597840349971344552123949427520195340725238613188310365176169807104899886296480284601491125447652181397805967772876089119303063375262642217792110849742747776894276067090503576961258541701897791922953960990929260241522186884854563193803600676958138291889392622654063228743278399924274281394839873722253028867247060528248052248733021149460276969010376118686943656444372257065653042051987598586961105199731211593054151054175207678650814999093141943403028236031939695969754752963408871459396346241471075837714594937594368833268298964385878866923463289407129680976035525741070767467582465094176025987291330340993594061932563722292070899477186728261304976041166763132476035699304390714983512515871545897293609902111002678393535781226340851013713897839790763100449225423868507386484448001981868984143850578408605986382601322495903214117862409490931973127670875522241810138167755746825527195838355115545507807578700774908818965745550131610773024271219362921001405273406533879610225731949434382292751413654694252987502787768562883220553662639414944338542967820894672428721682399205297570503690356984179245123091349763580858689366081102421911721855843590086487947108494676602728607254795731215882049904087361924996308297383053387817867781949270004060684908952073276702785380743421606472620475141276362974713311207250825644716277793053130626449457882073587716082682243288519456045547299674846138841695441788651497056215273183076494611805541833018099497896267500793670687041361805248569286619747520743303447483879506500671725138264325708443037242570184025707260428024260496007158334051433176360477216928708485453359600371935191613669926114405660637304802529994337493818526274357568685228908439468160511272861355561973043945254130081356150801377407887721752919320928259250067038443366734314786685175973453255533255271280776478271860596835966370423393455885431746665912591126060222833045225940180542935582439243966430016326867577808748817615615825251806689245297480286721882697074780477386217837221931718718183703864379674482860278271153574587023156502483822580857184718726678993562634655019928297700524928379625155368689766177266152563770787977825416781014597420411281282061070045034997001814030108539672089210230620400912952019500113966959345271951158845866050260893324037548617635218508169444623456708664053974114269713532986388548121393605988591368208159718114821192335600399456603987621013190225731945260282854917558509352291705743667534169504639189579123420099030234616997616476726438435593273930690245328363596146505625768612384652168058787596595359719343838834233241314549135485460410030790888334943032045190897863683430291734815627905440232208997724543262743505887799188979674419235121053500767677266765719109962844246881762401153132246134234776963220121953106222469878941052079233315394134682004823319857253998470715397403549552699299541043828600228042513081815225777278457002720471357050022801476406933345686932830886170830057305167940698621186364239051869717947969620987277821778419384741074206451185553011143484488458809787953118505824658466496266579851265785348461198070957920660302508433130530767122893440393475121277770853460211455143791881212484838143903021941758560842587405259083428854851576851632977137186286008321721763838075448307953539350420243778960456735858538357242294760648154245030507999377657889031478310767137865441800166775197044096029731537776320455628177860443585376449899513433276439068734116932186439392460102185709613775089591612660800874206208835784538769323812723886740925613832152907807643366893977547322432237057367947708101339265529752473797153248641150551146186196533902996492642547742812985812338257433883190228407398855216285306187453885822951862258286683260117250694956744352784160824563867037540201680226036080083117812445976780174007342360278325179563848196610964301592738358035614274495696198992403883156799572863859272938288634724603160945664598624516786582447903873323009026597077995167506149006714538260544543231606680816040815459656082118711812208760684545855761073805427859349597803710201402751947570139585785156870362484718619661827694387223089419064287830792446314282452243521138166070126029555152036164386773852032375305624189980116003231584009373405786399105631749146125722853891930570631355700365721093382049225090506642075610391733338706028050068754601072817351064448956218951794293908810480770995925317085826527659651756715906689899086277155787576833450526401572726902784189354992726795525310299050654758110741647852467944151454362927497306126992727141600384340115831001265876437244895572408159347848710642257253043919285342086572114859008116479603729791242705947934614065155261047360510221512874737121042050278786996365160001118333709662056293174048579896586243491585527251807678156591384536994243881316271484348075076200611916309730604597121240396880065031749422688926422940614935388857581087480126977122617612817969891754222658456136824630119759987296350910370878244139566090590138179962134237066772097502829097745126465052922173640112186575772610437919880176628587459513310153295485910443575049894559405423971427369830988186567419485016261520488325836351257652386307273004241429426519412958713717595466621468653482021616437028844325912893335611131153555536646952571060857220035940577772165178048536475667228953093078852676447566211934289391415542733751448051486293086989234756884893777473471838140195229675727799624063084279860978966470591856993375978839553036655131023330548000114133238945932761046482804233717200736619944266891536283714959925986506818156871213555845313442518431768678107352899335952171221876854472832250817041747564653303860805517414972996443232911356012231031637989852656422996694654056906288225210597298134404655574705959391830532605688994349554825153952173661171572134724800885387423299469868009692004498501828143617570301687924192533097770105702911666998190159239640398013199311951379811283907752893952612678975294616073484362887693464446008714864024127703827698064220707272195581875989467686443966772025632580515825162123072371847196397800535643326397781254209408980500475480083810534091050894006377414766627500314284062809795790065754017451999558493651158456281967919255389690031511966942418549943914415611011397734079488496706508841449057460476763986715581081309519592281731649213880327425558134986655474590691447213686490459444802783010720218344654478542164285776343088860697353213449307310515820810166470388165980002601764609920387097218458140194284500708016484710076454507267373303014099270858699717282050928211399695169410713825838375170911458685888487409272752339322801727695874476781681464710998757472406895105790320630943946484336750321359753244710971394809282456880590349152713826478392439846392780550908782701939916701550676842673314647300101084463487684156467718458990282763308378818979269708573916444751587937283039614949845600040596361219093524098483731216893836560991018977635949360923339733150712421172622791954808297784939718966718290338763485364611968574584593414653406131867349202581910437359911575319079856794500863184574032136559457771710571706171874927633331632607597967923412693204555987663794760460378138837170119884617072713300646380530920193667684251607777579364196180464076896180878083429443251464551750137523698646471846872902606062147949958127057623130215609964428444067790406119172465340747856149773529836520102074700544358897234621390176994594555334840384490072697223092989528891886117637410205058216374853084389851516634626672846944296704880926481535565992748939164458229760690368287700903204156109283062971017154816933457635329845391296783781657598984772035617469449969261051108523567081548467453303449216165847761245225895721187121562171331548641113168581070257796342678025494501265107849877034352408999223001238870936878748060307995352427377168381560102668973097529288982358904870125386756571887763255719258683690446822663955333012973487530887523449440252695364330668978096287760487917260159758759003710769508570116456610851547478519378230333200059579401307387967207881804542010597018547460891849542069058062831258393128363140147238318384242830585425423259276757550183009430159280627227705202216919588806106175559422489178140957271714883117660011507739139690941954178537394696832523890713593077575030054147722457641648606556002760618887887872354431745851646162611091239789195744123382937678959041088130183482983814918288536399390154390861406763766772612125845844889404195896952246266209331845242888470833943600947239525635826108669345648360353032286449506668897822148943498856527151899089994690186569154463494463148593526584152094552524366536861522432112208481428270209210312954992247356450982173608175926019249236466170568795244081063897618934725696230953173163267012334709267277628172884273934026422315345004565132643126262446051407107963943024569217122628774003166825764185127428132957255157295904620951642398523936524126421298617415846527584279976623817545361145938098606846479077028574358101752289297100680897527401266504934207783657922242974883606589595041712728601114804770350411965369983991977843721565927818572420907092728046296835097021586078787895983683724957014291633016919734915094692579765362584933946785401539526552054798874479280100778595194737202905785450517773210876274093904627664217087896927844698830625610763159808541836283690407850348896935127424895056616225127284424187111139742175769861550367147996287341666336816586036115776347336990672752436407850425870750711759383034637721808572171787867040825020825369763806918897725960272813551766359555369008298102215200271840857493823843463404151976476769505608245615187745013037915545426159678423164244226381151452369953772180122918969871202684383485008580439266534625435033684144977481114282739006298250423198047684964045700499033344960957283982128721032951871463158008285025630073097199253416776972686851107749747683852158793097934405536753348258700605421904521193720817527802192331410410167754245253828966667120896869066959741527534802486538697794814213081551238950825686104888384345566019451432875095678509591123773364629675956166623701594185254508777696855938358423251612091029181705819520511995020324893680823983658984134445289463251417921047079959681544348242336428226545794372692372710555396203206991378739613624606520414437319512585989691084225604343096279924535166028432787006105654764147618649134412618988476011871161176174825296139770426442151952597171148059857316319008217511642439421339992191116988270452454647643595266533445460164120229370901713171574396730622549243210689207974175845613439496485786369415702418991606815957114837924706276583590149445053107476328153672371988826810830277631549289053053309054056397421510588011173173624259489772063693592977926317014152177375082128981735111658860694491664487987631967949769807211387225025351160668684799500356146435491786821023379557218287165152699716747171118525681496572817909475636846794626922914145982086075385361325838128581047744198010148676426121954391485321937857223161175825745056379055203003006595475315650671275530113399251206468329687470239792286321727467409743890499176605166393398247273451919435714556864025800317756865340081730382008999881845475319289772335298806200164796521048013103263318873389482766238591861485949019415592249047704574944751629569261952869805482847485076187964448389523188801382721625072994100012887347401379503827565429536956861397984222511655034568782188291991864254189364208100428559764048029489244440286999431544209060797068138488071279036917948303889410631613653609071783009442335251021375706468411372150675185052748018623166740072939080961644712911124378168851690687152636242657981716272360112674008531751210187989856616384360844187261263937570711639450643110665869601587690319046802888179975138789251789302033382600147829532145590755217049223373532251139199377816017034353232930969112525253312623586650968120940483680902638372280699201581479597961449902585608256139033694415320312104404446550365934771842992838347917647256247553846094312105894345025094743882025483870962506592941113336939344807774333857559246106447656088385748224473068640948693911792929662160936910059619672058046112927413602641133674986654901459648016708435868287774414290668615948344945645389447500923035977933771878323449445307767903553732968409354651331594086800039943299434520029973997972020872247170358245484929660313095604880337826135379343345675058530992014007205013766731463157062719715777899970301760832963664496180944531769453782786410694541880731139987681946026255822422752659054171154254928284142208850913271414162437760233541426180575305620539545997118869789103382180287927683466359263328722082976983635950507246412751417915493637785599179955551205676131774926479950448865520646766399729756371209292342253230375897171869191320038011915313847010580894751103710200230972068383093734220389572204738384333057138218294008631715391151294432248121044026167344296554153994906802123768721883104802438335037335063752363966230923756628124344930824823066667395371725168787375405371367556301906701555231256553268597976402279959869134667598570433282106971658603464854576559448186332564233083576885215108211555470568611102498402366818718206869953120651745409919029339366558724204807912847311333791022419371599506146455643257205970810996148744009171600944400800644749224100991776676961378327520571771162642060188913001069621012719975616879356579622507774364674776381903557031554613164626183899471644962804093762133482256154093585285063604095574962818486145252296733465125258727315883318762858025160236294675393256457692095256809147299301908675403172012955681329136679068882047847104880308670684528945266280526352288948099858278138122571982152983739507575528732522333002351722882402274236943180747122267073988663992982289793510256843892352718414525837752734906953306316511140402025365081174482742881867558946711819558341393036386744895109077921643201808303348595161703457079437453442727892250803621275465682812470612757948692035787759403645587684714676873970439718927733387566799001707147984661505087965929748590189130046990199204142053041638541204666647214261835810680101119671987328311206675449221050997911479545372796481641332464838396783803126526974527526800996217750465630554455901999964218921901287315769158756649397678923625871002526192638544177048427824854543373485246408415747863083296961381743110326712845555410834065585334970061187440271742627177180135082496098534487371459125253579283846108495733349143170964265783240228310049084999316611153887387929335848986785289051063965455587856779394052512675146198225575826813685160685226331157902436696265382104657711059963750627672290691469040988335106181407050487919764314066291842987926248587961219220129101110774931559694103873166508725498106220854736457563144499585269340844796025590803773473758497040587568475208585578983251114008553072814817975515162557170777310423892854423941725857266538936181854775834841313839485125512987962343883924435731381636727900630356402970925765045661733523082119864477143992319117105094841287440842558589854591828173767027788340569402959004955496209139967492679048761783929913722790282394478743114993760685855036193635726366919281646932223711677067789876561639467819090601806497532157084576522495618669384625407346106291745404000644712749967622926110926484161546200044152526045013361888652066881156612753398387271641012465065069707318230692330636253323361496652636491861710310761273890281596614890906427796771768500304586050026598548876032748745560661889213593163712651738274866879860192177511587628565266046052008981840787850998754086795283802818138145571166593798483487121010056757208301490551012151165774999505131828465141166804040512904218697070700117502789118217881757011799336071951437667206962205197506702210594014729437480127442836695207082515181008065172978936222425588195732376053237990767255613446973970048111475327406906003989470824104631589212628983543100435051458040710820469272769554481897546757952231089953154067392169093029193022917239593994521166401648887303173760071638216503223111589058955029004901986210444270566208516858874657846143291813129971081523336552189346486832107062575055889569204779764011554645306595302232939978957448762070122689649065101813559840804505724400390100140731274834499327701847597741235169746584816061034542545091279699870380275538001012283603163465611262461982199241683458187087123834629996038283017980149937579958385413403809603243055493945124959226560037601755662536726263147071926627330397579739681070582185809912679415927466260155489902492638423698780812925417446385503952752436581448498045175710142530176456434119421700923407054359633030904857706163604945419776662166220110434392606902251406400662534634955006200879027725429514330729414999359649114445390748718150128403311817245720028164207084072322869924363637906029830013382588331716681533121409275188524677620492683809974717146501676057920839331441335611756584004196405884943720329183552267172012464409953109193104049710454987609231105984943550690982987304430567453665294790333675934800444277564687401697093610267530769779736419411565348631451632391904142985508356925365244988411798613730203217953060912015368387025230056729316696207450940869945087085732609107703575196338482810359713713493608417008748208748326398823537230971926601060357300296827790423512116767143254904876102176650828636238177999261485887172626304942740637066087766006899651227859028488435688870854251249934132957461677300849063722412048810486351833607582105788478276415836171789127878751995774913863112200095817219731620724265826734359757292683129297669686092673344767728496628208671480832287130117982942494117389020077301853155299334091282471689960919165874306415046094653794369606175219397793377709436411701831887942238748642178903226315630038176634039984394350259903642404818826365173877094681881535596016212112357381344909900387173219706291461505667196608334237212132322703948954261670700326222840204139808834838490713688568756236873972821185088647876052943858878154398036108452295290119418949379194812746847068787877826948329199738321813637001738698011330165601579245011628772443871742583319681275710749404923917723210534826813556804611199792115635188961787624222838297868280357749144703183117309267451561732636176194046420867059862570128119950356225936014251727432656554580599111168296842324630887916245767160385817257716892264610874515378476279517489862588759400986279353288449526312836989798094315853655557596853192532753111378907134221282861678080533529973289286053959420811124152938609400924080037274095234723717663596653505590513132952864494556996082973482603299570907476825633530733349617214889292079591646400005253626700994840671354257911032060432599968145559797065199363634024443013485358553096903157908589322173912400501417554641945203381956237907870947567064654736441817599030133169874435809850513308409329921637307179415797121505596627843759348316267681547361483722376831266222854853928769559314311516453482351462974230262892743106207738702327583347257343255073418756209711293007596476879440403881872245772428894598942387809006886767765160570022429524285493868729463954967473452483783195930756948684111248218724815254033432994586807855081183365848462785264938330957628876215934018527572714635611604096495848741918181727188701073995873268884445651864477577240571628063643629823381498664933719711731888146705721975226595293355161535054905556748231600295017994351212432809926812793691572968738458934162410920045465807052824075652931748546480433828467277667372465408055962306530236820815516027371309943329749013835233706221646668830065776748824796496873203821515403481693662431358242982021993594749263849809327543648287943978401684202437120984994285358048864996897830595936148863788133759020575067308731921628120931506690622282084422361081564340377067584335899166512389568308722563312370431403337081943127680478038027753151181450344631568051784427811119304033616010480360651629380689793676278383660245948802616400953224491732894480757870431976626133731270563054295744381781023683746687487947327812625037946403068404821179515960011289812283025922441915247660583129639474754586716019428610935146140318116225443698877671752971525506579471854896693299161353633726353720984257778871021963969529737638056696864469919610652990549021823291288463341461745658196818923709158815423854419137415833228034268634270528412880176399743949684098436545151764808037621890474940291574117228642742099787203176241728217728943909316865508681139120292560151696548836847553144520887550627322520986820956728317671976999942637995822917160562059982150970188456881747600810174918503207854335533656744305955848523776905763263118084840014285776681858945949676283855087045314258144345724704848862588029464187573634840404103894223180866712892573156913880210941350057530676361055136484819831153632387796060320473939457951046499274182173765966175071184437117482300548554320910233082642730383441340905771671758235037180596291586921295799336094803054868654783300594922457314712088904540217979280978206972309649721117747939187410837030625379930905708922216077345236391355415224427889858554676996011866717226573284500902317901517915623528742357047892492073769825061274994497768996753440305064706308609147879050235771946584312668535382349863330619689165469488045225400697841438308683420945152313624856771782873055144938330768188830228533484539072777676288621174758383591174373428111551859266120591487668637533805318024668712729609072229398523718086485160123036360459124894334870048496268059214722190737366242451790601434447592620439125925688554378002562577066479148099403750994197487725554912679416563348775203722827618905052389999158549449132934144278869650558418194174029486575083256930594332067675168863746142182765289436778986233090158056667090055114344509842037236512323319173442920502487915350688231536171511956535138984729489549354265465251671905107322377161139341194957492155650282333392130805576583897251810655822378415281546412435625299891570936314575591808748589598457627433128387196163529267395720789091184009452230300568216579476581666490690617079142992880172101554732999849871484520153965790173809175420708966659583409093397675042222969567234085498837783973515026144148606967405013968129221996850769678027727546724437939786764873938639471144223558805453150126362453467688246584507726314234858755257613249372327101196416932603923876678409815426680968536953772663544718483590630542490212830125919754847520844335637870620750259748880143897945855447871222977288111120710289630712401604748081800158699561623039572621764932347867845435155871664158575944568778592102642138913527353103402748296629792282931339874803572049345721207644441150660900480354223263800611351844649165335747129058583785778995953397305265153466457307648271207106933841755284800173286572423072588347389473371265486528906602274118016616051110756361883615324285948255542121018388617393429971547657059902871986913881747913505618945621999243830107953781808827534104830189506669438816895001570614199966464022788740600401449446690236000386752843289682391258250118596826708454171375230100084828038547451602076454797558505213110716133424275936483995236100877507252458154705540281795143591513401554743920227107556492681740856954400392333022313617413096959018661321298665015514365435702958343475405810062289825563155662167200644626013194115124101909939309881973801280180286865651082770804770708925770021949194010407116488673100323638804661110174122074558148849619932527110133296578844209787618499889861992941057202336731010657743493471662011975117782769943100171940169465915041150883754915305783637493031377296530590579478465770266624611418118151308382663014912718736243667811378717083123934037348375351399464066584762968474672839188319976496805858657923172552765177918611734766607409682810368851695517910820668769668535566347351832545331979629569958712385354954320607573591323482556790988242198841428043770117589326754640644031989021773585291145176715682619509712469857627368954738115389187316003486029925804909835624777136546838231786116369428124898930700116304757737511321480610684836361305755827617201183613599016226711933638766282580622454684795805979910429883053195467015506758355187414682542476687304460556170492494222372936736091378684367873477950975352057756769446238255495448216466543884539843273333223119888727667186214532881009420624759944316332604681018734739268009296394422485282107888401947814911435006213502338258467877107613025035095947705497222528440383158996961093244635875893484210009666662621892306718221159954679473204119107776413748627169108288082538945890348944116291671702943246576488805935891209290357044440882440616988112049760771803999205411567030106954631018212487159918607198945919124746583662187250740007964450303400476022413179261955931351541329445132853798807563729784795244975649442141610475973591541757247998997569954312147663387468030027099661032307533502625125226757168214658314889312232470003088587535677296459928834775990095968539127979483792594272168106749459555437523151612089607798139426399118416721000060753156861097545385092959830630086167835859742169980376554048704823365476687556205054970720556296203265642804404727609836085432513642720867514338601381912016890811624369136616317870255710486855752400905924014707203695018688470409847015560024524407697835118479523666407996324795730394150028766353286429089314091609420610354466487372752424469117223028343625757834810566061763676778713484036920142890426174023146532550165037896102707773795614897651004100247400667324000324720594513778754363955337370681133645258170004125298192763856211682951062225505191922440782352276334313631382661571181056123791675308882205794196814758712847895769366852738274360948123816076880468863766695051705628227773896005909629278831082009441101378072644264444932478467388949730201378589199338380343965510539581407166453755471188591539285677920199037530490172069747046519898015063067593995810243717296307810419081828547283108804014997932480345390962510385646169555746274377573088174671759816941319925564876382717936558003743930918246539164196606943327982686387350032368843079018751141505227151744897812699112403329619578899411423132669838349486271689054354325994667846159280728567829434554869405212989594836914761785595998946837544782925747446607667735586858010042744876417881382106283190466530434705822249195208544537073751479714385486563936276518740977911982356805118902994831541990123703739712170589460732303277262155203773917638164926865647295106445114141417586673558530367612784334295110784454381486543169237678266515479755241012670780102918863842115645310362812679364084847267550298678113360683334043175078590193786405982312460113678779634081633397692133306453783967599494227583173642792981372877123289397405148402114531410259019663941204746337648535876417814924797220501872087767808147371707591438823927918908547198125478025906774703847340249860755993291076735291331431147473039956347563581562055217964550531406898256327740267512363054706301709143604432824645393176274543280903080113961224085737885188243085241104929914707105138074352242641728640808875883374933468987744492422357552424257809037803052504496823624579137523668996193929175963007024084495340296243421808034237363653234376851244931100227252951932755614188260198642576960001227335488545197773575697835079502443854783344487272928756180218155980756996372556196981120682903756948595059376528222210469134771206995776291814236124840524002555833218474954529629397333473583277232613017497675427050858540750216363548462421940693176688138283149332504084528013928357341391030426504389478388247833058556229774472475735418107349855107671151140414476125426705940815170870965340796792926672986283077350662694342588135307003223190292222414065390141770012959411514248839447238944191012595787558619114361833154856048258263354465642890759957024310850915414015308735193383468952042808821263510175287467958021562255179950695867193590207547848269460869104879043399452823300627960234618114735934916785688066892497927050557604169560512990172643386168363905045423545070469287623651361781522792212737981373638590145508807619640097116186981566485137712841052108180343496717257267893474126291451904058140714319095127766322406610545032623647309297048391950229848437892159969850135226249853012771563966507170018918718497738256965685145766318386454182892526486552344552069343891905764896588637149459107994827559748011905590960924451663931662216740718645446043997380610329510204555969398689104155868482486872861362872463965066004409842222906088068356422316635007954084598258841218211504223050510798462976013390853032609672410435342801771656132037743939009563813750435928051952370719826684380509753926861846203613344375962757401986333126130005817434654779499269039259059835173765446046437465891023487566947173658817104448199654809101733680367647588920618400272432890678840455790080044801049488287868510495979827929141841250770156247087981269228032869576901940860148704910174336356899482487060012463352750882569114367832689058550565449017993249335679085575134729129130359832852337415833393121219124843640879462872432600832880562182070132120821414507632504711066409008524912616327851153841020418615818804034724568593231956816786146387484798140697108217755572980398153609090945376754286188752340691484667349324238400949513213121251209136215632803239654579284417768469179024379602197393246428802255652092510037140271493880349529210776067422319723398961742044740206811481297805975661622521064880565158425745228440856134995764597530466683881509534165881543666813245296163402348772399500825043098248261004877073705584336727946933813485107904330325622845839617092899505981949227326210971901621958417551894279565182000945386952632001993528543421251155049118724711142196120421216174769092112445490961434016183418804871101384473623519674635234284922207298540598436179505427013255345283363811657098165872418376631302920843259774375171164336239618766261674186542819986904739405000234277100967261214083201036444546292301959183697373270876691695382626056660658997498243591899546986748900686673644683798588680977951634795039162446476490740273092934949288601843315837713787472086238073604547746523004670555881831844537775999620536518614889360701980321917229084988021994093069464302367757001602847616271431150441705826134296019556026124038731108972345704246758116949033272507911017805896634140356995930567179174341458782055478171090336837027062746046293526682227397999872769913732069239383741550377990424089469821721766973715339480552179750172496764378037063734926293981900757162774821262346558365574546872060937603048093347004942840841209142661259388313079659344277358779012888006953393630870067998511684848208722416656643300343840417989329549720301015377057928849184427026933295907182472598871557129127922463076170007071537861107124785233764096505230418295738572319720371105784099576908486287652990040968970191962541668939287123950323858876564113485151297170341961146188327664763168107550523409070586284712775445334938093410148901708824899239534779081892176083176309894753988564772110745075128057224596758156842971322921928123847464983202610885909751730586888340703350670842900996903425933687722735565793504479337159762797400449260645895088062664919068286194715015417066574592012251289270982036714322111690599746935278859447092231792816089284006711532403830990194744953955060325673233400707140804067181300676141736671009716513226871180094343482959841380283972849090908506266255995429239922094932802473265915580655919408768605764447039762298727411521320555908011472758627666267903725626260198136466088156693022976904387189876596996531676767368465340005252281683722006909022161657348427394145096141430439476139504048774525459977788008985350656051669011647218244723797257353345482427755660630314483936784265521897199944124395749583213767889665043645851593857013173853331588883077650542289999844006383026213341572122455628786979612688208046545339000564992884793733763885376746254177416980234858944487033335121277793219544104163421101772750759291009526073874369543509113668105274510666925727194701126088479955253944003870259560445007049802807157022784875145185410727611079961748027987999946251273451114269015197701807497398193788452212448230038903427528776234805309382081953897972110212129178632433633657348088550789342140016738018991756718316419772778795135174753004176582255394601488996939944593580330123680937581685064008707787446197280453371130766415435746584528172812702887538052344335269955022377901698231454041256210097778166536174771626694867627441889161760473864483791672092391251054763646077433780856500309373428032750264641871246362193425986180862280226547542860451008353640937282039654307597269867836384035491240080556016652360246510250621150146820156969755615475876509117489174079525712142854703392149508199628859782157167122377559382316209071296340871642333848918827851314198226720156899787269327744520679834936778193779704084422499322188520433891251163657418010462965008254907460392686625354460858303013792521053257663115908077980072363410078228811647595975865670870755654934991845703427830769801366046392657275232920552825774978173069573615942296216621888254789401204240558242481893780761756761845444804758153045131930929032138110231660934337782159506970838562814006975020932247809100463241188884619867234403856402821179142793643359200227664065362642903869142863706636340319227933296297377893824743172798365292956050194133623740158480556939770422031741829045308196805702953470090126781908545582342849938777350294311700107551856307767744522588713789205207805339982932808287777269101798850639031259594718769837018846893504397109756706938292850388060576818352778512527202986304926437358246134708050414852348564463756639503623013718686219371658350218381008261044550019745637441744184232023926301356382087770221866882430014492433755047629682987390461064468145290324731837826356001960754369479079841937986622155872312899175194859208439227952036463356357344265219322770626068091734253182693117200033713876471595450479799411061104956623819583155900048214632582922485674190816435609115208242258128534363797734281393881493598767138440185873525471877884770154159253702447986065473533361814615602607692710192869069088121222606130036815383359622251228273239749133673763132364202245971069927137372810874052747306432870010872175793005996077745639326160759677669620882828077000012075235869861261684555510460852262836559063515166827959403820769088520473794083187247152473142289087003063032193642291787817710778263386140000889878891905720201137055600309082191156607856863008150717399701708911411526155047960733172025932730004014423341032278130535404735256848474725685719886252866245379830280579288405250227783622055509318519809541351067447697623586196027613279423118548360672229603951625369787324190944539921399470879986846970039652751182778959745496128652888096883966625372362281901947616481719296638608891333316880760736635783752561842847530046977824693499536950531128612217135156210152542814325577263401105796720836646444092470864420876073948469088354131007128294124574094576055173291076622662839862650290205873756168636258592529441671564719818924119214176954628220884817901167590096265374863328835588257943880879456822194476454752795048580197218317980601051041706808995388541137733920846940181266023687393033677575738657816949491001917158387531006246924642307470506610679408953667482451645151215701568925362329227892576868661832829532247204602780337818038917389694884591523624810529813922677880600848750412169850143631666804355306876852383331122166438216136448203234503475569010120165863378314416758700214932459208282193718734156554106505649009256122883815877175008241668479019723705210235579341442506449758686152534823183142781779534451813138517884043613802530234361738100627849909361031931528678980955588589276630370253609920120696565694130699881252164378784153336766731974314789823870707683508164596103410516701825723296008816038167773605026694164164418855309515480191265552991757918124790039413234284200879847075424820879883008231158605630647612781054862053396662711222721496338460644987356498829991044418921944059839352262286028844149531136697909739981561178631982408591758045714675462705093265638249743251594479683243431944193754801842690270501744801480302728483709843104788823220070936885244912823630430452069156685012433344247615998917989977858915914731386747969621916831605332061565777906219611899089548112897484648836461913552260317576728082369387386145909330500351363748458666943518468851543385852945619963805517648939952918062135120089428464997951054645583313331211209413479315119555956887822298411628942170786306078806618640174993842730948592637348150997179054236704117136715092771512450060301386994282643111022144205088051760579051331277620574204238799100553956938590418712160141087910158613885175149234762175367018947448488806660263910176305725657727967331022699659024051966107559991118157025721529567107170609486737923376592516942276998850863160636953743523596016909815660648340019153170286744836531315376116882607020773153725154723216661402449214128234968817545752618136352878712555085386742750398474877456722712071714071685820959239842934529773122709718765291787348098492963308114783845155143502016465000229305582570652406443430153673234889394880315298885308505880358446930103353220871787321941836346207681139587479906766704272892706875655584017319535641113960245919649833210949219613120333559986534247751958092974675659057517224494902601647214557823530421270385533568095311446183374872465660544547508732501062227063113326991713392078572729454365004718745627948355780214920739070853662718096428349757030019510277539999969276197038764402263989935317477399321783502489720954229686936503683192846702426889878327336563010839630433855124646487497239930630829796585508686494817443926502503165227967462882157015470375872096001333190772985777939417596046868711149520744705362444037929851501948997799642404837031844498678909367819352750757634981049261874185948264686545954261192847254971789502438757551953961574797714203779072926888486899272898994778237285624187199438596962566388775468643703539917620662906073394698731444791063933395130740155855948159693620134811563495335461326977402375326918173547428370585940339290264785939453297340503067898842181634353530220617113554791117780536881157300839852038603408612188454996610095923176898574038212824494086703047988836455456330631118942541552198486600636292281429054141555434450884029697407658973974276062141446043386341187233217313968005023702578955848167042087617189959909431703963155747259433005626180257387821970262614586134426644347897008145951448384443865837818227961795889073801194665044521221582413027746045112150747534048275107457969772044042961570314131074773391641061841190541503029333509808597846794136948758300246886735429964526304027269001617486394078589008823342868167290595519421322301070110843171812125420651823345197093529529002011274001480585140172706270693101397199758001610942037017860538092734996158605716935876000413301599527036092589183570850619293014873750441018826756339009775727637356173387119588151931942314929126542635573329475316715201182691828155525757553834059816198558661451000725236907829533626413340288037056375676024923796133685678994379358191424485034288249359022055168857397407148922925693934890412652098590916711019720783801557020644731706871878712116493712609103620394651275841129802215869587011299679959594439372235393772417377177006888551391289921581697750366578670794024189000004420373265699185912841606147189951297650959752682554146447148009159291088258667601637396116866798058900939860449425190846960810578581731359829896241672420005246279169846677336768482516099799380827121249286840361906585206609675867231179743120105761574071787175537483935531252680624780685298876335128558867076826295595723342574300911284716111454150901715938514066792017149250431754231203687071318981405553265557062025891662228163049176977217836256543618935189780655551902893614261917839139278428657532021241125182972867600663192832059955903480202204210099118066248329510954369068283896661552984053139023361977134995382235586653491082889039860563215282479266728502288541875701459103088921350464084804170643569999495294833296848142492887950813298171538930251639675494124947998750378641142671363923772462153843440187622649934185207868404190723232859309540240357135763069086424071391163856561635655439467041031893038043893565048537585811428983751307584886360224386536701501951444939243229287297873982601690060293562746925213802704112662037502340729679783735346854686299502403347138950988014309406913164851525666220944751530913004185926705113712598838760883996119914640129422453067761119552989395040170853819774605777975111868006251318878208584925434485707260803299843696526219256902902699877811842256071654598743342418803183396651037457258671278319896494926044811801383999648176401543467834485935336394025117545656909883864462014571038108286256173773239516949078090233947579655896794390181508745952416061501604635118456272864440420399510223649416844127987441893405832843978986711843952264386748177472000826122348269885119492548833239261491455322015749910186436796823510618386672075239847088962216530573986805333399388074243724331753707010855599164232527746522962785634237375980839654389842819909257048357177970695188096473662473144973514049572977974723846688607510693258274520735884771518382819710479127288613565799150971183815555890958251266769651991641999069559693795070251966377566994772933523398486376834713389822627799034801439982995347803168096780388954697027751771343782383319319041701619829148264913353197557569291897947449245939977590657851614976223990646638345534859480996013875183656107139865543827389273464672605567106772943744192269416293330261436049692607774274560208157498785379844541201184278186839459070017045761928780001486410557252348175073100104614576233630412416758954728140100916911821506428854726090284253847748806580968870132908890476962195140821310723329654106519419790788342373649899355140271586942764944318872835853620236950087125847653428006540190974986978123584612240163834180506507044591279050353276683100789763697936992482529065551803788416447776874101127432878822366302674061298902718302474363624104275769696536781502487281116640489044939736916121427163910752615390244791507246810205972088989779740760679572420089127845560933197702761451833056323764096420221361043866483122877154508271498988248946582934750704573203094017943891394611219544970349696658721228659946759657275369321250336365866508066256983200915955342185582400659373594185059790168658653808831498434625666867954514964705127123434084010527071806867391122979570958097627749430202300274890468870240249667754109538010469491225773307096835542049420806763630922762383954849765418985758948421541550060457482646182326317292737683181482083691013749025750008441918759389206151022365960785169944809722011738002828681782924474780210981536319670904161351086983386973310187998588152185881659414319584417872269421909759183167198054728325609879720659068279812139269387447151368087766285515552413702902761210746576085206134016717763983420798797680198322346472932221473759703508931589764286218942844917806238336202628463605364495870597178069650446899036484626465283369295648239821613071712049844883972632874446668150893300356145924341482419114578738739001631739153306170535335776541759359588570761196227336860661848996917814038241621463161527196523673288290778525069477279489027612685115347992739171849626157474401134971258355008510924641256380160797706841804023458035965757627585343302501873335852323140872452051134091562614421298646913783971677212627320334434613923357342504591484017986492160619555499953217354987852616963504663935239182843650935515801248421985470526775129145737656240331780005528732833172515064454226962504719893857104711142971871575824678593571766924664962035724135758031861545009093713470154281203827112563022407417130427003872356672213280693960299656009204343755415021054870835078379138329571746180411035004422006648444147026018717736562745000591502510685579683644424504225184651139538271166188446984778428763477462377121220515979551392293856768058036742635858244995147717056495013822542367069216572177689731338416645416984520275438316339720982492073967488998480447310619302228632778202342315899572254401097775518659675905281113028736828426672055149298415930543644583299894938849854591884625786597976076148905499064498111596511437721492172504608704712558379023912137028934566856933788544561885800102143111935520388709545313054701180539959835501554700774401921194285341595615609927199834602746026865090401111714083215291477625361806701212523946452762764069588057147723013398623275213429261010531371098072358934265288347551153016348807902105460317478544772909397337535047349592672978236288791685040567083896793862482929286373584433966921398795508901147434743749150702191720116031974574390174380654214224333983357718296353932663356102368438237767519951190502318273487836778337401335610882662139119625636281581674275019901881303645894488485337739838206691030271900708557752324257701110576231936339053677233844758917147230191349492413938889580870372224991606446853293409521855718614850791199628187108151516179033759845840013253801025678493560232681641304112108112474818053190514476241967303349901680111721830314373199916363752023159039172216096040398206386958897033842035149526497905392963546927973442410102492370431053872641818939666701858586896771850229614718174668054906273795796004074554110835874523525503818155235738678387212374607851164104116800067312604259343470747012631680713162974915978470939170411283953788649257522055039268800307713375877833750009581677216032221681798969377780980220452118875523278788624069739849662147136951179472154621037540256603560291533577117632664935619117839077238704762916326765231557325474331245957996294551306080881243579295165678405074095208623705168936421996689912427290118746617905356060934695161359869113943077710706925927325628908892823914355381884703313664373567020131819218845000315381667788022212462385158282723612504473023041957807624306077130129350913856333956960075601704030012856541432377952909746600356902101334619973392509926152964070921849265778064403702251461843177410161573209623688531408406494391355503682069207394032631734562105345248792033008870482322617671914904294496170517668396427953305877440291503321619159869352351682810612456968216003598505973000056227705554853686489330277278303596580290472392587795164995182679334453872663303049876952272290652504427919252405070092472386291845281438427660204870458321948280495504612198490715684426564732458532995663112082104741630676744461988692006589312497694749077801511296983920418839582092005013402576629950948580163649532703427007426432389781175841837913119420028446146377720294549090971674234291294336155774154654613562478620489072007944959464905283604545696355109227554082338250855964511978085303471569075665890566082753321301502137013351930790568585085933265946267331812459869533934816799038152962880016965081083523389258764024204127576213444239933284672631710327626786246739618068096155473621237402295842354978730632484787008362623244809957245375563978031921737344156846951232303371654840655636792668504389134395211180555075231766835489008854021993211732012173795483457161783974145162552172263325299113896519200183652621128547864734689329129043167212550841915351136277667096776281658100960121898953431202631890821041069250350772725390513558631010681338836603311731199223730068014182505048720948611547692843148425605048565301691027862182196321601621129350030429596923285507478323657221692356723308690843913908591499839373533088418891431243503846787162312562643298559228611273405593135360250961619868089442429158997225112153214358229160933914870393850145047345853618948376121322476559415232915191877029237325850651346295696619034465132326927604141384284104940726278635215316755188612888752738659581011899304537523298135058840246249652560064197675468032025291411416025385644415320740667463685334685651477703719898446327229656510940988314565127064848761318953581858351461732789493857430814361099277086322510404445778936607314612848209756329340400955515706615044794697323193600954340388353071205334633123216244030759196302088263730839434438220176699242720517277903700464572275334937875883124493772882846045277982553589974629117190497764308065457528559413528959807792248134214916122468862229357549498642864549730486519333330154842039967723958090367786003167699949921979857046547215469439799364442100176816079270513245270703533434553025396447081487539555318832539188179371130621142200959848066887999037309273424700150272311932353567857663256954877386102465181359815901629054777686628508579239454251103506050235196071041746337556844187359273072934002017679153078375989539744729237263587684134586640225550945525609212034076075391291304002081402163473284610418954632396328857486749995279678225227256974932378063748799605975146617407300646508445115281248229612162198301621332956612438689949221441098860420466989648211430051712291981872939578475060832434124774401909571581335587494212448818039897779023329496447295494610097011107120058180929880279301735722112856524401524074926896014586064645284025787357687030324845273763618855243309152843058647346233344535689968983544373768585638107466729737579716533176733063444602877344384461942756656008956846478175751195439553007713686434052309375584244812076745945692479279246221610209859830054559608669121887654025346879940720496967020202703441472992719684027099761180734486502536272885023848507173354642867402193220140279284371768195890498542563978674258090273083406284645922230130239020102712210494064481470522553913478190344877949163664408936633911871589119409241936659756382528369644022186003989656390002555373558520239307886471524544924248240847978566946893939101591618868175942692178665131847265936291855693294083832720606010714108593854568640805650280653982296042382960425296870042994670989547418188584003144199449421469060502441226962288210349543902178159616265324540429775549432473723435183055724335388351155868750570052984030870821121110925762948605399408562453447474998540696873065784427647197962056549881772705589499511876010234713699270987284498067943973127550307617729829083158639021609068198694876166876248505257903456842493152772521998198819168580950800506643956053005244298564883955597205705779107074775064954920560410320581049182069827084333906316146693982067537663896166260102185217451693547512395151650251860622515442768970466890784830785023584168520108782348748015964567962121491137162606957108358674002530460748205383953311931542645333787388239190469357740164664752881822937607530195276421789660224228157624170272676204986079350411165171668477433878922862150155492841602698502529809632930815965267821051708894288770478027072434730111743849812726706912268742913522600125260152415983784008557510748633763995256667808188623908960244454436607701551981263574506579285008254276518203466756028858282093035836235361347783603964852377096179716228366493876489703845803411969800076370405930064971898362485840025151495735173916795088125714164489697539836263348111489173683790307202342016106498929471534194206467703670236619231745465481970693851781290363167952253668035868270635907398964286567604439157326365149404098771592823051959626330984183061515386612496926793348619169953984381772388057378668493286760853336216274668106426407527231908569604709114482933617709856260081836957241189749944645797329154407939748812423407156810013908473229207745595810705907884066828703452611662322344732854373024377401412454610047308093529941777563298793420391427519327854580757916151463558076995273242967895024401942923083799561708000364994461418363049171823476187087416122329168365600810280309848767404813737976395304194996032831522151961764972747877338772484360469103150653334498732787311498045148674077952003826137391078028514781428119356663238317066396121232537990181244318332787275415595691392904548905177358554779730776950041394122806878076510470583183041570463367425049485043645861145902704280557183873989291212852914487588556799186684004802978001651215331998455651103837955132274286532092801179499395604813080715154519860263700310884365351662103374030380931166615899627606037977821444202747866756643358465980273400453189790614209351771580708435419674101417138520493707039678835551378289683766649545437222629278782431910915081058421269277151198486015561392159096910231570103309074696299395572833294307348577496960429587305924394476128208052247898013579959631330400578326150308493617663619541145457398478415598541416487826379968354655484965068723893330884632625022175084102212103415723304350684194338495048521142255857926783448317954281331806208263973938712605685207048807943538009628477868214646499343892806631716840775702269017254888560102373194277416489193702573192141464167104411094601781495870101069937560544816430342843765000185087694294109517379745551253275669994489253566870235359599618761510389529752474057384507185547341186595577847951692333919487375646288271335794866588078842097564262792465529146066013121647021630051214344269478784519495076366587270005550049290853735895817324116471423270904097376026507457216872315838742113636491725247623428286974441982482280388723476475151626546236640308647698649552237926898723069334491388369569157461120235275743310654926509148890627919824149404788661079777951485718783039126594793790493934837632272038076952673319337864292464272413199626321895272279651140984849048406222275222219890664318540532855583885944871231060639338572144566674668776538947303983510096103681508670895861382381400085817863562912501268887940106120141609143957466041300189944913424617560768100757653888220696169927598994126820775760653942255012177433692733651851571701615736155718740971186075242457041435668209851685435157735289264807875462700122432055701066614865410665529700412389926502275686320491784582955217938654984402439060840146683080407552664770063925635526050463080858828114282176733128692352948774295269789578714754546518464159739368247656938611175427507963676762930111217711115010922965661707024730756259468765000886192319602480209338808329899589964319459500333432847690875587609057009411713431217754219532035307317584264195205547037121433475619158145006670933044981637849027067346792760530650249839950797398406957253984643250233603689536500115348352442405508243685994615924652297335830566863468025737534475101122916901597307992293962994494399344673759352890176335860149830427005503177390882080482987672775524047013036988691137916295110368537432905088446389601442838168373955354993727124803940619312581024222502624579607407464427516137832912786352225692326351130360299227734298406092234981382829002190785281387550007498354887029411004444516914165648804193042878699521261473701780164884620283766110275251663034704330247039643971799170174328034365591078133392070417765385113187861859206363167474400055371522655576564111690484772582761416701725550742793609675600124777274705564250490856387938169017584527257950204425104947104591580745280320068648527249236173613289741857272329889474646530591965625382291877394828103339827886269448967867874155679073114000272446478594291226779839221580789574165361747673700545714324391771930089992532039355615577083805771633874606169143074327777827419104534703181950109061606368162264692105136994121103650999825296723534139959131038878235300532930543756892383774756907458565633919249369436924418350650429983793466837355698576235683341426320550382435332595774202086544871428036369774787407993903092029980844950366908626756423206835890915388437771028740118478336880793027209223414033329085016046157974606741185797924349530029260068056765023731570193696233156289520388186237465904424903321058275395587189939239832146040205150736703688901108010296342633900009000307247141435425501880417713101306482308525360997657655423161847556603523590323646577423890102302433402317529715248459372995317524973149732686261794111864090689763468092000256906411218493165600107624838278767380598788192681385494804087286890495618897177269836602529751153760701436061267387651889477636594218394309938999615079829796178129043574319555923733811027118963137148093082842236129344520021883930563495346174074879974960609172186419967215165819374469669659354675406774817850757154141336923629182270908895148819354367575871101041686523030055539515399015657974055645590968872061972618672855628649411788207171212654188728381656788516477257101826474128931622014348057448157727539922781409191303884058970991774171732184619054672677676283110527643305014614229403977921919447095658985410325011430105619964638402262571004988342744843009324959535176390415349128243011684776384819885858045418926055060083651571505873586447405050321994689477546422222557847335698524674593568868742345454134428313165210612571764414369719284736833092363337574147352072730297958959157839888145537305733832474412271140427952583024179048922871998780707105537165317028934810935334964052532648872237327862182119128247944893218196267702257679510464020538370595748934190326352380807252914093267423022642024165602352252875163931504828285670509826531457067884789518707436831056737298600621178092229130145221281260954897684018794640031283375852380367222732262144084660728693196987022336894926168308808526201777955990428656235359805557107235663073990311802594842106275599522558528275898891812113904245431175846002242049326518223575428609817762590730643635056265518270690087220715665664231863500236382140924407370906452645056212139276075936884209637918259084209914771549356519327937617740171934619118484443261755877094679161463067321925495967143395522276908146162636608852342036244661398525598482116792813154303834507401496574469035320493297675208147525431182290851722451366863305913656206105202003782340098505433498664715392382845548579262363097466140676864858590892288491645587647327290503334728021898925406657573115551257297743309405832663129869583024861332453535636338768655838813350015360183187377914060790985815564065015376005661819708782945057653704425773898113630491009016840545799271079697237437191430288634756885179745738870262979624282145091953894549205257778133887203234683473821119798336103231570614644297564161417750103158728742232425863332038978816919080650262848077155345811636422246365239387364859646100441467650284859322273518105564914461263543350323471277010890960917895721025163392086788397265872309122045243641255282448588022779978948161284825583120833896659383342006175718653783640931526318235363047442624956874803530303745173897089553468208725988835272737832783363628803441259862248635270494483900430124648519837975898129119038215564413359098247606750352524220768441749127225285198853579978427595553989911219110726067680281551981655596554880331694689750467119189902881707386857682438348709060790896730812357135892890722216680430154296660346381876019877898193661801800758744917344799001573315178749564165812813336578375593719031039519404786914959660074405968584262640465903798656181131371758417750432984847359756865556356173423367317798708691024790422840137062424170534214243023096430447861798007976084534101527137316123201017222350307878148327960596344849302903616943830401518114798155400005305784474146458097280511846287244785366444495926882739446825462106400808565690190232603446082209554684506748867293029163056509166644584343380196687218718536051522530352587221430856919409222070867594772142785353102684852489116815686132051020045089187549997746609846597595115357082615828205442305519359695430073309009824336453176087174751716350529665994152275221307648403392751509537325250144028666599195671216088740359746670769118599768310796832373367193248054105192294986401339412736752198556701725358778379210863991610623072981420827855856401637082871768470015079196781574285222753570088660712137743534369267634593491509488711924466963598254574166537744025512091219636223760335568453749055701677168562224472043488007690152366206167972745626864374449786956371003140964951227634472122004632696900918284179970857846253561161540144652389069655223080180562687697764192340529787443815912248744358938976549906209505298430790396346339895091381168348950717192458716140133680720772883398211268502129561061023880223294661971250033896363854933644390107257754981878363625637008141494314084768933662469489362232341357849935734475283722007299083673778480033993695188357417727160157326273961142280856334264105872928231719728561487048763589162356930340093562226843269366073820143788654957046799073545001439870380769862820357672881246258640152680020665211880750352320443509151053017589351731827832460785625392168359400674505399575339625914778197582022812217374001769588257007142794960194602417205697044898808937574397453888081176668237833625489276904537168725804260878108071577500914444649949278128247473327126782095104214744242317340560597571392992953634854857651045367860211043913664950300684158915508773881650805151473983123666030243671250713512854285873993437443460184624772095113884290217478363186140280023953819256224521096419496047208256578254231811921942413154228211411266409024814500656160889411853542970507365513621151804214878937552918100992011430697823876259995819414572607853349412022096010378679054371935198158871046097879406627473880815713926763226856202257112404004903237762568119551365678468457275586775293960071351834119607074880945553884715775239899186208357389250892632186613282377588929442322010075922558945735369475416924595611230325076460716099067550800004803653619452886125678297487362215650396480681678723853979208692157121579178470277589045139054958483606034424155395047544079403240457791177099185391167154564140261659524170930973608435079440996631691185371895496716136863860286650587604636195441855092086558965395536847849677854719274862000273328280539273802807925154463419069862963705231349807559374862900722858744441129288138077274018678265693065120994494372770112464646439692686873053540230923853598741174414551064332658997691964390324764878270021015121805453979491131879090647497242657116527966243139574451378691957426447208997827810122448336989271440141424108708608769345127748801688122802067387978115351105961440896719266920316734774187224112469705529541391985985001262995554003725656424636338984468016974886351690422303336771817423301104126270447139129458590463211689414511212846313151099800796503702646353434497044844968059383865691166409108044390769296313930484086767911028354421978548352551471134477978908381863928428945584405696309095426146575553897792645236463898083441143407213058120261070003742710344724275281317642060644334100709305016083535154913731153072942107873678375825015836719155675366319442584516813174798025991654465609084237791225967302228891243050129940465973465162734575959230882095229233232879660860290118180946939349160813956550735502512484525833460940381844936270215687066452018482105570668815830701004572249509252764536323816274537950455956733384495227330746906377863281533426420897212026654712653436708435750831609339649850588127639858158564594505856645564584337062535593458163721209631308486402894715589608042792915113966808225418700728296515482548260558872932144802234474069125147585235179241803863086474057037854114410444240448638612159139427417286561408718816555931877420669223378209281487237122283524128240112438769845332576390333745272035945642949065239471689390373795950026464316932123694104365880661205186601412389959971096313011894360032847212709388437848407306225681709264919279862479493977926660933463759689442236809451574879532179438145046456569025972434518413228146736420586726042634835063817879123801322963175357177011431363714705235682276356682745315339970027727287312056615679487355376033998242537130303947211440780736841974400298808534196916833404253628013299288690995651724045682605461354619357163118606197810392148192944048263371707498112492823764206682689713735352243309624292806288215591765913172519918247288317656029497098897667453058338809256505090533629814444365232545601469470846574134626231114823348629609484625038049949022305107292740219493627556415167853196011938790989011169754288016798868374436629979132645524906110082816308963542990621406785256091015530022201020710922999860798304675773639673136367941954086747979312258770171599707935179381138588686526478445902652146208660831041550095776971107486470380910856435105290331130852075587370611114972433420591160448393742399523663834320526918887381768394785991108410110200757253223180520268339062734575329782158527548103394642259047362291627562203395841053725469323350265891366524994757214978662703344697627916664631697433140379249398384589685914532041921810819061457311801375464916058725341531463068791653847928899845441709978940690144819138294065106033326035139075588113167024215424711514461102967630703219406368832263510160337253623651968373891336885389636975385308970805432799900330208933711665517235141811894710161163741155042648455621290029676217941313389283554962778155827581789409898517799492488079426411514258187050693579854534096957338829513593855166915053317541391543092352107038625024241356907171445989784219602577210236489224651202629482195016026625809488891233859189578386589749194882574028396883909427361235681399693753330825358286224427282935214576594484108181990321989160541587620954234548533451259164634759115144597274390966776209540071400368109982630830164545580483749914956097108536654997541247322676853851823879551013905852901630274306955893863879436926064380202883456720124714283737139807124331765027641611020808209047678759399087752953952531784616291034491022146673750615154671824158235663083639511176623645664074282667108644767236959106143743700113149475253492119794526692413398771543388846151106562017174056796730040077188865104766090039674729616960650241594088081853841992605334917450700674121228495322927308474423455640089388273838736300218273710349365544677359504205655105378762154750304597424565286679136058835343652435603313706798794502546781746061821301508692842416901712192287007921645064017673192189685461288176102113906751902528507360467518501591115693100752029788859986132534695759025560890639168619228208096443422314484402659411546503940871728622321842054447747695894009912859490258561926422946395318533223111348843069639541952106436312849095709456557321771284202463637324066295454859358105538555405133965038131018700176870929109988886620049401456460116069810301258323683807298761787070437515847101245219848594592740026457862021591805542467441893284128655136581565630705791981866433757032783505447066637186732407076544539552520303700841523119251635492010666684575764954164234809549194768375561672669994555490050472054477930579067728612640821181741926379536957994442487271300016494930836054553977742847281909533293601634006145646512475263604682457477386695299123662538427725468582998815521899162216161306500961957895069991361982598406321997997150160812679064984192852897156098696806947195150152432412490511400757337273657331353142498369125379200691762014674206134994038019427032922985921602625211358386282285639308153067514745829997345477792228009119517907874003482077836356480473827844561936352302751098878492266947683927315878255841232180532065200305571155927279170860460374480387460822032616939742191150324818037343131301900779793390643359953354945383861096473156953126695175362100299993881595233786509828754915762520841141691989029146705984800883107447645393642512307345663133159689481410858120259529431898265049342460343625820077428900301403547061119842121892420807170646286628675947257375815721973033616398589258416812781515167304712656579982998627711303148365165870830193695443984405549831204647494431386858655671002159242128603977546298470449956189594066966006399407125159822386372870117051960642796574368956855512602928211129149336413171062170530868471484043422548961694710679507186300803882715889258725613069890805812014221104538998837977786165082871664958818980296720672659416850090052619185992905730247619315114976066088131504168210944696344997241892285041877448078653090388512648612883499920986448223043759522197640135617221250779305296384335699912172837767565392193353194985832513615242856702026619340425280183449808078254957201189204910088921866722632535816405377422832270261079579209145741268009336154929376326717798085977742746357960947132772454251175534278604484780472971490324314483052698079302823415885307309222758659336641715539906939269110465465629205899341237754867836144409149873076593997284319155140046676667397128967790013937769937851519613771953134237909888088193906418502276353955234545304675507907186145977236940190939344932324638352625349876561358831639838049313297543963337833516419441412511891131643659124621769175376523116647846256310510278684387070256673992386284957935025853661178942150355816252226301394371192943060364146710266208644636949477366684414431734074438417548293516633674626015914577695163110845815936260860943785750259297557578055471194100479107997205499710239832356526607669187564715500989428257973632681110275384587423801233715375845151690735916215780281636905715329676457623141789145254694887761104754144718048551291362166165761470271816500537718777689796401869265952494172200167259607067936839387996373978859853268832223899784395554854407861520886998577477859016589109121749576986950843183166304364782878287192660263750581507605463368131701083254893242183598221466746758128080277707792728759644843171653068079774454450937080156456813243225903663795794268511325610050249413210914192643035903909613791817734910575299368929366134487462609025453468408032298632290772918049244742354833295034908448144207647557261783748455739715403232248064008641533123826157480681614469067168448016835024608440866892607083127935067835146401789974662241814614118070871069025346234471734264664664153374510028730149151247598713283398319130097892498175928721721939811736093154164839255676375283433148027201011701731716635926061097570005468870387753470210421613648138194946053229742315642599670068514575479074243017593888178162952628782106626512314895662966029098226947005430250293672069336383411513687342992865720290048545641937471854077889792957819727375236180771046078292415938886943350524326490045414029365255783659562952830860054077324901446697546044623122390129691424138616010440012276878560072761824634602194535425060255853348318595897100005275395444602788460441262198727175668187819317870852934861798466318124607838084628953328161816023429191398367069924394501837111007096624340153551781824570554075241542690300013029023576795666373061905946681441575897639017004294735151252011334541342856437162540773065177787030880733345386163806300386022786850827381451268080673970262124016542356406523493034589942629973644737855599519699338105539841773572694277892746908980134287492177314672799416634459546946618043410320703798931575384930105841806223507307348294674808582686580597035034585442698495717236350353895571332451659419585401308340811809532800606452804191150616243347205967604742974953198677017399195373159524194745248478685005615093041153113898070773596153225689863546692559601600416085388633170727729451293868610019155894967509870370378716623915309053858585325089231104128206472004740498558179696535548606326837970476478414074419267146578807884593776439934283305213961493331682016563640825613032111416787976127919795202840828435415074270711630195894471823167595804233625621096317099893660023475013071985709885873566515277557362217432438950358408213895884977041302975975638841334409653496306459400508272975757477707644919460452431248613705360696286113989495125482625443302598042065174007132928430414463161516065847599284995750358256722131502382182607118967084709896198854303392884798510058801590487175701697198694819418476312261827254138398716960119547135266942333557846712619142182226988096567243787209651968726647250562971871358945347230937974853739760933939828095095920481438360400802218186459303539283863988492904501745251050298318767334354261415796691505264534134786866216580437002432593987923729127305314682052352358589496905912566926225057818277392268645997361419658330819272166212804499959829556502204434420671965889387404438885619795908699326153630995162776160478694068909882921769200844935090176452931865353038470770317464212165433808247717057722458204582734954708490577006385099089103955356059363242736087638391787669725708316665461365117655509452865177660826771559691441623172924233578925166628145976618596732113858330667862592742939739536678083597766967721448131608443982357844317087120128882809351641909714623338443521727297001619560341954462653409712929793489014568102160820606845601987321703348734659569480377811480276908773742929105945706083653917607396813053230622883835401361024326987370949520964541935200174722388810440865945985089617428539042300855648288435866378893063791084724044224913717224528161279461163018227691320768821088455407309065118624552709054147334310318997032131124211656556562200018161544665918365177838201043679061378155571761671874908001546553795501825322306999698595896601038211910025892370001513707611512163068498129218081403569442155845447974150851475215276770950188324474108046428984249260600474895428682523192037219784264678840566593191607470687853564177190801835027227872872758862102744607428704893151971402946370707773600032208646155134783172635154798317840234643070032026491483351636755882253665360560581107625540353834152494172585197665861427196582449347565796917952594605282935084383235202605244238538172800885691945128611485733912036611221406807307785683210810896223074895384672080667917868711447235802343472022780740922290285173776145026471569442215958438423677251776433784619626168154933104878192307806000529389090757544905675552345994038111528505139429672321186285996267241641479114184027577716502602610246032861952658131006280532874954747437140354584463314531659196311705909495908653291609226640312558590422391834846401039445997395354099968079505387473483959228238242680513980592371131059173033767736033383332699175531379406609136742475994718390196692639240264052161005271401342829028174667074268873037497896219537412219254069732778341666608225461597827786942114838963857717416587261121961074080467750848024747942477885407247881725607103335846898940481734432202306523003121976428128952743902352913349372426621591893400952131930215919630645154843910303462957981608518749306753805391844037768938755336093021397575373432749900646501576808516404578465446422484156696696128102002551111181158517041685379951772620585497694026726735987859004625345246946783559020522740937794178182446584060623752190282512846489964081020493579911837287532981560260634602528520488112051881558576633392128932367185866026127282547929266769777232014070805412387063434428495494780058277129915353661616661033455480071280651190042469527987872503894560957645699070649095237436502821489517742628432394421472542163332983895137427364210734201432488470400606280944131523460067872530006959073176225268395818718740886854643088173309802938476073524425490916803384668059196784638864536153830670705862519570671958751067306463430275157944071389284459906093756609272194022127175302409814694084195690718289390264048071127852499562500292321424566217901693526780468013062693618698577337222672571854703531959654326422603706693696671454011111956704471227253026211552487069581544889772883230827698488850608279111139081731499452780652066993043267106503295431428137246952599365412863890035638008209156367240133576033736176183983261814436957592146563044561812756775759782864943953312671841473580269871288716421079659137145039660192379007235021979613606712354538905073734530282273626241926219559096519813496415498931740120195217022073211752543925478896123359743134046527061107855687149088622075291342121434774754802243548923911613071830674587014668305575451863423215663995149164896450209494534017049485578535941630747691786229539774672548919473562042207780408235680573025133611573586693682293349848791558073058374062203311968492929338590540287216027244667984143752878423858061228575043469044715616431408178805170003575168735954588763239296944747584985657966671294327678183291492407125129968036298321367807435161732040945718978358681599137167720638196849178568660012526830114068981175750809183840098118125863275726877165439229213226107319067595096056541822401841988072200171893460204272324376850246439074860869622754144103125790403188722578711974151427168986993755282195717119223378226537691382327254290355499886666155565711778043989024780679725300316524856819338389200781652319085415871714343619329491454462716059021147179314240517084102507584206723078240983704620540022280536980562891669923216580716027174772197522734523971547010445190008612463332105675864046767255862254546332327522249722872705602116722505873663519576790549455068896223964520640899477588935555118728489885642639462272017024911871042304937767411680618169623978301628696610434951552568414982192037069311873346033822112893827578565369332921741453905993063656638295519080310586403957967170645125069024048101485752824431910435159292208711752367468221569100102116117428749422435195480874446083148928339980713913807908188326263973798739002846118468191001616117724333109083641541987541807037733977445557110216368868369482092718931883568868320710205781839549905511716782568313008371960664160187894415046430360840150108704848101832557251961501761398665169939449175667697962281527857573856960572066120855278279384729535720754186370134165114337095389950788281778973161316936222493522758370755215352880271385747459670350821817555092795726758602470102456838797970516247742436549569979168349233402286483403564943671147275876997496127003922120451516126811518612441159606373752876003977391263799974833896817238777043506740506750569672345371864121811204854170016213900587792964493500390554650057724372318677985769387240356028023674014795991659319027996831710103263552862438164245322177536507737438234567850772184827559483687383313493821487801742926591330358471804761985325923382091738459263400533395721139811551061952753737145788773686332242509119935898355684245380999871524344508947858247348633709151275082118659410091130210317442218716231740810340693917521338842405076723835129675220977842863538838570298905014847554440037994951236767954774251888983188426719171282079334294209015555422315091781903552518808224945864186430202529271887860043712056330680095584516207912196741605949884381543369695074188379254166993005589518385739475860803721627331840611186183191932677529674818474105306098265490023367867957008084843292131228596336822517114953902668257563026467314170872377509185428312042708551056014894028176493047639678386238843685111739422251438819858659240683755589385882349259237291397741932065296995568648092365867295179690072434846582518321674966893329230867628957070727959583990263567269698916149414785798513252974584153203163632567694391377856215217561984959149593813995653413094527032166068000399131479724997406376883848018925293233132631020510288704136349546911389581374802177057770576501194210958280662900090662095455895952922507903751258707656594233857395967583641913108206498681498798743722393106074051391573390972789515463450841418701100549293929352339490555047766887533397921308971356122321260681725297173591912420857431144151368072957057444528520292303936287284208386676232012422601199487568377637890107600034834470499948033350312417728255540974894906146980132234767987679840168817254171635746944247150342231504756520963897140711733287199052261823043006126114252247910299527330706579886439969906275519799385460440272584288954742957646392921722712285071840092627818724713932851660685285982735565175690188200619518538959396679169174286774351935310155859762958987407870922404602998354439639111743955698602029780840003707417351987797814208128986886259826078288295978183738211767585289925827565779402838753021953810271636576068979269092994122332081467244448161259771625678572439467574310722893906990953795625843081016997492185775712164926530625680478977710338506503873806428903059544280141977623653210024074003170486829110833048147138486277776641141411134700437854151722745647565944128325284064729281703932864946552261250480812278066546409627998944986040634747404485972976781120214893700262962700776864193469836912196559587555902958134816110594106721641005166328858751754267871444746298559931504398870857306279818817653718404087072371699864257047635274949761159871864553382718048493579181276694854888265754323836842503332959906088150479515193136075850615051464547154337246953751812229310563082812175671557002883097583616111320373917334460165120259505295388547513695198502245410091402077857101186056016495285112536373805619379469554850068764425793582662707455719384487819529370273707677240008677941364617829174199889329905431800620213308605759696324922384266036693269259152426812616974107931936314561755999796239087889054005159046357383017306645683564919783020290080084354188266276630389750792350037683872146637083866557871167267486418877938599458824754946891078214492864675530596875941535094743438249126492947602900640626816516682605201305195208418224211228295574187160519653248496984414326681806379307475968825838657329924020530491312669782819764264636555861737257814068684294824319546207625031705420139210805604310539357410183175830763635855547729854020546243649845601868248782494366083722916325391223998838468699724897523320392222162361968551303605136089772525892185588081373868442628546123340972947247594719825943101552197816967445987451719493427128827715018892062967964488246823792667466443334372445768783650932276847216365327926597861923199074004298179392113960196136180444974088157484449393057819510535678079618030687246041873709360214093782958661881038332606450679308629300957340231809239541386491643102317147100996292144608694177895635000192699977347524977308175013558205517295239743348494082700891840129444579953570382161251977211930817883426439122917688247534058840113568569105556110128469538257160649292455770125495538178221315798276346688555166781908125803291407697732169461733200753831188351371722575029140100302746898370392206823932185116648241825593601913875995278076109184213356225938880285723261025638771435171829273007782636059405589499248430090507395644966266043817059736870942773278841071653096285847720973052388872842785519720082057712301040620954073373079074131387169671398995920094495627015799575134586327511880843735991714296374931888441728441203677255396210750228213481462502672070027655804693522878513105563427688315691033960161655259417825374315145562649404906103051328573363067642451753207617401453284168849162950308175995281453154398575746512787065902650161423462787919943979881373045162760766710020412069112897469417313735794965594375974956308486094552099189628687531504907591513664502115257148102901416617484505172022109211299398633088180958557800025100523451447550426868326560172628959744494944887591843561078131937913815382390309093721836603646135764381009539783815641809671083958058695841827789066234323997208547161604404175984464503317154817827995268851617598286925236999550626604592071525730772340116614438678543402094777812129734968926898838805249706254344173961095792441884758666300444331787273273977166948835139798194674903742037590131981353446598881678944316158182333181410603508153726241019875881115467051949849061142385969447071430293174683524472995331088072359661667729260395482216976093028837194411316297526689188305754730812171232232759885791248303407775925676608299510642300281996852777768199769883055093201925791029463732749668020201663207326183879175844621689090931604627844837810441684631728813735554397315449328500999467413114761308065528250254403976540862993897028477254230574095560240576707777514568733560660911164027628491122197962488794920919719744081019549853205535106879805939854476610035873302879397534575147487361237792750001285890838124514265564043993816257549345055708103270960111036049013390757955796152515098081520479141837643074934843573797360166050050310972032992204811000466239115836652045205550156919651876985753108511882418687661491136930069116855035088359761295000133765876206264988158544668337595162594970662428359374048065875420385122260929639954356642191431821215647680410315320294604542891058771702552764782322826397389916655528201619685465647108263166199839929141913977371584064608064931560518372668160462885460833825904052559232525487446238269331153203010072275576319570725116644842080301041801000099562254127030817460181451639872855249504783101405281644032904505037088912491743613674032114219370197881505289669191115666339725102847562282992104827722062686219183717620016670009053810181751370196656859283819369817231064093555486225217017806503433002010433901979974955987043812471929354541206166814790764324248093416623073798826154926243464307324973151682144010822317437720696814823821947957567155510183152862135940943697201053482304972675263823295643409251775515208078695710641135715599079048852000308998443365147681343040869018191040207879490419762374616180018732366582440195052109398857316692979489574937337246763024379822466855766884082027595050356964417938830549147428299641540485763571176630791063396867442668848241378741548273026356539352300227457400400244416656794366612151602509862952062214701598776510193718786487588830598063811864892771840384202479714753671060734842525911126357632392882717222248678648521608622358779085796069736448392255210753157676254578562770039244789762980080114119062142629262697802309419053655380084346108322693314186046387555078547362529458426936223427635032691261987667845238091053339431528910588595081638623219357166383699289032490492637052171946305255126879581987755290232474069522646558592105926002401194840064098002234708355743767736177056412603785567738106616845730476429457620171592154169334002572991876071363876240583415451448656094962033324804693343971049655762961593976297066885076151912827289593786978612335466784190032148345961782573438747585877866636873169466651157284680210149853901486916506957079095536285469138716305536975713260497539487932895088897504170589492979122928801384114641735140243901483494834409953729143931688672666483313110877950350806502426725371864142658000530524298514622284509212703188168747243346596134705951299221048095966451392506339782960271547185420012164781651967965801923216557013350844615487108843381067447936669701581264393705912574351421065887986439677184369792466878762742038199031966088774871791461985146959497927495091577027094313929817057279935770676680530674028495177529716851853788475954016040241011497930073846142161330572955270016054391810800317095702174651593243580775626759390709029208346126331200520463093116748535810881890789590214029280969917635188168538897429905002036621582642869637367938964797111558404771553296286035254384909953700561524712929248676990664268027555672890771304268065777309574112795833229648343000178637147773757526066376510573370005006733562017703236272157804073713122456950658000451365243156640984666437890952561151060918732685290059310241623618121821393747303735888058667805120335707683260930111841152236686288471908674572480934644415863419356646250380369057965918569544434281190333078752166896689916778972424669228119130808073144695540788762360201471909443448449642513104143540910311216743459005119296214014752955787563506481005960215799329226026455031691241147108668318100514829715220249042985943756937570338605098047201852944135267781839044524208201461931353506761046047110867880032513540600125774675511672073716354515350775740467564546773625931751949192729383828125400270153639634824207098338947197211390269779083737028591772004215230901360237196816933917418365075937249238289489519664517474164276709632907353146347698053156276299644067206813884028350187601527306430952593402027069326960705560007852515677831830958168352172023874250887095001700129827874640770088477088748267894441591000564104193456317457399340710961313017248940280107713891764504177572008655498948552271911798121605025074599505076142265397629925766516857013912998068834834043746828798778085737629582781731065556526248271040726615980310927343756322517241490626821809097951811974808282845446725732488653850506632469937223827840402499495075155579588963804798735372677735225172990694311589705059114754230255620371048307037911489018290834087588784489118913514262541380514528544991223674100082286345619792868487982877148648236324475499902641002336502515672989241220856049149331110317399026423826109222402863026840378874308004697164686896688653892908888550368248120484065357924046286004252009793530283117452921291694013012452689710675085601970717871430469429934855367241951370922731663376262748322509274476186705355837792627031981005758931320039877991018362996148697365516679601189784980979283781366095107065576389769095494920284591367622918277356800241104271829900506958825477539591139074623323769794742445046806844549811923250629608830706016637746586665823451139765368688868585497251858367212536058416042319010759692026912642455928636726896504361503843739061537933763452893337923506438382532396661539031328270090078026372605869153779790158114975147835966443119371550705977443261867998250798395403690942998258104104808320235007886395827396058854085834757529305766377155948275300278135265795945014001026589525820881535809992659754496306397033239422054893117968963782091965731218156921915818767681638331052250407009455124712029121229853509863319745002605952990996962512535770232149233292422902918371756443179499090172671286814109424001797464952110063494507489286583572836218344886197400595237063756789117220552400857531140181692310433475155170051575252395138766109752251376967741028960751290945262473559316164142117667053416973858243176808948953305076907744340053429083805352890095723225741883241157935180802868909393706423574313640581743148081173871177101209961207734736385347508761404837469665602717907172815245315415986825003151400892309583685112748087561354970624136447944387706014246945587395881875157037375483900812799815791631191305073159455699874952726453184709944180720424647006422400301656394172717417000667650806627237898448964438331280533308212457629498564165297603683005330533095596201814536379552364266045669094815323866130592908413705179518782885391608178843895593507721943908599070306098695414578805212709961805013864668263659456801304277166181465555461971864802703143499103350303952780537243247757156615352629297022370341273398407043041033747418454751312289843463448330916072297489550947228603763882006699951808016526893652007159321007469347838227845290392617753228757730483437961779205957423133282267937961114702650615542777579969566350424088749089485675781914146684720090273851934678145121661332713792334190088950823548177967036634599911353526949132402892549783182315147030290368498355554225192095926849297227429329670746793121529231057227266887907787741710417296823683465725328322598147500162241748638044443203256050511016097157052407414789483108366681589215509729541596118296288633006889664464761424868251508075697207330114024656484191810663260280961610828098934384044022817521316916077634579740450864475489855262007330497703301794492992592746760038861112967479314370457661243564840121697434184496014918500416667509484577208091750005389728147541687340788808470599230637129070073430753620254119538840744931199230298176281213931055880082348406250930099997644892131474814295289425829702403391707464848524829744887218363684594752953380423422989904054834494931326707913553627054334504092406398982788321589871439975282687382527988299157585742232538973667841941847824658436829731508637528873294333126455512492197640832921896267728343750947498286934475419425248574830989321057292756548683804427229316157541650598752961624440712304402505798858267522091375515639737820662964271259584202672631426244640310288743224337081154626565983070024341815401839265165813630859174742356801721559924247994100839726995727440702846058539204237542075407869269292303264841667356384943911866283078498439424664091252943669809335176099933471059451341679516053572923368990066666874757449425278526108307843816754739822401873417280308868021968932020745774110839954737941701126209762789677561040688472393431569043355043959374765479541107722014662183144336941072065722938825549407692190774441078960782858753321915644154160895370434446375101547392688528295259323153778611442589128447421505819293383078005698254076079807225899600597394036231277487244688263274205947102627323438859406776639356747529167566727307871580276024367220949794901177866503153511538909855556706825130318082594517756757470915041166519870410732304573834282981662851191310555439252095724165413410178430626175894754969803965081586836517280998302751074023593637693857778317403616030391294300783758594105937457495911831898900619992467757558397915177066236795128383937563039581066129256624299984117136458324115576207274616201970763421260662472626008591269540287056742044018187192296039172772722464303552891322264081240237996099955422936516531064307457139228471369347805581371896667183641492159987755568784706444098572577461330647106456864642505500845654266255675785784986760641507932621634796445586724804825234661941658847189372068583455118618524408873356836705531375285827273464530211293376171297824409622741337805045325963865525611829159103009456667438178228249818663036826017325356595050642667153578863435969356244659821131047672824027073753960885977073252023178562350962966294149673282281105987913617663555972675629129898773238318115000904037277942925383892439202604717451390718140980303750855272792006735255515726872169464602113828894713336693903910988220181669509063381929097185198853030461072434583732278670132155484148801537883458757470986873795835962457998101371132634620604722673604044772924071933833190955946467193727745045784981832568848781673614208350964010928134226910242752979450424074322875920275155890405752597769163775079568990790011179357608562620576313089932998212786942849152631002370603687507343001559135951561568906684656341482072018629785954649141307938699969538895334815846960059738983661910435922838925577737897485732721502153177603756658364399672630715608773383712188436267977700216733858417799161230426652038063401885860628668158054847759023612184588413723097590282664271668130228199739647342387168536768942903048215335281477146965401841662207280027816103616846025273100290501400476497105386722611733121356460862479247422423136568509249729863524400434851470919631696999221628480471459518981608021393549822530066375966975443126596639096620006301263073199678935062626731812642620924770697164403324825866519938330314931559469197984267612003966045863866972201015788625416680060102767507761247886189315197542287165885567727573530855324179812136845886842407006012451190183586971148682690444685861261990820722292205497605087495168220254730089994677805534741907220099089272217743219888597824255068651385134201925332987983797103223583347471587441601763385969737763713020580969602815567691347720622261608915497027350867773473053009262037630488368229446130159617465310289395173969224913611542953753887061037544176966126898781506362914706833497443727071089188815128366375777468687193180687785128334568525379739512376115254454972271996411457764941520663892297095530398936942794861288636224482830713195169433844170534167560005510649213833265560188061399433796080720398213642386362348032033608912171232984010644915093859318605156191506902055500168138100680672346717754260117089186413352088520765622811667571368215313648192931690611929246758643923256745238362959514232336739126370937567304572862014036290027376159502844050918215858964044781802663671275632445970686640642916191874008986729643989128576601368730858711280763389352215580227553234561000011996860379653397026149738464494277075322851278031871431149372405697954960554377011288988041397460571867996694628534405350576042420539013020311920535152345874881237317010247323158272868514072743121370478206343550711809592589261624250995693164569714989943343415739294968586965477039536600223562315623478462828317291961868995382347424217228595969643363886345652501992287548307892855087419096558075081207450828427802172568045049488806076881449935937900947631487975450155259484254682063385016133091199421369323619032897957699768106364086100270504250512903728636336336009429259604858775126013358083790147404111140038873509188439627229321028509151635583435121434018317321379915955146826488686644326984525983733963931848065007396624624086873245824814494088332387374057039409079768712880248120094545027151453304099706140774333675086185314571752011144888755660923397629275426696103405264967039920714485711268395582281791367551715237138923636405002368999569217223544507626734212235084294440457335709299668261986363995692434280862999586764462804267588893458612708843674809441081996653119264115414038168634657018535178610780750281661937786220251552811121932755517401761292238473916609900783752758442397801657480698467885473080056516657819600802796637198913704791752855931050223461540786095154866618018256416239835359875918642485964487933986337883281675673456299616415115334315480951017400269232282643383493361970747362631342105443745371632474139149874437298218039744155069518197620497704670121587941593906281087760663900161116422825796474430175912982578367800888218554386097104869672572220512012813499520547444244132915456056405278031334848026414291889820679831118669499283032528173939332764989929452515344861038133970522403508730311292585334275403838180001501207311530284561737536776525336679439385150738018003904736067466320321359256861982424258268359769425988891834901353107579210753578435054581177910440173885377613103029602346818585576208550342291951258953077085108630793762286052868311747334085246924630974345664206147068797936256281559863678651462571768863194488259682270894094809880047820980819652121296633141904163398821825938680165028498138901321188910367259686356840370100936397641237930682399537052981985739680607492511141005939470983922240373094036534762868872523557303835492848641021400195090110105269941824561044839357604781002492974528051356856322882716858531582971276158233151891719482758001061166682064881905180419457935496584015524938679537485836498197136269679501495612727882489469006613877101088139054857136430466331792419699348880275030709236106479372923090515677923301012083772841055789025139544179232297023409327666164031089353612346506550197928671749810611330281107591633975615821778149023779291472053786654887146920887960519006553068175199345764540218510930485004010070298302470141547682197610262070782011925653317268842506785848681823858904797722117650755988503916220659769243094933591837382999984629610968422335415880933470095195038427272396702222998213640926665436335564616587976375058610594964023775350673108427752899021809550290975734318279394440428416358270864880485969282947686454256522237655921232246922603216403296260534406169031409172728743109167471448586673392690941339233500761386733661913926579711564195722146166487921863647537268166412883393900189378843793326251434977519221048592357249759552135526328004712780279966160715100338758719991145937668205227082065799781890086218219812512883891599242761517474176060628588302898767108129468847066054495623339694990630531119985442510218478147160037679096466016472871212353118311642169976778686673564334243466986365344513421887199174314129751797950651851553837829443114529781747000968553096342855200040706893048904319035222135051752982838150749982418218000821221027659466007572148917166211027440349126105431353462037549598873961319031563895923400396306315474591446822900091034387682613333973586976655238250397554109988856944682993741153038832687571200373998605241669711765078105718182871137505737525983945227705273735338307811724293039942677481747857844953351457815056668384789524604391935013777635540164547183608539948874762242124180753264255223623552479165940559652159428149211270644198518008427119603828678446551583435167688573588666553003921273263633972173219402401124006599178619219321868946991468490901696394432497995514681903387201746966502872610615798253781676270593345922563726703904825861257663375386894111461671415704013982328958496815758955975431044256965587826036917711042793079330396444712658210827385057626464113041737304312680194179252199577381090689340485252768397841067596879173652543261279307445993434244047900325290895534992281418922661550812552429419086444125818202897217179998468772892454516364298812562350821681827982913425388984126955182435238438077653530193929892879485539450465461177660211038000573521405725270908900832450369396301049829459790714288406788362364423446931911624539853686268710304636625701243156704455513173121912550641446268681519104034336281374781180768981871919107647859995453957277787836557846630220376949846491541278873608468111524523525132092005069132335123921581954714785214380171991983822767653185529832902296462176080830802645387113981119590227841672559078473707182150635564382865515640872276255962694369256867470993257820815786640683515623717945025975523024233779831572468997305168610814089997702278918463422491681101054187358853541370367315073491657848058518225699337953007855727095796320048344650546105075438799987965780010115965113343297807844866599666492090332371119588034614815962169730809802546781155331497414395624136518781926322242212126111738710549042141475735106642940099358434541862752068338650821707482901712098235305854474297009381675372680498246961193531629850821561541696355956619884851598828197892504837854594853763053035497069534807602889087394226502473707282651848124647627440623610895891976922596684389645066251410298840550567389783772580923011899303697821618076351497512614365560832699622702694660355482886943728771779737519901625858662709716093897141545215703829742355188536339957147623623698603601879407856146780179068011970264744280241270022501386009304740940756535861386450730188880816321752206131359702430844675930391303348495353357652317883541153497729501166649059128584178637357309117290375882517724184531545385627322070576223406198242603521974762056186275589544897707097648940479581086028664565608272252695985519978385461270298235368779980888623171645811490011656251025151724341088440915797917995629763446347157136860456878906621662751154429014235621749564097089241852123469014149323781586450975647598770689623878782662831513658677385061957921344872728762369001812751637846589864230971434757857925950712982628739989085828510501886375346473068949288306214869544876474201946501512264809121092027821679134188745313732174945194393677458066949072869289642013726378250347447981807271754158618275053226848998119167757774874328363558544285482280050080925725005832674649892192193544215266618529587178798604821886174419756798320076473466530449037461275683564514709021360327461270719787442267476101145521361347025798769035862305257904064351188281606744257274116545006631572193298120555130320895458816124855210230120144291159148402644227145765873589961534341182329798245978115137706461360477142201711148939294962739247370367876800887990841180725325096284411663519127318813684605298970573320463122424076563072262684462518435454679099329397799670918143275005703772550375406485022297647314774245937971169025818585971350181525837840226008826743823522206971308086725238370198591164492964710878145247798991664026101713791729001801945443198595482894104533620503460827670071715903641493865243010172213481855256777819746281187573307042965940995815818943341678232304471359759547521831406930840693423425201946394155136078140918466950373153258549635826856536820367650417436574440125932572219536894850214488003107084309629991667069916500702923375659565624933801157370887730443314190845304595425957871631821650035768251935133357745675700588161914704655707220183889843080589832307924485840420479721018497774222389802977813327782906224947602866479412749202000115652479741020715280232371417403908875021328193726297572176426124672223252961789083481874771195825719500291853761627329158796895850612869488950957167596051027633941644537148907165637985290772701585216907726332268599498069955414182719368566964079778738649404506894403709172739430832483812860701711994925010712270977943369214884217343873622958327504803408151183882576386099965353074216631247857234791487174472540415416773977353237313744239167566833806353461094295031803795481830283416595796483501292957365465895487529271418224615198939704286467879312296872775022385999390589798509307911339710348969820213238053571498428110535846122318519631538476272238194882401919537261308509015544269341408484501832921691814535200590913409380782825729312568015011710832748161232705594554755288985764806697543358498041118309129528171435139706219236610969002083159194930308038004973845115615192409848698279260826812271621226347148596294660096949165146545513854440455896652664662982086064347393145601511143838948243766587559351059295822011938974622073918825855203485765304674037747132964504110979608000900710591343836319252138486832513884284659445290780447755931981134704905185507082754334957936637186597479525287614445445588036071045872225662194074538343182763581387206333925123267952691961384942467992871133550065704449103562528703125906970009675171982674248869673485191525736298958826313440737685839124463795771811839203585223630941413009882017830920301515394540234862767955686277053477361341336134317585305981942416489676597556231192802267972844308029335258595346796693527908025106889890416867658397718666525654883230613710976990223982460773293056943086378123423903073449074911639550237052959801640073764990856959259467835161700361294702814169167745121707318499061934110030049405091089203251652687597768407464118705587262284873062631090548736865578307492654510596420636439971717748080338514056353890672736152125278745415180272686999666574558049098528753804162414945590895290536376810838384749872338278130177910124223776542747080618611291354091083790702438547356968066932883516548845005352012545630022740762876000278189965318993766956670816060057926029988480660638745816142656627627329725980095658264701254169118655433415822429907018333755543680571262925394730748270102737753326939593480305378090041497738935425959063826876494952451785111175603900409638990409355171169511294783559315862343683880758685638481120454779277339837132014719028541092502432025619776675678603186227823879322334266724548459367002057855486255460496139348791762845237209715060370465957433947025320105345797114452157235916326842359002881814031158383045347389002185822359619707660713671871842895835920505097371898817065700108283787375202306726249301928217981392660343395922293798810213018995922389292695514840425545795486212030618719481639269068006256477106943366219943914592210423843758061602910376663277768527226817696570006259704556638503536973407408207227989765697882910630087340257944774485028538901175644256833558406919119594297929206899068026178936593184130216220641164993719997013064918042881667510966296639857348814628436696743809159474020740288742741596155873194822128235455616363757894611643647224031474106353661551530454547713144116185592550750765699108573118495302032146220168891650582987626357098651223984827094646503032787528299803795687375337535716415521479527471878526335630061498225089848181761233663225672797172780076000689197863024223702466680856461997040310794377579412205802612507618354004681779118395976566663323496203021126651316734638438527147309342912916595567455598788898062332587206487405522408405731607262231087550407719046411903291033429063734040918385164392715796091129729154813213046180474066802816060127874401656233078336243332519384540670454715745583308568504417231482573105334181486308039626280530744470680702193831617442340678224612396624843976028501578660970713928561911413192243146036318404395154528637843315074194882636352062224068537845495990223161331834270204181760451987694571947893404166209635920188420666864988741994797423022949650319952954534696992825127092134911542609197235550856541416934396929698448529241878113150931117481806722064845000280403935035533744374173671255481452643115799043858242002941922938708780577078435380690843441116033558794153328681208663023556633905827616458950751783239706559553397107171313195001288163724801835194985992893234206496492880436690810600229222542086487829829271703093553360879781430611307574582458851927414017753109316182751299082489936862968980744190673829865460359291971402072673998845782747656429924381151283003008483719590206069011755478307055756820979619291526176444053747239184966054937252133565629374261965515036771671483560373797777530959727730462368559768702172881144820184385009748770471368797602588280033445607747994312416075380799456393243241788643752058312680632077761340202928400165501206568245053746648421673814740782188385203493477801139126713372994399008908994289396480740394567619797350949163900460151994454324401926213173037572424658359177510621128355774145589025850168775698984245877569007901669079314787318839760939426410949706473791029409779926970822658970123645427337697603342645831712790323755075542025678643883217521252642229820136219561438076582205074408119972419464079449596415732632185306616530563842272789781017688122773847946064497997259961023859254631274069453626908864165799837946999674986973980073044562458129033627020819246373823314031927825247050395863854678718465140018834232159409781815403192689146719922220419531674736284772886261896526799305097044457289240280106703523752379348071706564493474639517562079309434676615180075049610076025272312862953863605214071893219208391305218496432349949791991200890165307754616675316037767465559021548508509086974711496890769811411508755672246987191783625071309941221218330432762210206106532007471348274015420550095457275511335848994564593142496752447309554264260302002672064776155180413287597586731165235683203421413321284721833513329278693100923100518360095576387821551103418639304238117688705510599501721254943674069281019270002314360939099804610326099677937361322696824162243336045221783729033743485514028112106902215904912300195405845084050471365894085705427141024821294725810678000125809034013496975466935491888964849846715646310482114803872978087493567631579909566456505622602631734078763511872743117843355670862454794269099205210899847682426474669808624713219772097743822613737554197719409313951894473119677780572821029371251358479518756027683500863564207518082827369058690256210363671257663620241170532231547449676895054945957716580610745452478009377678250055965192966433548008435821668443935750533536085915253850250215673478864284295931706612909790856665422329006346108021386220868743501869531585233382224803993271581234131627176306983976221386094879618020374513305514739571759138117852258346972522340805740293534468501044634736373166839985006182806093770306961736008400369700690930350003048728422536968520702869767119402931820532293780360959142075270637945447893538004126429356017969312590126465486251170743188118070596756583082431525950730888322553907288736246952895013610036824424684511792149061542193931054236819541914125761013475923788030185358665238957771984665959652399793441709980507301210235832141398286208541517756296177344586438889901843350239659569806122036176567841673688952265849842575071390215028186358938629009947253583934644766066031431160730592823997741918679489127438676346083954931023074819346039906254948534391762636758647266535374315555450755337773048514052007798545618546175476038027752241516869107838155803412318812065991032921152520304183417727697595456823400821299851974493531754397061837054715062948324748970453477511446653665512078605719039082126340693982011102668133010047999893862426663164039773766719831089359763000012744522755606136926618468718699714570571345152547025992388174249958717528273840797698359947133958323748729762219826811843852804864202508613225068390116903535328791761410983628344811823984174181475184239803712284362300745066554293134665928034233679117277149771230052827326133303155614401041187755108032458624668068697843919926613133085242381217234437451126070572465746172596918216408649838775434440320320285582876359514892151691183860714589467265500106976139064106728466556262082186914346668399367590879969587792221956494160619024589248151826666675436302500065616364227883873611920786941773245278046938889673186629123060282381987740448320894846384476176474322316999330559281963596880064398101470378634449147233491760176743700324954353436470072513690741746329753871825541640973408292128166219454024682428361545426002981418276735894689151751763432169935559674774102179658333282066032636240035267565379007043559222753220281627766634951409702869057200959219153633234866651856054449190982338793718458577720553801677990551480380498265552381701540213516905224694433958858209597896787502961297564505827942557070439314094655004900640797715631542442998658282180869876356599365989649673321592409026424577765323565906335435557308904714734577503503575561934585247632898135095022944386428071049163872551657071415728736342621740605673500875091774193050676894734382834258615955797513252833165953568329228141828227697809232921138538387229785902819054979551133613459712147819250697696156569052499300608588539088684318569526185394032507704675843143389360589617669924137510509479156117714647201400479643018699761415781505389688100432204785510004167655690418008915084848273483051783303530915158146811175701957278682954293009372069738957561370202831228148790555165938456745094000533422543890290184393840818611521344808774255242056741431841593066963805952481648861451626114559230225226683900968308648310950828489861543967712475745306718350355509707346983705233820072127301914430260768165066003541808907577677751052006866216802376574378552139794891836801143586156892445544168388818795973836727135077583736059370680165807244436521421641485439321409844805154241103540463192888602033265927331231233384918966600843811294094526422064268765740742875931663365509001688564143135497642240148228638797255085179791595061286752096258519705383621249346797709190894466336091835381919333544441903908695700168988531127761222191688199848638403615937313884219335277043542925759880841370557201532792451888569315840937689213697812816100254414049533539704962589649469576212230313974095169119697331536284481574021753218487326296416542309303113937059090975491125535091519328517003046454666539722278139916808334532800646076682590812909261556903378951458896913650352935984545850838951601969915786300144071017989756741800422687901801054836733548898795786805176681626644208035670264442869514102249707650793791092785931528916329337436363916585773066431698226283460520362611920509178963059490187143934615627817737220304912417624943143129577096417624191225087209721975114708928665702507146448084542197101493703565495151416638399056448525932625014717421618225375106026247853325530795953353215119434872085583668540517945320565979319820557947709572834692829241584661041409330145899170091778981034923518599957623523128950750357300206127943958692740729962292663339067364981911714499147592467696657114228126104816498471995618155174516881075853841903674053764592034512847521123842570444047147901067720831916402024144095571010512840907394247359414919361358339803425180040500164851536888065607795094496011513652245968345293148968284981577236254179811864796982214998415666969295016538774652800656663729579567472971009388245351852946738595035799687865935513424792369608743693774646154050685687820213665226343533536961383496300206956797995253683335426138121248822495569124260355301591282986462350571164864644654692383125598183892406805457042674858341696752646087287584553638903507392106046400888638539415313143061119950164422887170038732336645948582979489277822294464811758973411594171764357304364311561343128337082604422170279039939472028626396742004137554539410575455957092020571584445219103220658207832521328655276131126123331727464927041286706129075820323302555422033336946923920768636724475917657636711800499589120039763678524353812287568534095325207385977864837407153002969258241313378914284165405561716699403257081489578919309978158685484594104985926977277935439448837654967548393304212463207304091482471803777851794883448808321215694193142660317741858998272348979948818374919286963966102768635828121902004213428683117069653584528050401240366844301928429213384045590169116194285743227728293072132113020445073608850892617087834806913964213669963800585328357432657992672524423399679542483330865188174653340818529404286822950943560602913246134770160945088947194912976960168828162396742772610005610255626538346905112739747648309865433003927292028480667788913002921135628518747650683528149274972973874823120460041833134251638998817931056755965339194428656480461943338346868649254753407627422219584734059722636331469911770329224626944792194573319862361787527844794108286472126880076129393524472319480237420721848302275403097162686830392915478290134336423511572546588548207271761073850241431339912911025669019810851012125404453984918035636733079743139316105973521212259184475725688162752390821187242964918536100890854642708191364710294421465632638008639494743273282437370209865512058991154179739662740822423896908192776963623499933667147869768867802812528371977449922590740390471823843820493654372362293291204296859465647792520530077542494601601629787457072203136063440488289768165504006687410911310330567274896209806131614214722552190621095546251590584852238658076176825087020045612153482286939162821485038207098896815096373320827139668396936171182609170871195380965148277172281059235915132588511786746259891129407555062200423718828590098288431677209952504080754292434077650839222462516028667986238094358623976378535759630751818697686032998589402866982172649803840005717500009579188611260973110825886688636983171623434521285448675849352391645541766625776372958752123033660584749789270731258129078937812604298232158865750595874634479675813959453809785572695537380499816956156326029520288594509158864408464069728472449513490870339839418085720291757686817318140460441392924970526865505911065551937256012175012807572024626631834007325380084464756630456654051128661098376455643868814078661164340208973600239944542937676122966328869009860094272323317097246753903925709919955757001845109613506913393833345643870012052299881263119235353488470877516423856181082038715327801628823149119472857567284937576996315992901687963251162895781070197294444517030845853202176657872985938096144420794472860468927073763409498564511928502128733950554288643957777229085159991971183769527929091436768390267529136101451555956241273446129173027772614119265754583258805620766816054756946478338826126271435536865537793886897049626213942015000486686415054089912757411689872119415700839855876804300578044238084966579897876484521281777927584242276649287152405248196225567656748156092983447817173660148435352144983744121815412621609814696840329691293248465159919581124132428649562342131136230703715934970870702581045975345037913918888615803917168726124432889767228730646404251469156476402415059094897607404740325573827460254066719434788505397492283903603269924556668591525066057201171244100875662316088976449519814420830921974092087551802430949973021032626683988139290752467010252304597774047688995917385436699957020481755313998078852399853781840247490505933314368355881223229530164100406792464895503199732744020936044035644394604169393157198187577684634596799744022217806857740282501677272063272545874919264778418709379483356745358739300102923801255186562838586007239614757765971355740580045864449735251655893614828570947989504712011326013712052318147315640345350972783762946888272148150394516732862547351117987454488103257387343824466203177669777903114320436515976244364049589099396244803068966378454880430597586243257620521034202590219153680443840139017055305780192853481422056899224549716765475046457570256782205603529701741610384234584889881852595273157173336066090555276702563775765298172225386469948876888535086307626232674934616902085616039858772992337788072871515664849654277279366988790155190051856010283301360713945202836141334561786548254556496560760122757060141695595301945494378539028178808649060308711956767528290671625468194438852099026609648393645593897395693942569934514169278099441120721236458312021278920242746905649894928163691906826250804577918236960695043993513538467480708276562608775188369823771825624147219485862463622753229147901611777413479059913463472817863721560999298793990339962364833966415987170746972147518807974529836547087805646967125909821341057626115067050987726606998425117331203240502266204034026373456277796798156849751739792638587827024621356331104475621777955663783263757428688340452131162955273946535812029705433090662331376574575213759660594521392845072021303285256665646314332181662884480983907067896583476761580478817375955029976703228732010099909879445194586176548414051502851296885382922128197087840472618072608606957283200475398599338841460011564151644196503913212925175261113257787843090577560484158884237706729158001921319912331922096172155095147970996990374776679437927308517977648566659199510979939711123667990288259736091653265693719615131212575248723566157547370442408879996861394088245500524326389261692694935139594152680793556622157710644464932622025757149192481571181774737936340120612290554768214307057404226690225785351957145639235752824625099770289044561078413772441133373293563903671678365155483137880094890258716408758894372038159350310759147146070372043751344525127176469789446657636767091583746072428953189065113191939942677934085893644032774466521347427931118187499349061655939497785929613979821243871026872877979059307072646187950697322717354854922834608632537462661509244149662697741960119820305996643969863539682521460700560246827072683747758930985824266927391868172288245534795026484399322971453945334809695791133678271636056014345616211684099809852204166243163059740226685563953991180001373016217804079559902025526074994955695924633568507019121697811223860105256845434063783833073913614959020954251966571787246294150605086869194275153587168601196298392289543922491862180685736521604024781384353628220345598142282241593392299769292390139087013409576180509608356263271933061988400796128719314779684404803871031560197301552077817584338079123438612882527564706286925107574184325480368614885680886719885647633637431308732389839516520989687661283232202869897456649011143085126798921616967057095073385719787013694693769656051298150986681638008633239607737089236383577116396933678188392632164012377254751675951530155696616382346288837355800987226134511630000705060602702042192664952331101117825580658452317867872924113641071494300937567830023467825838243975005648519659573026552589650788424238139882244178837813993894356596108809557648136238895489449112023275502333777521015953168326134181702657010148169201307217636957593388284690374589520302020033875187759565843751808996108108535707101601918765011969000383002011625745274251563799726664502786394269498622295403564407774596664322575719024639627889786691179768790041307672904063858383144797681217827274177796727449602245789420220321227894782913932908260432615446298226329503677110341652606985788413831494398974172222814878332987761071814774050670574494029246545097654861759876274452601694354078243474363967291865360106302381295527984196104444526372661167231681690953472089540559822521933938908070101278803093154192272886534004936257331072826952357815160046597533203149131732268879685286840094792496664619034010020252411043872683455391953835728388025713839656769465456739546098471706174031633777072885130487616611556881730015839701999236865601569726305008949482624631047882305637358140174612453615506644049134434439803907759665973000546424112802715246686693339229800967338084024762155770077519343903553077878397099875968235993901695810498642794851882710865619782235207367125551093978686268999094843721109153186465131246054153169856134057304706865037757916227396955266964543891325961980649507653583536266101816503875379421755150103940790467736935924501113231633300752850819407822576731566474200518772977471673527383012737672933128289519972272612907223001723341889128383922109741220440461934096141556774557975644295141496137762062039561914770469652119476794940567713675570845975463223343794091845425090049713727974055189871255000159065824184327543690777622504113540425394566845680543984764607698584439560845849007040208911697238516102488164119747305288838103608329336397143755724694152378551394587691362259432882098350324632071835841098674972478935704890042089071398611036272894979967899498237945322421156834918444086451862518103803780390777888566673857042880018700068607593003318519581470417496026284940177096410244364494417468817421206807780262492034003819708161467287514597101990378419465347637520567428241093121117277195582911007559211495129351347971654745960554928383880581467604174499751097615558831892018859406609437212362839289167570871751326136431718171006265669632338885088897302583502540790165269597060802203161031663865606420826137955343996844819448093813399851076343010333919427663160198722861661871415478148203891232270602988637828386572486905970338235572879102085775248787362544544294805277009516665720747519094094321127839077766159639128567923840512621255649959888340144145863269449597698892732610928562324029648096447578725657504855115586608827388878242100033674245653038095839436424977121036024809150408121607326911006243694472520277180350716675939329399106490055821975141694571453424505285204969175181806122017274561916437008150147752975775590699589724473188060517551591462313493181709887113325841199442906419513836424737822642701785430505120672839109429582000311274488781134116516290045761025481460311540046195074983023771055279555709337660828539997829951323910674487285982274894063638604858488468968252273461129700826480575160691607695284443086385201724571083728031605261650249889547650285877075783132180004305182604940604728745010181609509565490908755416902553303039731748668189177318151993648195650451456323026997913780212292341044398305905079115179595341943918928369485643239841343266517577101379022434148838634936517622364105491648871208813993980272385083155393830634939566354510957208403250190156985182315536495100514060405689420863872209523748466662182551273677277024447659994302679640460865185397199118448415444736532002102407489697032330493658724243397259121012620376379922265623314625570199528080629932855391337748322002380130708991680886807211698196552511702837158238704541955256704945168667478288295438432355172170684456000364297230250777730285886098200245943523181483483146993856746417222747436546956941663304852957085672835385131870836078872829432754769153354713967888238731137894136007367678672409051243073820709423252789597971931266674170457636256015008811643340293328953666788520343413658399296983887963874707786618769112260625251208959811431337012617151148364246491164512076244451736936645186043686713017979039269625401922846331781140161182038105328800699863340235793678205008558473744891318504891869914074016824771299251884824291288331798644876532867209066696860791577627155115526650773017590818295471856812607698084734283284588035493409805665994458187043073800337003771784911502986432917509187727480114925854075432920161668608840431302170134641920315662640329053793455848942103031371154801756100394712276367807458635215292871302952962986569504045311873595779790009735289146844388858136219956296136972173515963525663137245750044918059750264544633654690094391099049554828893057105524490197765497726904642485272298289246871554649574935943617021832416048108813655805395175342856092581815028432221876159706773692459529205768687499105963453928395428427944309649016662316364313838742120278188428076718853388514876773779699240822058197526333363974433007165744260715317766794513388190215099878908128272539336861921922492298776658283969691483105428029966158147547059721616847220600358091716320944379264310140978734255141683551094115650382927242038719111787088395548721545780220872987394713900969829043156269385483722803745400309197942764427896464803122297832696995352026105099908089180643353189056703396643386065294545037104746362605725885867190873879264684253636012926308539635588233921192129023529863427246823850574110830314395663069617181916543627656689096682242961757092613991097085205751645633657063938284580571332924501391588815152047569142233980948821235450488519409354942058636026488202017413490525230879665324260107944487893425733255274080681940284072761244467933240660046146107089149971736497194881296591078286685264348889455551605141185715715711573507581595129520451134471955991237068309513339594319865548280630069754334022130539781636610394687507569228959630557335249800722182091099236498780419084650976599016132640835910500716933657365216836328153403166512020168290458752307001970536899212947391708424658247331134738754587821119481559778901416578059208704925603163593351381692236725329924494135252981602083903182683652945870274050403593444114430763884978819404419750137739120649896857904814736801584903728026402819372661269946026308136128741678781492098942620861568759854644193478099064802676869471903310826005798174823244107722629790921880792527767829649904138463415340485338062480580156067499746657228243100096877423440788940904268714566346522548966099026950253933740229842506434006057709398339393597582801534360001798545699547102747131623580881909602524365508920123884407859364951047385522479613558570697171868512276445489268104250176962061057511285972932757825945945342211535610635370901671718637346675995798727189198280210316867032661592800640405186817397398229283692709510166577249855879754296998741599493224870414286226234905135249644359204715184287445952543522351148030229144221279865517162229890556012115068066236242158230985111509434041826659890299715340089207951960444302065373788206216566299160330702416856049874563179851811032829828871239203032027902900099916218341892605200882951802801172727590072054607337871399424340964161322041764244160548051529644570986347861053057248253101980780398338719852025131157167020620539641300070065158802672267451316493451078698526769518220826483586649400936769592165605065510768896941387391876720707928464936789870326585988019525579799234736620745133951053903674859463765537210660449881191781953756456095701131501718643020373504740280641610230784581485013074041984230993680041493727878951799442972106327280944043030082909627191275652720483562546160040202280127857110040482610133850310041113935735080956059157736624433676060670708770784514934030100918783754152854153448678984322069398611636664786917035257286901558493892664845299486804241820391145894625327955447759148467254821916725767414792519831463018182936878030134821508005237159535146775716930970293399540800603330596036036932653381334811316895911676732675879677473395584433054160737319501766584697675139754722636377425888813069754684657252324599938075583933196246066616038359049579430833641571361960650392911556060344283253441213264806664852598336364153412033644209987398297859664529519331613632576254282640134484146807796997227304819161582095877985375605685266810415497315023225572225612493093393767750471506372936350844339952828065284998041938618058645215741721564885776452716732136619247704823924286907296024449849024624237510733310277945650497886940462342657499355001653023130096246634503078427802712075476928324251150918014878836810754278685055240503675104612330958334640104635738833383158685662730226361195085368696228621282781975492227909995549652699116845243769094070490049598291833017652849768421938673338030887967027579222839865486862246429099314364415639006366182729509828390887281857187542382807451567456775263241147403063199306740109126152998439725373119519837233833762978325820130295894740837392225787128946483521511090694493367711695654096716064823793009766974528686877177023901946743171643163774583321538227805623865482581901074579463062783578674386718820848815271922564189299404476018463351583596064983299746372209580483115583513522155633072440789641417970302026040781037458331047249941118263209945266338207679196883661943480761118972447952538741872563943275776669026478196446210915884633165067731147016545254315842009638673828930187197139264807384152896310354304389093124318108108230020765181498228323517070419796501242971354226934921287092488994467299003310788431351973408189070538052897017447287283270475356698460838600990518452753029041401550083263661872312399225653845603835061816079906281308161713200058828548474910979646474406640769570008112404912484988669429111872041873299071948321094472124335013531960042237712252409863155402427887174159574680042492275790138786394835390704801523616221898511946222825562013428830562663819501584478998014532552266575745134075106854688923045561022547719716160414553174193012364420571588206879590084685167510467599231864088317080641962651254719629740779444429142735005799781080444213836675623717420532071339134788861232912219430077465824778058201889679572493325959216390328513870002386626720439146243078003780108508486149083042804271028216542307193984305878751603345425485787021249012638466597234817908743748681501610197297162500114732422704216654298414428028429676895258278395521025684432457255030999036158659881673366126511121978330518944821597664529128712072414632940382092380063279338855776745375590553842664049309141050824456335431842262004732694816742426154840595421261897227971064761755864542538835615137048063662077541944470753548607126054748100563249040754680446372657811045637252850344202773810770911132512024263913583899288651574529261726087758714768506052282991962655654599160395380964959771709283196448610679264435914435435545240830954330016956573937108655950835923297985288283720682913500594008179493013453177339230468593242669438663045819514945674585196014403796301306604623722692050036293119409948163524943038613812050616976203917026153152320935217574502372580408577080589956083202656241907398472147488153572727049262293799888454310900090329848921326554037380210759842521663896436314528639935783899021294934709103575108000517692465179721905371736472573262515707082823708470796804862447998839871299285137819998926816139644666228414529261858727365313088492166196657990258052083512370265608778930667916014871316101494309097920806780115054093986603533890908517399136847827164919492318230408655753274359304351886171915576165692225751162496726138365751224621907545451261293455609001888377657230968755030276419904732747861646705373245138168359562534338346129226310232766024157083975453515967535338594071658570992410246505605967188016746762505076256068241114305880943414204649448808579691164501337085752583471090497591266018644779420707527435918375205484808209918899341089023762863516130258617173328424695881599606995026947391089172817634705754931206374034439233124352216498793676107143216716078155619704696488977129049215740688877915840988584438617822145718528266632760170646583820787455214273390831763130181874359824642502123191210552378951828345299744323752378100714172644726937397448756917770797138028811204862165344025603829939321250295686934569471887477836569318503786171350552680873287871706897643153241612577083481130852609654987631113320461498916655956972874256052526831158343911845945548579243203273038146526807048085440228720205968335937727825854552522555525633658475507625709022714451472186054012653298622681746812161258833119827922737499616624530252272948852262325137895457571692048700464208652010017809707396338558398650820109121370579945134649571588022896742516229426291454392432074908019157968490841403722546038053334597586282173146207930737343533394865482523369736466441228727160532283020203519325057783745824036192354989007657548159825830438710516760002220478197784435674786554037627486191099119334478732544360652104941898818841555299095051072143886550111265923691010682028896161143402872886235060640885089870201998484924918544154825950879114791196526817396402751903614161594314413249284844767109933145439238731730888817599307090266840515178821620546695130564324366414560321416864410832977270752639112431880372895222538719130307924918841671321422104098578200117655207400272276844462047065996978094268001894527051846784673831923064188291290835661735241915387586781348905552960191185902837285612007584511124917976874443320007962096915644985364095241310657706192024750431798792658827676006618372789811081851318015552271217662749102859988446298814361423506751230391676816634036505270044708679653773957597991523111680384759571975932671165294866890291781469637328252255437043343009193234148033825822974079368406372848549890942475990645648555608061792034087491269128012632611799913055779885031662977042284446837991620170618642994922637782238764351111098145589692821229898873416665931774149944262169479716599364782641696194622665860297872642656002757091450771589496010404432807862982548121318935251430278524810521780623783163830292237729628652520659459038366562024779018649469746500094778203745179744787287411292832102882212209484398476118845302660318566797708564899201392536792839617287801596728530790128824458273161604749024367430345307162594164176074512374577872661981231592825088802698797320425269479850660391051803191069854428200279744714858635792636195725346544929925831300740882663335069713742213837279329020103500493138138271202576953445996780792302640008563846439529678299062744758099179272102227637599693066478174256355895632444229137279088483727272204277892955320417525856392301391691217845434218282637320112228744889488449169971958424814515031170199248457731284369329305447169504854671173502887341880287377829406367718571107855272545027439325313231118048195062287801039517128251547704079744011045827125217954996758834452320871523142120526028638015955684190943967124925005976234018428309129721106959016600767800773657609653424926621260939062554174796341820883625835519225192067724588330068076798323666509843565531952352963163076443811722856210579759543256584790472083028500846774143124274627406712008650061799023770041942217525849988769352665653123280522031926098834082970803558860323946188443736794216661401103216654792474759636898009721549128142748700812521805955188802883136505589229860485364745521432137101488995119705115163663872971442369609635197791317498904212496475779655323590366535845508638177338117719673782136007508741527964653600158431716995201323277023954513596886320071462936824765150860242731950428916817106002422807162571800884089909328156667271953254493482985601807353565936490063571704988052245287794380090421269628566932545087415141635421209798216571692320919586163691433581866529434033988975536874657187200091495675471175869399206045733604228031194978858499292378343157917600104827019919778422647952845366241942822062189287635950196587133651727683961474292289608211475266293297680801108518493757574045959603632487268831870475954863209464682538840013062939227353810257486960980630559553270651726088881889458854014463981086123184596419737393060408932077038056366373999145578545413575210528222383055472615630385885059255084781777079964119853127916976710130904862082299183299689758237323269764683954158706623869601397399072006301023768068243836888034886307989973660141204026486831137026512834890342175301427870395864405165910664895649499339401470055591787740367914664330678825046808222016864441267705490462990889231610396319551270208821523008154013015824274041964868332127076167168662438282145503496875058933301060156069084791620576216247556792013822879387655043301015609831638988226913129415066048140483598810802450042184284534790509235663732856929254110158439238652853776213285999464268421382820505492110422992560615923609155383886140381237395129974695498702796920564030908458542531587137973856597716032865254945999555519268215144120368719654198425034815769933536376538845979662259869546599800963367694302699256881740298407858063880274636255487146046466823723163457376162418241773402243313266092041281790253887490879463653517350620112231468095467167265081662791244971530383903302622000313276809825435718026652049164065710058392636982875686528218845425177403433291701860069394704945137184920909303979456961334746008408360141093675208905712249328542640601566667197408838025326419957500400105388934881821186642063397045031037638138962078616785615908105970666848072432214401183045189745802179932879506503661160169926892212981804881796401761743858508293795497288505054515138433768507989389552711026395576152980464865983130246225318436098786074449938808413920551053553379170225118556707565924652660896875878022488781530663011189299839488601809108506232929252901241565971563430099639339362241885938537682714405156723532601899489345099266622270299345440815755852665795016355003485513470343030247891688464557750909206170365155993338754670373434515673474344890729196963567487833095346049451067609840137941280905467191968711307279960949877310261741901168852110289770402771750725326023644878771790730142597766617387282641896359215589305231455675695219193357679814836733079615185981494532894191494202515029012080958104305273929137289762186334605281798382313471335041077590370786530506083371868166287244378498626778276853642194953492603498421855583357127403886883885836940935751815594430672109106211025124800699832446881406471243079266528619298625783122948449685195766310640457446134671872339536189166175295114440924110177766050504211552472580554405147487225437155600759860891359063153233382919187333709767247134445921439802938839275929496096626242747851852143321406586683826419595614444811302465311851452800683165377142533357840323880845985891629268083086363444683002028756969400883423389894077033750383034350917326648905991626761483437851685452493430277298491739158714983604192271836850230980784493405896787462770216235722647510591259940872239158551988616586422574542337384199289227345029030672603248655906259582267883550602600006497791976734600207585258747105043073648085914804603932648740986189323928034744908098255933821344766822832960394980444270679540093256356868362498428450232815745180610774122894677898626295380784577737748828256694997501051960864355310508773769678858427953211229675330294050314646155670696128513006281076767735506018967559219046672576314999337854059321514339289813760973589291512956006929484492941779958328139116781221570248168424367594244744364124142560814926037583276176297935850121863931458994061709822526490003065178514041721340191685919667730544839228862312456879058712763720563967610855997738484110986953384240515035273217530298498418845886989248807442251776720296682747279910430255748362224550291713162151163867464167013685307810924660875706052379425386157122744087054699692187950636909139900772338901256139651331954623139581059955663180298018342788637288685693703624407855032036460265865565526234134369682491465443825085713388158515083010857025976206722566508049150312308868360617323349527134398521259437267849008941563820526420352389835329570083186583464542280848603671112421614421585334868588407133713703937119510506643770034707723507418336017770915906966250859392714457779777612545284112780529714525490652836374274532041270738860044057695463375945578488131897349017078890322667981155528091018763912238714108926175192220771831570379087652371334450288461000658795126832067363029394424602908291613403301694417905564857247632366638060356229254401747357071886847659272428200951956074918753373952708964081729422659486132316870258972220233476291040147393416622381770547669742199558831223456043587533991706845338305772075009340155122638306567984503439728379492151337183396235555164263500123788698931075402266827827985758798966218475177011757666403215194211430475423186835573661153854797952715880716647806013374696538604522784794098879566034271595319355381604900415196766400767707197738492755631316170743826585786268398955590943588950094055710812850665248306371246057515685603835140705460263846501193975610244867239205976267570373575697928584164988866079656278969012750073447753875541677520108184488157614831477219502328181700824460068130945545160448620453314770878371225849851849264322331978620977042594912912668118521463295603873891293108837188663946830336067779522295109941009459572119163661404249936530752396717499117672504020928959593858735039982569057432139713962529931663988526091906885653586678333948260854343681155201445620382508709350137408061980505160355985937253539246839695949160383849925634591755396453043213230605093750242578208082896729583709325391997423277937983732775620144501157835773169782713669125644325208706947834644790506273159575069393981462036731276121833788353339659881449508770423484186931733657174392033743743279950738791090109263483359986530823012398156688753287981350733632271491478715052599100313628783094550587521046008127349716647390539818066173321098883441691519326775502214259148243068106513098198561986902829159699102315908029066168892277678495624610724035713989859420777395583230708487887016581128969869914973900954319122521470281593202385777938779515378579216242170837440874828788938207536864631650021707925695160419204952351141744383390888484261317335224444405334511164291943911982647298199358651634397177487756052635846315492633731103328192337363608691986441256134710970555183729622346441210087020187984492384483652767233170665090959352075984428575305812647660761089026186422699833751700839114313239933590281449772008085353322956063814987047959422572095606603919414715775845713985843999116782867297140080030753846656957452693150446036211374661633776407062157266342793575824983840825988503539650027578715757816567898652529670643059482085364811984117159982733693808639244884243607199331949239797008388384529618962371615564205965056714408033327884916958905117170472314675938551847865728775592480637496339213588831533862347468237141519531667809040277225140471639289602482584170031864571604626318489482552335267793203442428923970708650977143640265574025837644034317187475787824899898797284811723875325243971322952448529911431824863491479518637670430416670183030142266372122706086780134505086638256809581542697337189842448201466568138807078956083078914042573766545717464926193908161669937130817950443599717496045042693611935153538170107185907619046668637682780490198722956053365256207070650021424227893884326465013715236563779978264892957353296908392378620391091251872555584789972436253709634302233508790587429589532216391509801145167171961432145413570889435102575643518027691421658901600101243028740711333180274831509471441363970040975091865683476153473020800954461723491884785332427423425912718144360373451410511124733762618543510426811793175414555475854922105282424926730889065868541124431038362188601483960406528512661222821018426609908180566445649028885400554486341254863275428477072737455192705899886565932239745717602748363502785152869911442158158536165007913828484625049997646018384934062845644127504775278717746075310858331331081378766209787027204384350408121264297091247448503920969474279664502899950384896800016121485425424079100548983216546261919955545160110304948561399527712491131121703428749568310657727940439422638550911833177461772289140256428260789245152969803391009163680778729354568051790537303439939804591214215620863005154571876729750897956638037540044494165204915173089631869950608929301460456111442675120336709522846541449804743423490056072443401931668639488560902160443144599099376866149073739297168049644758405287021849035243838024088110083078103002696025441643994920869398708097928729054457608147243944931376652374598134243009242116400583484249159940977891630831001557258386329120804483865618362285477673966085456329601205662202633077975716134981011132882535793560631801007945532729444457851725019977350569773480757831369577975538987800819349137551736997956603079220384740226465248805453341716033381902852333384963018192844489432465833563996775249149942572494885011614802999615211538382386052093234494781839377218584790421368540205385064674075682031006776538526166586464924849996221997305633941033214561290901079674445775245324638327351538968109607830183637493372933490844314261928192584633538840539336907912140227756773434502484963825951601554875931671665505859935816573047669396002294970903317953288007718946024502685372063375676609864247455233526343317888909033267216430459755810874730232210273549467591344597971004561351284427672406064742092762468963079815326249053439399272373634590693487354435359068313487688566032281827230629196355042908918849687627397381853522737078378841331775671249433748048452431695967512080042807530916501238508690101618688042669224601380742533413327767760756244107339927929071102366554213091026741301666301219160762081933491324593067309492418274354312601944247116816463154937961103763211936531976198745379209532634439768590501128794796923110801923630376808242276498556326458387701620052434490533333673484807425422356378970682316288218990872530731798173336948770133525347167263291420805178178401485857931145246128671194111903777566382885389319534810780284006320902582036439243233941329943545366977662665625399483208996656175005692789411845909205268085150424859114177363169949533435970709598971858327138544520753937595899819320214624170348226394435853984109970566369429245844593842060900121836427219839436411948833060571757106877941768141962450058291686190939485858174208231228308050853914741443576829425144150196174339330786581636275491496080846570799948117951382164344618535334569872132525061492267551757608119724147113012711589720647380129396738928319702020681771510494380629691657556351043035720799950274633864471193964321040826168023679548286349282765696463084686682083728437802496958626366203460811782687041853955050766064453170886781206293780084089528718232221062118479082517470264535132636707748863610012367433448949586211055219673128026205743911077394561346714896392455809277280208056220380648559012009492436696600855761986492087241712156674719511425385130203071922818841605902914489650874652687191165885201829497381463151695898805191283614708185396113651861648318472433979816166577072211589148240268098979754394436359082015637071913956769760337206346335485129192310630578820676114724912614829883781890292346302273904974270705739940675462454656770989905395043803536818410726456795330476833411591616256344650174242893470100361170352503213167524847166414949264593570513069153643188563148413136131430553791949183486238353303381629815587830353269469320523811788717770729545873368576421008506070794568082023771319950857332389433333304897516001104876157383915111068616433751345935277762747897145698010440132727349280699489770045855320750171908001720948920049499624694796720784492764001330045685079227382006697237165841386631002742523634390939294288855174883650223501747313811927568235033789355400071202484723069814562828176815411916304469571960802707699088449551852740136426067760786975243217592141451143498797355678422539402203494313661240087140948716889045061310318913834122436353093717107555952680669315372837591914711327749337779772054876518246647582978509226103074259780129887291105120471647091399460917726010642895260005948207367692718278941794066647748288540948884388299094831883462495166675807771482446464267297234382235117062403479204242743266450020104997545179097355944664839507380283329675379705536101854545662402818703456166642122594451983861158467852253449932450754858386530249756764113764142878345553986478926997857000823993075301539396411432554351242136367355371737398776349245353018332853565884731132791147859041388770371502280606178218293671252405853006677397074062737914058173366572157920758962093047529255643890834802440393008710674566153559880462758542516643339695946576618576551542106035019454898139575078869022054006519415540019361203997662688162924122061135707505032418683006339395616696995626224840533078944245855235103072090131775737476101289216211278745826377541950386927562554028926167234371154674822420653937059966873619618480510636933075585325060909373197400234314359568480165646225557130586073572967608291336422319728055257428668172480055008250477429493519765056296759349010985364430382198715414346859942615832797695253362139344611890815912703558003105923119285264105426836465475803482174801132062321173551490505340255865086436107850127887436916230983923287660308993549007350082847422961174287170455923062947377248216341969079289437702045226841751757948852235842052264734585520950743398324930471892913831540890769822870446814220715494682966313193477397881401211407968724765395964540483312600080651395179400336285835544335969321190688087760735288089166023559057433896193739907703759368477609452488008373057319744696341851045213690627041144959149260013549636493213984018942891160938903420873260402693670551103042520529111484743093582110359717568522779729276676319239940498108155857440237268722489353054206408805577825994925583323717702526382358286729748235679708919437148927660610148876306840349495360019910836097821399817348309472580153745812734869823717661304383844684620712671659504805213331838607472355458304678740783598154875662071038291392144991056347899352706056727634817928033332375109280890713094805221755115986069566444141213075212332652416929310480194996016065358803597454815757240390410637665917309477066820875354608603718795240626945609807428627930536408257390743088651761068467608105137272991544269221919311005838215569886158047435186846612122521474485346343962753716610171038136159775247558256509750470674868669355689928366783878626391832418069265166708854598533061316606016173567723017910140555720613588849328366093391163675526394391266197015345040738821720496689056951771163826424133016836098391538142113611889228672973016800230149478497697952769721506176534093845213973930972581295586583056531885463947848361320373242725437958250257931861603939376083060648868572678878914617927313098260439096176931726065883507349285766530590495020072293600301935054612806890864795548894399045471114897215286595617392279855224210149859158258622723187813187095199042663351228454558304377963616491058429176577055836545164320013601476543293438101271372277543025792760750908151550740430921041548219258818944689566201231338323162903816142555262588984698517214381190484776001769548859122037413617541841378381911291098470035566531867352020471815399154894808434097084318358903406765796402463916446529184607875052314042488690649248385046035085591067457093081862300421079383915223366208839307511645349009436071465504774485593662876099280034127558187872237996958963971331386197020253688028078304315917033654816042973506217829295037264901622656415301748137070936969250690724603045643366925538337206559481475122058576041935132234989550967360245352241300584238608890386832517485439944096329404251915912158388146412301085884982030264285907310958855132634122938388953447154353791370542881785673089015481483583741767196693835867866154579505530543199191064620332109810699758848427422512976096776213904320371828870761036543854538593254591039955076763898652920308405786865101262771220968994879066145656765671055354147670424323383219940197880139126552796724311143343531081733020114754503012029959177071837997238394683061356763069452321504742094192082857342487917344319538203950230406543950646747019597287020881273963247659037407663581402607326621852052631995870964430146054459395959941995532579409631310197388344309347624065785899798213551897734372011247063089794962988150945873729083633897046806664758401444575489469115193022385376783214623302326360447427701468368498757262844077263774280671713489342440263486887937295208569129121569839478220115845476220572673179330754660098100027711565304604493443853015490662910196891377844532393556205678744564182354937461587239131690048604516952518343140705154844120485271029019390670041945005846094098226539033174616657992069357057380467873959013777697247855011945491643913068015165292799542521895339824821737267822194201831105609657449544972989022811262405352317243932868131290749076839920182867241275901165275435707311701532489179627645503752630277260624032542019499645982615071126383972889469977699863607662061821707145995558621792721774225925994331570089527234309200643837951428556175857276574879011030230312233520571173908130772988882503947205084116902993003302353702345778681516363467054623611107379764552344726177152485629052950568884326522049252991771979016884188295961551440780087880063240401208099924171937344615553287446556080749472369570836571880176816305719289202764998624515316826386300776172166774838027273092327271114132638995893185692941265911039172159312347776687026674804571111070631156349698176191820853942695292217793851039082469072178902190579441765730480860733657680503265892847757691179245784377553625104382561830299604201447998259684111140181025138906053570439185832798679430484968325900110187167660676490138827198390841185842169596979039932624118150119659935355876488288827902028763860533327771835694361855239326572519372645025068815956949306531777410069279237528125964906501290560915584391475828540567762602464985061153279792985647743561102523321876830587238981773845246211362139774729434028818253940841188331097669419294117017732788486889292293590246934000928914574450547997103871737844970376000415532493372903164295548857100816773789376221761527436535166970729217650098155080180657732311175281230178369699633542407158877107438254293848108779300653357726145614776499832603351980271092232197797801430743174314604675777370402885186846016702900088051716352547324609975577576218621273241306831620361328091976229755535122728614913285945311289609610874983609831913466531757903792927071640953471647622680896461834258458640013243905146726710746848295188195651464742587121990323120500197194408073620183904760939703529769807632204872964820964685967141332037057095113427305323049242624408933090177732606015440425433526937134685182017155194309132665708359704457316206623859946852847265898675640049564952250593965275528723347880977742464168919250893120596274810641365835300863619803318059417096652997128030356028896082257871516878330249406457621165529227954788273920197086798282149003088757360541022551501046544805818803097265004676665064586282522152370269274023581124107988543044514343852845084365067409235822432395626600036065520785200664643593485936150193642057430714584602402145333190208085725851209669794080982608351322202840136864371749043342887915920174847779146723188954805412957916323730159859833412995483636960932428213131866299610265684396975644686182934341013356351869107165388050805120279511884684450205994290889531228077844511306610956105967810153271186476838472405373144377164885331258955253689015999082655911894775022369264397272419614377519812141667190416979022028113228962876445677369868550161931328458996614672930447298814962134204254810753502681647658648830374940164772308327001620184524210286941810018896435676555991564337276944579897337823804606636366164106903855311525609860165785767185914524663240399550625770714529408251743956160597747354617579955747080717196126766552423366326287766626066817654695101369093124513933209232688203144993353484347961796235438117819545028387797830967982070702547970565464861550694330972371664848863008727091034746380795007063996805244375440929947130749377094683641526750123503295902465630285089658891702101732816547764086087369088710480042466299186435546573794156664500630488982211420457179733315307128036662995003482496724461517013455128373370155818624884092664700693716802416600174182365719636107247111708549871151531145852276415289676962358842578024128820310676548481153215969024763298579569804094657443179038891076685159903257657000171270244718901307753910538781672256534807500620716787306915225750921323677052699255648345299647499651810282201601000716693152336170386132839755957945057565419515761068751684690912468957974725568106333144616735770446879354115564339939527549581747836678516931732030628657792532758631036409082525246576111348567991143472829038439274077708332703632152773753677080406573675970827466065671013033496567687330574549186715995334782651279830926155068174051918106888872035825525628305027202339268369501044880402373631822402688032753575019378240518902755183417788074558026243011364498436262547924231957375285967112641374169919212845947705535963606042594923550743590521611878225846022058748054252540736655870591407325600063188384269330016804697996934962975855602647078688613744011243016306188389974761990863872021978438771137830482007565976008581489397569532724849154169049360502079762684050593797055864445468631034041646543858350158845217221447029966850393656085931246620958822297343696786741144699511723119914346497285401042244500968566524530875670506319167124027686512419841703926863007502571954408221782305536919853854681251101598312380079302693347834864738940334090706996223049816169206575531814204443714015728871797280366476881562774327075143290926303485631464788219192378332117286419169406371437053620416067374502272877563812774881477532781990295578809317927425156195248278421331512165651127503727220714184164817212920152974744571933366130715225330286163129358940265367288510371312815971239838932579413073021534634761686299013834711131498276352379019630405211173072583448953473770712997135570625137631622584420856150810399524445325446005353658800183484792772051210260691875564667489601306095918130210482352958023244848901684543301896157897860524921018570627388242909264263865607019113860039293029001499795572236969290587308178905250954665464555545192365343518660321311670095925703994207303501179961754680158168192037102287305735918915963518311520420911008747277454734158795730319988939109066274144784952222091320057342060890736751584865270257465850818196158387865196784229729057025496984719349815291682314210257063951190630189449033403943314865381817987996145149180009560684530925580952802393174911208948290677768760306205405935190633612848890668265689973468203687113969889536492570792072625518804847959762612538456770175058394826121902613424285350852024021173596954473757084737364766233866018808483189744120235772263670467824234931716655848561067204958626051764708894593027038586470011472631843372249209935585842309739995819755937632983516672811888602164572329409645118076512252175111539383967090071748779911030134688612886608318889432263511783910723871930986748366403762619552590067100727249215223897907013621678838789674533178788266112208641739419309204221536981786427564597738261226909977459350295599247708948126972859415588553506589046887344135092111549074248842199107956153380438249391127123565926040386498185963169890703759129111299741701754797552726026143840896864093058152156165957760947377399604953998716171321506467929274917384024303249511484348784727846638884936633603081333468642950535098311563418325262902101456666299495354300674404073827884299041334899661378696865729048289100165142867164323673671483463316768088046960106675855394909311906577965090587481060934237029768982751976634486731835245665736143708443974757164504474650483175118660977722839717914413280890392696437011321255176578723351301355472747198131661777918391747431852095570201650895318250173353597432896915978195986305042541689791494962758314961029566567076912355976821278305840392350752826229403075537587161378231756664805155962764617716049561393532232166443312440023260958471098369219735146536638032512206662734430991604636625451190484904424042826451899091991714358305893354393697587056907747921190287104116059834815040265382506972302087949167610090725732089154808387817948093333039784759910197072611831770406004488580057857103476470332974572284795751552845771326442409145339015866749251765541056895729339152085572475447664145176792843994486163180142250014737558954035028930091399648276619288698912911090071850171159807221732557634858132019712500757017170932436739138870851115399709669804330595761218228880524832867267500336605651810323181738696323990426065920385179520899396776790404749720375920281208576884616354616798477480616622547456300790071075434535342059875701994678078491110097398955147170151389174747182620732451169475574332427891340319592018680746263924158777874049693075817214805954266139113998006776083311818277699106546977425379447164456283491624445766595980662025102236337125219027599210927365608822526476676473062028584626648555591484416238291788869541014166416221094630394111794124452318871676322587092293579831838733209771677191409873747376297220465420281884541136436902715186631906584148847238411111114913529234842996773287985402357425859256538146722317495940883516164130135451111716857147656864918117578666891006040081686056389721444872557804284069701082327562590575023111669824603396219781501954740131831618522648511691270140785221799109969232826133915224453502781598077946374692588568693335792457265993206557726856640243519370352724233291089765924602024654834361854231291344152954471301303081420587814685800514086198284980694753425029230800566475877517091414795848808860043502591632502519795896997184682847281706140142578651087200040700296978437093730952577042377043227556301773500778103443848547910888295037728483105936803491714691712210987411601673331187747116395917586590118522867667288175150836081707295103498267074057215428848393985540457728499865162894855431786833929686471561263211825071643490998849515808691322159914299435198364654266414942146330149128090672591520999621305480694730917558221240988786242747921526510848635720314390708794160684369415925219379381798317117488145575513760272834661380462465911425025056455717057504844027588453705623584838552310096276865880490512999995039791338387340471746390830558459742054777478378946254645618263075614532308510161236960535436060335387132802716615755780483367819177712299476186655793470858156005726150826797104554110644737561590357867604806220380155437647134286845586824906584839615123027621254818906005112687661882866744695972291266756853007902554133949101001377065971711921733903139947945918876742309774313442886028175964649285341507898756213108441135900858082973832807747245052411378060226027103939386970503129730832540836760505825889840021354457083394397679040125193856305729939708418175283303824823250706941162321119946891629903775539304226961424359359631872774261352213942269318924847486278756372947192985347105355522209310397141974157753726439102526449964246948931122640747681175683568506826205773579379195062430039368226346359845386411618475198473577847275018136338662240292299852513909159087075782788871235596598882315428669809789247711248057768810751746870196841086831050103285024432037016912161194886297387349539505932495043341321300981746624092749296356418252453434417797195921808085716894142520359584182836527123424503595133794361844921324146566542703102974148091765559481077794191298581290697713215737825812515859767738374532538071129542033797765009084562714044089958300889072253429360983770161916087717741671009133982410228699324152412892603983233793047352002350475898164859881938929838762070517807315553313057380432690183056583055618003794543050624832989833942187395361214487457384639966176178502169479007103378092082851523582728445964777237020485563311597847461196812337005289177139250090643587033254848396053691148405799156898931680389565485406444266062092443639468668793614928475473224383979538973214290419675334897918367361253723429419044996084208048929817858490089271170193434953295794032061167286476879576303316997248065788257233659902145537222317487741801810687157303151378375597924375543475804065535165393292673345303240720247364546919216170826456576328979261489004810358818341729329279024805424759173805265758129864596382144034942898165149039860702892926755944952850590357563315412018746269992107510651462073934958041635669939419748605357351915394005826371229491804122914652575281010842874552539347523018412098968592364685841888580120265326219396513759313151270319861509405354292371226874626625931438310082810964908684107767921426002391412857039338253930985349856224682917919240521013860891874976648492003207925878479319096409283733440064243828935445005549118224619053385302867908875149992451420414918547770451065092584349383417496478320329582282130058141043443574907944112113485584023176288684801668754977990317315315593445846994111842919421507377228464766076654380492526705780790913683488395209857532245358624424402551920730482420623106128544926609989593351108790811843271335798018106947196273192021000344488690598645898851575766819697758926768821086930110718014233637131591774875307820045423926638293342343903988659166101779343550504661185029536106522121408925728276729940955451107571414285316183384025954861981160273627444209189350578825406565771975124576521020739616085900286041777817305558312331737360102205876861648149901883504073656456239840081096723588871205718083270431017788538315336404028827306140988213941629053092289999116474003057904666598828687229748427190711726381266194855693150491335700693808888223048972531334472506957549793481357064278500425538232969807954466355815420850469428570602105982510417749844279560893504259136760152820249068932010429398117150494767209708394746654104570155682189638291794100023616465320298792143514529015298253465357179951885245579208083185201762213187155779025825875468557601018564040730169324555223979877456038147847821059161273069707328971789380955819032892690286875314636664643666673040320670341143969010951180456793129882944000754527385159623168596836946959886224985955510196446416589331625498876593169734033330147438965574479785591446297403421351140542026625991818298276367276032010365103065648585596082034114260906750303893880788325378969987680652256387842857231779644961915848692574006071348460928742731515687450013375064668351711685071071700999443317444682668521339301336327570675515675790515746895391061321410298315041276180631256632801230991462118094346806337107659910304581675861567978870441500839167559282746145440773265064409488482355628686079690910261798332331312301735759647790040788283392139190371973865603931622792557137343868239599677644323943380445230823662958352515412080358760464248856151631648829500880189569955976230060934399387368740743577260222233605297556665789447733319423751792653686535293604258976626981274350495603628924391007921630442633793231694546924816940412303596803022846220304658855282675963941703132168265736412441797334408182355002012143672614980801190224554866008784525492819517153790565274467250094300078084544400152562384913499781086297503004503142924909427736389399217418439485026524143396188541110594274199430623968955949621267829188797905434700786907917430145271739102076884888868431031062016962486793714191568972838206409576028107041812811159793993172558848583104984621941249261011294428916127454116196085389557869159686651447573962644102887216444268293330465030500750140208564132310441821646128052186636398061712097694737802704916225121060067248060639486202354867641538846236192567950040934633590352079904674438040219570663218428855158791011153358471276100072122716964757490072840962113143709720549030060128295433631044830359038905613797087636783361592758115536361061583387447918882342116038860270329480193196550556437829700806410045610189269181812798464296107961221878057077753005569309348211194558214491978191090331810914598993572663439861226610668184840349859308447507068869918656289898356627443765187697789052731274330458978913267119080484429322325536441001338829021454627751658274190509275458556751516457525628103806155213187991551555110797148479303002757340485445522914236261971011649835775684442774712420893001167870348463817923878118663124212087262417779360228967547351354615999202455969848431513744492852352187113140801055182140487549702252717706196777986716912896282935381089015066247704779992180076706387858039455010811017926936983582260308852422214322797385391117921774145282811615186518905714475452478255161400548935441793382628545439199095483162748712122074085045982320577527139164671910998048294010828365709209305656799841029637313080041397798252670959042265993133086321577196745670848789702047075009450435388663345097887618019548590977595080078117328773349811655066406983465214460670669535193595640321638488769857352726442310139870292205788347982357033574116766621187851561383411109398890798056981483939968740628647665856216416582734659822699864387028022232027389737921521860716749886310534777559196368710869431736231841338742925648622488044446693095912803448763915074883542812716351290065556638372497181041526480959973070607144992707314620662986044727320996852721206187802494834234277435958497167863622012344952998010453903330139310403154721976963394438106062383679882222845132933689610187367974386600823942925550667496633418413272959999452196107584459530095922919505314447039244604161096321806762345047532616642343139394247412624146300216429434536921241619364760266364712060643257590853787474516991837988058772562206992426039939445327779293396968988018968262636818140373367371161970568182057046500261080922282057786234392324928718274552381703989721252135441584674509440987544867137359865781116839187398267635315370802330209171027764530133047574975583568284534067308095507724332800954371320816900624832971592454574048108149032031180097986652770472086151792379015184905890725523201331207970330037990479329833126475636913684402658342072486684973846400018506847565561585689334221778516747435026310908769078729196959708901274293855208633992491041376873179681624604681828838455532605373219767617356139309321563727216123678801109736225223132197131818371055618769509484062393864690845269382232481121988795629204924949042951539130495761637451583091296497734184234838613488869138816157021468756900305088453985692442348425196565703119943806595405763676310799872686462019538759752488404449317699847886413459376479310978887355482349989673325544225652792020677404701253987308848846478597245180040004859871329864411077332557696153706466533790847957904790667297496226960996979623400506621349430956840030004310501623161683331896613156143510415977080369766552420220820922560324945180728135251632812027607462703828759497263951864622913811965425334816460100054876659674880067451389009660238721628317756314185352834972679990782073262471716096787103920779140922548487485133181441335136965862388638874207107426870324104143897074669119760151005252198299542474803482230869332990173215671506808926542122429059611102178846958580965516115715459150974545942807289187996042737621826315242401248151008893491136419128302728833303687586633039632228892807332950698106252670944313081281224328789735393289168019452555022235271056609427389480650277573680646104823508404174028492504655141686665796120704627281883184051065001466188800094780897506193256255786173884657835379487911058588016382958936607827711254023151144303138643923952896436028869156418652334249734692948530318778899321554551076849915666014977424869334265641764565936153407586777118720768511382407011186095451707886261390693607212483849201863794320315975443446379508549954844270748199434169813538514515236485882614140518926028724710838896315283086391989812267266141856052283372342151948167666950702604114084698399779174327370930534485214662250335238627331050336402792063432481631836189378507721251426442317280552935162277209854090710880649694327252024952712802322084560500005050552689019313178578587828901255244534918660239947031532330482351553224454231570544762620049936392211628616741946096788676743976228919840560083228143189122926579815142887040921099443924113700054801821335769143446887151685302661943583723660847421736959645050344504799748981477797395755062633532387746634008997903003829198308893851101191306552589768420755545491852210525281992745358046303626202753702828428933322142242206546013779249194968180210197077056879110577714613762269924396053450242578236790814338894533601713037983243373734046398582969591640271009072558580941640758551632833399190174466979799555402917596948342283165310181952630677281020079981666469692914695723866028206262844795138400020313239245792660065333161118915595604125467308591573335493452568473318929871650767587567379919933984970197969871401955491915555107415038684542015517784135513732263806333908659966494370314388056131914746731260745092538995445762626525783935550746430892509338728724570116950379454142688786145626495350987799852551420261548513178793953684372323461125620519487603712425989796892019299665861304348437355311225926064836216201363491105434234034085271338246770155911902367022189827187453238169575883222394802617833058518867983357581418288313201424301029664722571735198441961423753278570346165643167030546973921377936602455486167046273387716195221859013785181054235704240030085705383167666690250545191206663596555752528318559313785642606310679690739538882270457360905903931224440181632253134797397605672805912010204774376391314189992724989629908159951805366877014553402702802351413780669929679324246734050718905431298061829011138771239207061788199237564968960302929722272719336060754736282394623520653217827163025545992228666581860757076590505608890712223502016779180249850046449597970984432772223210963067391409917903703604685138087042994061513624718318157164174043363756251078420622290788890046541211792038967813562065844115910546407420730855206410035114694630706656239810654091602864052734227554853687922995820026571217924265231717034706901649073580984469399639818147774056905319137666114723554443031024557399060268020621587355923054597635799753203051365080375938261722688558220101347149118423946639782086897131422664199805597808087778755934460146517375772774711643588189868261549442638260544369300308081998053099090818885917690560080050960104925992579431096744757522820824672111188008474694385688262558657864375605125690581134831770562346612062885027947101338073111448914889424413145092229558936265285233424438144531772388448029268946344560503625689143881058928799691130432595878295821483228281310294000579775971939324890563602266243129854711212480068319422900359656740177986076208881675144763972429532546919478774848109573057090787001359122870237066940064756020727998795233148349095604456357474397662602866502532105915395857202801252163614825767688700054802226244273368407638587753556784186490530446379349600136492149834205588185309043434975702194613583327084355214228415022375877399014145752218065714370843379704729012379898587281385152290986994855602553897178675493055740285502146769028758838123644023661162731880956109695275895992205837862294463836966620768463069616576048562141642617748205070851573407658124449852271620072909994673678894138506548192426743740730990065099372133123067025098242001654508085928284020337852311557332271202444756563415109437332293073136067206292282675472814238957736672206021165982416550738097073624176603602103190139450884371747780910987320797612672816312663691165944360616327201049863181869206169811552194245004485428093316022969762574938628458849184997661667226676913371884262306497677255210853309194683592586541214507146811332083364182052577768421649381772843213448880034378575699901476016242871907291710101272218631760825598196425012046659848500291062378967724362415628208654224296301050264046010843583521189240546692238035055303671736637407811922720844228374608535712020803850847439661818658797188914272820760537415918144097891889479883822248424868647268171305348322479717747755128156809426362583840498906230781281944820600125369037983643469233476215800096420829999803127418251697895111682929841522860027844867860593174953234724621630378969774697042341831959851267500647833757396099818183732914782831045747907029467604419247160857792803770502068394268326023928868073704367078774606504478069297659786648923135294670847326425419532148910446283221302250911396718018660582980287414286416144666184141938979772093471105404542529878593593923093422869092000920261333647952880841707311809819832131190803009687059744243454948664390346803585341050124994240275947499022216550328395001814827614294134481548166545206694278713431111208384391478893212762242075687376458719346026847602263108509274471862737127649288499104113321965656578758529095981922604923550690262919958676791157441122932812667532464876475585638497004632269321800736958027929962471892784233901747409228152865188591018605349812252862524113525043120617511773134123742802741833197034918112243042251082802627557603151566282590962341626377630591940637428371067649861283117290040955941009947988265479953282858809198896645316132931990240735960534379999167754507823944860777725712063171590918538470695932795811773106433614016513395108828570846652867127705310874645600543189751677107688408258389443298399862007877625365208274763842804889755654294891644333532963026556495907688566408195344734944816415344728050145461172798768730765895560670422835106480429821350085062758169104606903660714934123694196887844406367640393582605417874662923400118268263473516400766500274939008978339747511803381427792885562689433248170106938218221685494416903855058330291582850580533855672600083045342746232744578768124020226875864056058095921074465414479775533480336104834718203956096129379967890733233047175155447756963342684522459502076528136792077547715527975029031660199646506182551080733811356075788234669596955865791611704721401904757451950807531100965773671153926707384947949229541500776452244004174210770250700597462247974436664333648403856051814993273918419991171416262336549457496191598641282534595874374967856419742684496982903757256449151593698654156043953388240787759814327924132365623728735004974583455686439246833924748794548237071355418417707082220215455696624883068879178949839454538313303539468745010911604053786155638668371992660289683193064841311930849597001553212259527108539034050071523881217115024792078675815925016805592779247640182626723500475075191624193546996958606285588448782516020839394095268221436255620438932516224638411552915606186353474796957122641014083186405322559576766484180476959549462991831761770676805683071004548431955179660769531360605369913914001431070930693105278645988377812745542814756147871039955555164031572044580645945130465873459314320225546675224865589326367545042751052091866729477955435437516283096069714919584998339532810890997455814840788699070799361610714040751008232914374698601862724512899784470746149356979390623784505286582426835867241109376400421266233407908831693542654471866804467185250303354235897679384108011897266804367629742571718333739832158872992142034872701621830621731144879109654179118273756373142810671281276866270497148943716024110471818473132674621483575743639492334428301091093555927106078365825424002294043538635667846982670528198085215934168997479054899231293378034659551954949503077894945738299055358654775271816978815980130898648130495715393238810997628553812135536471411942747906683594961994901094707426449545492285330287902376488676387542998471173428303515285815413840659358949370497227822210256010167890547887712439367549189298461212018224271073585228691808126401846917056832590356855866558687656699300154059636805605327941229435715756753929576294543676902413136367105957994475801797425255767760843567446617696965048450932924168434152468978483121051863610911495870962549022193087681770602349504697850159789885867911021294182176987188321645566995949071459883349333964392164680637469901424025205840060226667973596819423851222503459733783663407968508948627677993420872354741184820391181234214018476345743060420661016711944925873405627219546893555309115732338938663221167574743803565098236517267130151334456632411926605981879785380824810232399458471396091300764699568022560617629637236621680762973441320867573550924943318050505436758374070320225208932773581075029425002851255424032478021820788103876636642372499189693489435078620916794386365399960318889665922022155363707642362712650562762355271392629354926819274996337441718403346600527379504508951491819741886305215517400511543497125933335523687320271104974559127328584116985417389530191789572573811251883107488225407230885296478021715422984306436230760067331878667265970723771463702559448465182782953602167165899793449449155051821527370997485336456577945719845793671399892477124437317941230624443387316861451092051474824572624349169796442753248351069935257139580557321777254035020835401035934056762069103925716628071932022822421656888843998299062473646673029167946968479418010241098280913574084966973655701493418283756065059842158524837776985129006071700827319633135624584047552679032723189665153954486568482907452446034187842176525505171391277811323280626843706110806183385083580646449392801927847660094314210144973956789250468521627521691168629509977221170526507065815208265406877130708831110018042874623348345833645827939293997077174399446710527498302661344181304840882066389636701834007109119371654735970298240842576916289399150198339730204772191360396686208058793486204733001806929880496137973459952439216773695296220484866691688441987813783141216457431305654818845247070625915158547374428357502047446907322626355660091736985537584090856201536014211065155957601334944714780088384319807504779502989142558713866911848370919750047338476193685974383415770439830759045672258800347860984730037879755724654184782556876191405877109286720936907109296035541763079262036235811809232452554106212142494475088677092759529336254172174579018462505518495810833303065821811424628579159978165043208102943329170767552721552977213121663812694338057508946496891843500809310777121603492751253027068611610605522988669429707398398131758919750481617073002129126365499487068194783949948695414779389250010123578682805017362850572498394829727321563804881772796054088542252563345201275243562468565353131027986262943358545105409866046452475734281738377380825805712360760583001623060194018045601202403840561410281311051827014212616119140939535594936574628967255812019086613735108488770101788560589206821236120063608576177214678187601740734136757893413347340731088153946031458107529772022126742232141996722133671899659763619168303803341847433957848755376141447897193628658267876270389733211988117105744510922401210368802608800643006451956391293524605327917377276969515838759858483175079296660648178907794180363499359690764374504145294892492181184138443690795851343315378453778367622023848441710054602201213223439803097297080574031017695971484347453260781233158585640945534008564068085452014681882598202396498397226998634745373782673055547760181643337539685211031721768693341826685028086907881030431108884266469548627432859411096993423101332164614078162385769065629005460070378656002388069431875088553609066702521325150580327650847248286769224298823874987063164397519276911002798484520603151452831500396263446353626230982527233857984176436322527511559135118516662123537202750172367537231476525469000877682441750114130299923999529214669340453811596344677279442364982655034055922216857694231283628732536227499253346970677689708655991373836150166686339773777741724847813156901945098226752110623126399888059407368880030631954026479961479045735227902666548635895214281308115020066376710877614164755344935568874485342336734855401772587874140972399420473176166373632834631466879307301060578727679711260393263490977606725818192551063902149697949041354834901510261362550684671516440436913594093454137283618501819363093570196165654110882733749945912249516392844289427972380042677492626931228844170218834321469779934450017704354772442714354519391011234754209080079650532221139270821005280594162097640929157035267829684959569326977082422789122180160135318179152172263623361848659175400623527885286220561133179233393569478077031906645608658446601645419707765727410731821850287179768927131082257480372141311994713870447256494568504298299620370568650816188638632265022118865948730854765142885575100241562111004137807318062480077152695230439985117458541067772190450996313631491964645501698200530097773555914198632009430472319270502617410344316791025773701242113787094646796636933760506951630485244286289360959889489886190993240402107542428647907324412070184690407630951874317865770858764457961072036512208259402682356681483300081146533588677519142956140371396715213324798107793067346988201765742984532407591951193261159434110951393613151190305498768503663129009752999500294187063011321543375128570923344626473938163300684765032785136288501943174695485713412219865477707736527962727119372678521772805494955798677458677612689439122394742295129852083103696377624815324351327172212116586762761108435312957147958121336659299493387545667927129672050967480054767417477567700962161335725837174192396592133832755968445930917511656285373085054438404811826012493123297170767541151525007933308466379056388115232219155207984924531563355210920216567530638128419169845482986823422251012992972794171132893174167402946150155521352819189457447515788434439832296439090113520762751636823931178651940523011407309653332121918645128969172098822537420774590298086236312126872547171285808160677759496989208593610025842606936770233280002212462355753922163616703957987740538604176219694400094732302570080988988322287393207529174985937694711499633910789104501972656312259423607171883643807144222730611486731404837509073782458442589407564864884240401548114177386968867265165412741864752353124806618498325388561613745704706390246346890444777138771740852722344804627516002216250568755667326069242834360039341218315664603275794634345439415248462438104574219077978322559665441115643129801405745038498237732059087272916717962213147574691306949334845643149203817993673183228350757518286702620424151667975199377081796232059687609443470599651690033278392825224402625010076300994634957772369602024050782667862886958582790120089999981614591554477716930635280208963769044433329636750482480006993332274400150351667533309952131981274458138520766121694472061822584627973808843014145689445237670225216145034867094845505094124385327201551598963814991795476321030677656134817592682789635410684928050475801315608608897619922602744717437152684245262093745119705902818479688790192641500604501698827192372236441261327069705427381298140529507011395435069111317599436439344679725182271077881812099901453566231833125193411779188274918254261699377507090884294741323785267337328521599462690545241998282956598497758141104396841755916906921064881904407807286086478585933118784687387928867284405653934956042131440841518987110317344868255290770899763268777702314862524750710851278115935789962821331886690828510248912266645539153745198295759086530977960053992769449573826035847186146508402982036374200821425243645326446922912548729752435387662297175862161286861249434257730389436495695138397261171345073338096872445020992350643504390817242580262261740910523724693854118751921790859707624115240916247986683055843096371788542487483144125435405229243403823730679832704950189441634396043665816597288458253273411680655989334585666948203443521350184198202042808603915235969641085765600865759222241386087473363520200455939162240106127923425374257972577839255029660856897818387808158651696690201388986867538069635064174026025803032993864875611476254468418437152227905664927851717105120147937560042988949404831852375174090579263631478167408638798115265778478253937952811850450777256625419091505547307791716482373923609875594133446541924972104258090046583661663902865181713785782671558034195425168172218728904073798298917795881907723293122972715704507477069607526983445265530544736383259713336765669772388615515949180395052336372918035435486227969791146364307965756507372297630160442244980892669542340018055010382523583238731979548239753136213246752836493678179174047534672773174467945352972363048007263646196818823701556803686321664539098147806228122509340692679041222655410719911078964502520481981778522883652214558744508222399816665847473461830506507311694355585610389987006670997087441750528082730873290066538715102725628804166682948880512364495756920985832694071326177528435122204313442416924208948311469813706175801043924387668188733549280222589466241555827334279684500305602150573644426218832216193907243816561196394039819022569859469988601328873700306961283838298798491677872956422909585760758832542484821949218203960949140379276495158504657815694576020618011480136767742348660013230126738344549263672956576176699578371155752502269775581467814084280696673934304731203972433100952624737596074290059757395603864937378265886507760882463656564651922260406365107540371289769595233911746326331611005917648559030759126573397223764302858009918358709328090347240796257389504036198617398837909198379850191271982994936963082625184619366424221413448752820993128334942484698609242747123797390794455836270139186204546264473792146180703390325602538871332525440955085293701226183196568186016002300588378796070700525330018186650029206280753407285720540092333479046517998417478929786783600109945856888587129594655732364856499279390547260505359877129569600623022194242092610374270112275866123775371798744896033477464703742350812138757453824689767102134499338655159862287043289249135952953073643042785750472322549578938854264633631113121215426882158218807420973732373865184928885631214057428704445598838631500232970812821645981724173695069873196557137910222658726800675044029743579266186311297097998840025768773942265956016041731773250739044764128105775487761150384660536131508828416631105306510134974276298547145424186244415266728305214952866515155291729675179582349299835341167454750439337016799311935556049497833448794660811805039582370345085711540280163812876178643394488988739803908217272109908021426729443725985188783657628926048920234522258168392049211721605390913239986858241981009012071630776000472875856037146751818993473183519530018202534366169780183179686872037357253922342119522594345388978118034979863857938774477372907708698453033318167051994419734201927721146075550788842939976998228603613815142177940064458604585526651104054899248155917661487203630413821487956835585165425393600678208691818101564665798249474228226025033459445583754527829706912865424227971502237126165109852756461621417906243439118981542296321903503288154853102220666329487424384135675495848804248089113494073137161803566000700761491811103385073165275218166320224053162793506433332174588364415538836395771221618452695079850613490710873283731610002307256057955787739059233467886128465706451233781539853478475615075896847213954694976327081896115812739770983006135503769713444433319686506302999918303917580961487735532152345619110366936769592655677695188476661784192033460549941060303822779671672949733250886442479835830139724175412324879055738418971843773158496548635589788075646813863837454363823035822418285683901954119168625102585977131244960538997758202832053997116057057844051595756623429229331946110386157876342274653450747069129646690922649062730486307007368462210658099787869788014432994057481334407777291681624218692151474036019389959364219524239193697985364573605994892768309552981199055535392132790639282067854162283219771233630436142084667358757949472703423761955672301424532599783721807422967941235969369788835060240903598739067136003461920517933740123981787466398793695982469700362676981248780651636039567606249711253348213264664716933514268581353648609710565490645736135646071518147882609642189257547724455908114850321120791144886212706493139386150031382953151171515116233232006575117866911603918459359109266486486060847683606489316613630431579912193980975066738897897820456277769865260685405811470965830863986264610118809793161391157959620297585916129083388727292964471886454422111163912867401181611834272959404003272249130023726095635654217283242446626417586803319762834940823191720438902529985022716050525245827270972442195033250485081759551473712556113970875557252272281946046032105404902906809833735817686752032847066784591677786367894407320211946958295186692080519500339354785962508254272069211639385549007487344877839641866287506293199490400310031593321232155134563460945745162900825753245385317736132185279401401243923731456547199325803560132211033157783498086850490802312261659968499657250761913969559175888616392512573976065252124249801415870991222655570880811529332852494650190805756876494911644484710111990659442130737184111160216814788652119918195505974666394985341624133037299316685060794672728436183985567517879649926050045157942808564123924419633452377033685942908349299788119832516273921274230447910777031668536978739366252386037113309384783227803281451301158641479746867760624061735482777232653806362753260227080237601905658959003129677234934576273126085283333871928223216651812946525619061571588538949352664665739292404771217968438137413035643623142431420332422370509694000790124631222963703240799416842156651615331822238144652238607230621977176258814229818525516834510439811885048864299540486689526816561786428073787511189344814400378496970167277453177251639644035041118854921528468586869834882537193903498222811973792849916847362567758947470864334996311121328542250068802187165549595238753892822765417264678089265306089530969347961129011983139681639453797529095784988513334305276670460352750471859989996013049428431989356201023247819296313216030249383316846026834681970996232528815233630712319977624823000201325336768799453627733213496463280969149609759904613455110769983477152189737683847746976157795356577320068851262752996682229591781719815737906145959892318332330277415038961035085073655899328443187687411555699151637752539938828359282100540921475476511919879156267779588322694964686812917194996865975702589786223957970623943187226717716295934612603942243547073493027127277539636737973741371915093571494233546702217948541115869468238143711040374366719401117903712304971164146762843215914803839941716170011467017431029725382379268686432975219118636691239418563499211150284022187073082480372256416624083600083115962575017988158269261763033809227476214134879416367380502397138675857686177693697228254373817908656413739336148765341381894020179769291275690649497836705572843099408517310444902395883646636400915252090493833537472189421947492729675952225829350839735867622861562456997989029241253917212865664444335743709366354486833388285253219652682455657919628651536491180945392350424722223968294679874688554961075530515358753321263868372213063904472411794819094784576365117123687919619650990820401006557519206890186560690760863927668101170767578592539990450301349548810257681463018458562472522563365939646489225125979968500813514685496733416628364758200327855028228204866374809825685571279294485497295796283302899974887855397164105885806211966227960481011890180353544518876248842486469747243322110164881320404478607457481005441451674326196479222723550962207167454325748138022194052348908272046924690312122230515596156806191270683086830002773031836409028694794306849850727169753494401494071576102492855010577572047607193264464862221659792063199604458271832138618297249830706440279486586706565072821307840847593476762996815833730772943996541744202668630639651323986159692606397943188437582651597973096434410693406515805857543967582192202071415382231714627038485827983257627390898161173835790862605281371066626211135295996662862276748576606043469554609199047267636520867088135753156691077494671207683375557001508741946373520556925558421666021975141415327140891470090659483187070357207870640034295311328174459602875674364373565324757431216484260499492436930266159253939173681907932049718494402810755378962230721926837319869247288339425953560246937351762333197228180933707643655568078623489464443913057101633544229819481843661138598788618060856465932943353262999936066760544058749092528438331335860064004097436147245013158297249579461117161385747597005067600090494818900877174253009163420300267135967257394570683498797206269265522625104984321148492146247825288425091058316241584728898533554340976449255448461164411789115139518033081289984553533838767235290934052315538315817464820339891034956514657611731999671367974688923398068824602501008922988811561302782212377656131022602953308053284389811876789285384879189843591067124790510224323397470399898357079069732402992051736647560940562879510846789495625391732039325151441211012163933363774094957583759635731923481130042154662781009884630919256157058179602854169244554804621393724562682302347033427707845205430500303793330586537757030689480849964937613078569650594177559701638988732082161988807025425813295082428543989578251520103356710842952331896020939384437597365609590496557795898125932796850339522667703836631710355522210245341819332936037268081873648215846591497327934966744637966013858310797314005711303460480582981222372660759320178663422126522419413305917488854650318330531800336453770836678779525809114615043542509071599303059696182511582883526494030197573823433472581437693108418377775774440792415741411848526367927607925156727655793958986110433924225782438452398123056482145131722241266914469303123345151710110258630704526018384285588965624594892328515574024902022411065275245328005179678359128038349391684908291492385962431094155774882236823520525518356057928395587995980783855564698764557606846908927905812276765121734787127587413980729266419374083531271035861906208623695183641632046388586688744229498852794042810678446327090987578628775297975378417455514830896631980247068194617526143790538789127560894399737923003670152097457898520527633411534895456413798572748364439479588481003875429800959505429544271628465507145475837849424081339839545756053796373227406569027055450137767330556557517316742294850380580929347975950284540725512063758531814891545706656149220525399227852337188527943526061705898927007328867860160043411632698907584174107242443595919989929163423608652766914639416550817575898225979436111516578928530769912427392943414086711714003769007945370090675737096269022874891826511840624266893654723608303400508556303637084741289139316517180847298454504783104087736717367818104787000055809459499919662807152901264214089689012890833114405423051793356594426892106049009284416036066376926035254426159035867697978490862953503452103465953923669222075685096938623015968816338861365808959721114024276297875187345086478585476851769403497286272291282349280925202127977141510374640421783015942938402693415723149383674066757445296185724357130307498916692789600722432315729747580226287388196301548567992398673043552030465185914438134964436646022838392172887078682724068888736252564705237675606816471154687015218367178267671261110922500551582928597053128983660139197891552114998374784058780512449945048477135336717024286514631275714324395035604233613960783041693308877812559168025868396150586829137433393675446380409506859557077044921201652743791567280646643192135291472728073714053340609200388234823574909875050234579857807249291676237318915332276455834652615585690516055686427237018018238654487298676485233780353685373959599364347194803320909992793076969954078326208289264415020292709474025259654452938970268932941553454705127982967762002288013907950670025003724847233080795859682811329098792930233196854012153541333430517548791862175483199686699084658137989890637101571997329025140297372346780690650782131134732271656435399972580791690936663230835331185164288948597282216525072968295613559176443905685625083954916430884888937454667905363751572205679507543298253112860460576761967358641864774979506933607762770125940701741146701271669553000988192126861825829486632279772943488655314264748756238075347856256080715023996557295898658966356347472293774715170956086230333306768906733364941192909913370755907871112408100857197871064517314600713544250302892975074310450193388963073969576510291186878315237276917403151646172028885868879825774439470642431105179705798319560935234772486727775103671833637514041117299425237610164102296802887808532414575825603881556670740591331935537847848054845707939097219770773190655030371645137180148394831458306816917777500333808884574487186938368056425547938260535499246725423802092709410518018578366998626320275620261340362058759911136665547621392162349940331250724640559432583675312389153187875748703883641374645628750903403117207284295937486925270888866192570688306391360384684428592586707148280014058394567562856149574976053544481579194262051332324849256055318066112738548212796676220077765145757731243615915833785586108266082652945789479360254514999623616204342573016834022980874285091570363717376462971710262620841071724125031610793978359735347203289092276388759711208724852183393157314918093983081142358632798801927366024194481692444117036918858242406475539367932488500533083538415334281826409871200208119187264861402246213483531052334703913385240672534021997183000008681420400533253505868958240072115356096552862031357959748862565557208729351788228851197938030252321886992595708532600329073686048222047357923017859094518394953461569849165497648245086623697466125587941411789932693185931179234268008175715208252945145328726173546308983016521970879932633949938214772478841172581274260053642782259398064510216074052761602549888611012248699999752774725014034920938023356440385363937701002399285839285954221454884462452728764105493618157696323404352616579662135888141379125123614672216174624502158653951445350728176534609770983074870576961565243483909265637487847622515522981470671438776255951041911674790382295093785637728611338744254593613664326941347069362646185893476288676715016487986689965686645929872512523725186442563984929961118441167455656454094501927839127457183376724153785188172268290558983370972831504351481175887247888854219426437427165809198410848202500116379768496596235132885231994673643281452793787375006904728515534426979421003028183954340849876889343349461917570585265758292779879612443382094661223868629688200042707270844691652669746158892932809736409737095298340950001621769421153620586665382109094613989611548327354240669184132519512757007254981093668344524397048471934818094624604449773373988838330770523136145438732941143334797438543165775752336621710270915822377464032068728469232852108985409444921809321124486487930408724806849053314139526520629456855795473747575358476972283511501812793380422802670212817139784970012225998810554653251428237478825052657778785368793927457498522696177579090225476087912544819907514547797706231290232591710763827541073423208846154059426900104601486640112187654312352547474250101249757123100364872041531665156254853892992160899310326221650594536437087458108553352767547405983470797860408927670258989293806443096486977560694332737864112865377542553021604172749492283225405695831112098841647432699169028444842567323047807415270047351076557198029570294577753543567512734005693075003265083838305841619063784589972773495217766585957765504426472554848237191758836781051526225358358088789277748595237907821872637400253152964147639127429919969575895853028649653718612314136244620457607148337185252636654431258768970995248281095659026021080509926765731046196968328421484074615984780570180987931676509664165231304328971305790397531180620418857798063448212899521779329687064208255522080469589868979933414560168167599273968706925294429163820352057200854856311831604264683455886022196412938099995850188755027993937219087141546507730249719291144955269680474451336821711924324531919359388940171548477916277346398035650767107950334785638812070876614117234385726733194455763188819957006775132801026264349957497376417761398354056581690673948657021385553256611479620609336408608748171459146052247649082729324750880574256139513726272397501360586071748282212470683066139364706146085398647064393150757609839743770312286176546659662331053950108517706476417551227072156809165553329431560293031613597269812309145634177389965902865208949062557216045907062086942913844089379137374295963554052292623391530606413130181066016704975851947245444565787096661244228850540545565962485955835549387187087300923946205924370716198775233001570126505953683909549878624039543931060156299425682921996888497131464134894979613482781713564233260477436147183982941411704513398762163416935706684598875172222125497466261103807255086396689098630606833653912474776049659508665884169045748684266454819013242386708084962824865832104318558176764376728834090068513397895368574758498799120391267133408944522759218951565221521513210995034594421416723275302674794930981673151130952165371919815472865654074306428058463410103247143994631386598707059345796825771548776913609617625896432764349700097290165305852096708307301794053358104578333610830244298611843534571136911283823456339717994160176767472314373888992006531686937563496121744277458940787530310465867728529475623535764348392753604225632674208195163259116427938603805455999699513961554461844014697101407148463954024922344532254510633733765809445135448693569414212029757972128349668943427916477997747513606249058358503450707131857748379544402269595519909224706304276093172872200537952084972518965405418202748779062870165097464293727548726183051225734575009449910638330815868379213600001507140831536834478164683649845165833307767565674747986179600078846448713594283568697675907646905859231579491964615634524589670604732466229222919603242313292563046864614904204850389349011053864789940022939533502939896060912533331769278702895457989670693979408323156837261055690612997966197684036120609361662865372116697334132273673906327025045789988936807384190410125937259490163493018910140243148597397300870796498462705046658606609196099490218888319125962967167255776690534611187801678001516642909389610888420716453816216896143350630874020982287471388955002515391403940355686079897065056025482424297455593932328107822507135814203658905868206094812373640027840638309762684756889455495042316738386779382324165081868348128988642405975011849699505491957154118612113794202626663285024373315319340303887740190846390141021245352533788814623513616775760166662029934149819441807910693277441094386253293779617376608490062211893655626643737685438398583506211697576726238845802773304387950082191542867758581676503943573340535645474049353760000407734304153990390596517764258425825188571085024897437390229022047625349347227617028661031270199561054743673917385141832846678493768834416329247917102785326991106453761114077846497614209932415909071628345676542090532237215413038941370087035515296382731812030378010585535086071649609719426940845800924935629787168588761719051271539480706866555399730556129307932960967903286228831408464507981957447441135548517932118574334656957087452852010462630814100303434806945856225379262323118766341118531673316479981794275083113274773144229475733341150251350105994659348966186935617259977855260213276488036852267507950527906129714556497318236047495474183620425204743791009467459614605702884606325156728796500359246086131254186261164471439754677171184282962080652319556473113841579627354358662030768694548503742772105971104935700675818113154199675446296450993004810711598384007905678746402272908347539412667175308012003249762174489714964182146196139254335912856534855047671148868125932807767140877570011268767319935489106882751026336953641372403975905287068068357460199846667549183821523383867290583433899992512316113196436769258341373281566941528397464900457948472475551076364250083829856583093848184002718520773691158449262329798623625672893744070239195926315067769312382602386117292998039641528757286372100999636535410052739966684913910721426258881299492739847464709531754498870936464180647593576772105529227015679408963955391773430787449132462444870416831369028757180114507714796162994097965229479302289830423553543716672870126624380880223356408502505143762628036399032926466325857050663164377152141414403943236334735527143506944798189245976603211630402641344134938124345783101236641269103145436347952919441814850100509219362821869731779289255989811604345778187634238843058542531469845431287224411307273392223621081968609257076170627022531472866774091004595966771809002112226492131059123012395524401409130840886670952240754744040925459925604056797840654153629140222818598801383922918605274000318424763402207169830525208785751925647991658129359404722199746001370619603484469142253273859219625911688429219510163347371412428204131078312521537478817458124851251515711943623327432535873015713099131245154022050387805694383360231864093280728559813072595114391476251414115105612422451666687657092553577294780851385205794777472895867018664406578519169576298952468056846022485748320514553729720498212440421480873900856929671959691102430761127807686245000707608312798056852492089919767825191374378449546352484605833088806076405030480931149734439682125575762317567666979468591295875988586067696159719857977012000728202121929479857129972620929856056215932246451176617886656875330774282800029248055374297752918631260493746554486424332439284100056770869620094580423304473840685985581284594443639554676356318496055972931510681902227900580963846865629739092901397278444088927625316060174512175323223596635464271215173272470671248179423156959375257460466704853972465899315384147716110208523133164943987440625575595492428656875492227643908667291615446091692136551103983239653252343306479387415778630192835732790146099143006281737046525093352399015303383321692925906524022989362661934934893087255451983137663385929175331729125843346068911867217068724441133445254947536417841146062945461284275305055817037740131310533989388506599635210452837170380728016248764217615139980501987157563034367072691691867678975938399518183349032929245084416192511702589737574025960331792763101179369976249933839955222449203360488829250561492169915187848488352133813546638697905094082384330430569330512003020647542689729607290696243179532854763978573917858805045393624642972923360848076464315409283868883320325181128137358575731841141336008752312806644474106496980557463055854099894986305231188211555339353873474859210860811883954686833200785043773828719234880089011219860726776993151083387794578137395681992539441415760329355114696919645775667943373956563802927556108812181703343817991804419880954865313823623570906258259265422441759953837318213034541327203372512738785946215001441356937759068798506381108694952679046778428273913924471192363055341510942038825589663447480808724655071017546032580977079018084887371897833974585252309886483168892236623633608092596337194123642118767290238899969256530527774648681422754675066328873159301002584396609569931058707985911686755667921238706151677775599112727618155981372541400252770292161470093449899040582450160719540801798267833896248458257386661235555820094035181615391761210013201514726473398687702988540711314784415165611428846171186637951395390891117034903880904431720414247760568608718732099545013844700195512716586103057440508506674426440432870120488737261054588680417421415997669666072700846154646968914214681270790891443136598927268018230457989292837525679242671529308219938088396371383513829070522149309715482259524692150100729698243243170519664517767537143736377320342569743131576000772623892414210137499372541143404389715727356510887798365848640063570041824399705061714730134749667151955395408259553267233412722946722544841979525059831529410484946189813179232868304615904364221349764413598991624459101117390543676323766540068612262410780850682191754510242369919751298112764223722587626595167233366997308721077654063984612628095308660767727788335809874243336664469650348594316005521524527997712177582985433405222421827352023000788741742986909060593726055574535997694748834330425514369877951498258979555471471679179256280254615994176472649283930178135358520213299646213938747267961063875819776797031840643761444011275485003135062367376011390169375223213941687411065543578255122263191931268346525305653636729089976675841286830649920084957985079983182091346628083695636066037450545884880342215224763872280437772130193642022540721179348301038539067052226148586329240960740410232077724076719941933074379640179602794056153878931849448126630366449121968395995577256888848142673074071943753676277439942891957816084235975599800499221331963429445575054759896726664056493790897484196999979041091077258480118239087748690929363578262805844943646643201591111788583189221740186158230041862774779416384040879702484050243758737396180957657045337736644273442109509795890120072753358191808885561143568919582389718466498906608432882696975472976640012650742095388451292577546310607805794211794872526731870221155240115023353967965646268261265950580652517569134311570831077085316420374735082185412178334105700498348994467090930982704046608564557330433460794737745422028410123383026449552186676993118922319708026240342939724565594509654832402685519200828628871520303354659907431906791218616073582898196966525998456604778518775808429756639898819669457076482982376537801104480821948155437127290215048975989063137371292255583369892469759469512991651977304441097603025933865967503861789285045686127016778503116240976611545659671005309403827243665514698654237796256523241731926775805216645038311385832267341949995349345120337143712480432048939517419279674721267235538144148773888196618786140378730422197912996933145702924928819274683027249464906462708102576284199865378072817247198862915997674760967619969724411318758319150139860728702466983143644338059259473062479337441341251136571463344958718041873895927283651566399974103378822097712516776022035778757024582984959206074049378958007318843966585507402776300209981212330317431954865007573871861678596258692353466612566475556221290368085370562079529863028726770479899129948247315439765882774092477401131025097126719351075534445791937038153896088592146045204382449776929635304864369657968170445773742984098401490015524185920225763799209514562906388633490960139199109586405500369356607585641315319321876321037287715734740655698042542884865790872622874467052541302114516191233926612269837143068069372911966464581836489226336100772377918339997017430543417955533184483409260176851822826983004715103405409442511575392958501699876176370980241379699359739749266799678182207496188278887259380709271558464276169417811881220200302671094255389412279451184215220316608763605717254717653908719286402432743783679493841306018010293776132037809573820743995961575544873893885557371106620024934078660192449829755932583844312687961875624098221969319592960825956785861903223457009436615657174601340583857458547175329588529281825817759522561517478065827212422379321448779760885689147606096962552209757366346677486479865181787246404619777044489131247734973344517305746239542337359222960147328171483828029463240234762743079984339852462367254581093247496881912487727444722339175429198418306569348786768102521573505235340699312163176953368250042299177577283034938626327090455389705101801231412822630217280536539965240071161749309645280824815456831200246564760050822816625645542588403272321490829675724757625647871214354828007358192276642363644215705569427172509411255268460853667192680030317256784839410489318068416465182240942048540852410541217333875786142554221718480415364655788011685119304907227596780431736806065658868895700578140196902710099737077626282154405847658306017805953270109084844656006538579504497347913062844950298475000624593807802461474756795710272554983332986726960357883251490393027965436828475426738514693704368355847677371754658305835016249293745897050037221134917240997088909303788365952398631981876236644550631934490837043384599324575218420827853341996953468112512290998910118508058368480827356199281183796552701523657377371446229296280244640150059410145358044187067324603150240125465454234753087806328592983373800684836106154412538999593333228854663886752328160947785420006181311555492640126870627683085911270632567566497196217597031936106175430494380399397562226085820505775713724700574684184167622487152859545443101197819795282808320649488598214038736767155774993602947662700842189117387653195197540283583964939466643483144060347433139103754353194400032717800847588118269417755837748228980196044698447155555117459966114975618957297589531025256385383269313611124856847933555094203423705036773609747629993223579136836610176320809719185162886512375707520534211544776451787724843527710604160498774134907335081487782003185736113572477287273744594987453278838570107312049403459439616154956361167766689611225297033007579356561918642412039862042351499070203677171670734362913240284877602140382523447498261326523074018672548942152936448612864238942281016971485054083182444884976658516623119241783443840038637599005534528095550906452163712011107451803681156238326947607516621169160279696632354667483401665185867506739715420044678661582075163126210973417270035270089390813785188256788009896927832207269458165177032304235310530784973279833668754721580617285332296853016369569755078213605463806413020171833205086537515537769876291163718353935785176806153654957246192843306977583721064090209213860670755873366278284731146694356112836128641079559004002254226391096015315769678791564593127027040191861755574863458714796214947656827928905520446631270416171257356949630324053218775734208208707352745316336877599327376544289193840357338298059982731531763806362388039036943446245715340183027028876700878867894823447500679379710276539314405617382778779321523857121184099569639200088330647260127461551321017947540976845085131459220252106062585817680360205815576561317097853802123894027473537649740201592660227253215208665718652180787253535336286901109870316077485038505340620733287609911909430046232777894658232541648130822984956203442357546402364028902835744049322385506630401146466094678939311181933556612117212340831579192683816764954080291717396015179907637927910740209454544484620020940494346812081667152503688664841117360723331430178613426704792119994507463339597961582912180485480427787059649318174139867894312835107494956982841566936634012403433014400369205326407188918321370081099323545741325379566548061912035632904341342440721674079655447540473323435578115174074131502634988528157016557725096611137016379029069280234146796417873494952890751552254108819448087621708114157879380263897971591995437007746271250326994748281459258176566744840254790660592706521431510252040343585709371016332664944544208861766545368966176070203858185718643945512771717771126462340210989694435330859791230224696729456049444931874797448190666205901990022773404404706047728240264908678114538893485430998492202341475001496340867000102451568921661514895833260753351284845810421917704132621965694459985561708757260613076031848510256878761145520628764096546633297292384189015486017225838038530256874999727328228659162868042462479908473591292317039978456135788051455667270609003714659004903753967026136449225389317747603027189029302132331861294450438751914341403678317971211857993844185767072285430775832763642839893380857130344402584216425478945551275452726126911475240741718933286365449542099392887805340423732916925563402550277391090990103009461856160325380398722525911627296282840653118147186379977651147003004205539455596619849658743884272497840142651556565891989990461482146200621382086487537906686054784810283472305969486972227445556306386799314270110498027199184723998729601880411544050013217072840518216235341741374985145882067905276374370402673456734419726980909551966936168898349099056013118191121669810763314733966849637019800989313656361555185062255122377836082600961396515335778430176046699524720868833915050187410335831225073138858115341320132750023368696463905258851239041884097980873321521667363966112295621481408196853484869516414820512046011270838609083474411926408190568208549221067938421774161653615323597313042778630927402652268090835786660162239323289672000272357397078335324838002819040365220031129351037551759080295018273443031629583752950503738576601850772459109048104176768424112047192424736335331559053514403989988198828038316150468369041590506743237198881439490990030240735206878626139362142417230532781787915881776277722153041401636719952556819157696240542406864724208535810222516307163089711771203371196209408914205198046260899386239116456455457041602201119470180778257068785260163599007012990353761767155146638357128519510165004725445841030496799579251099536222003593901371467769185589595002725238963765758206079159820725918141285600220341774426702496450546625703295965504401187597944659370559186404989609091874701909475667882765007167965653676963691202996518925155746368063481096067292420425261038013355758512927783312668254145822816733163512972521845022239900331411788575956036510565538571221792912687558750223825193159727789498447242148213801191092265973144008959510769553496881300346540648892630543907558255569692080249277232393576544142840671688772080932082248104776503665430415477754625605348357393842590741880647681972143665827680764068510718477849991582953777986711171695766697217808110207238817277601528527950957344829963831495080189197760612946845449856499347874313338620722524536678587578640943391269052793901069399243717512752333064216609652213903325489775039903398475644597709920058726094783637578873701398964933403889130052172662112664401234863706889612729194212845729398120745400974463238492678986998418032578216697398787535163529793425342885951337963484155201280552448143601303757629729684627153906628606043580031631193433939803339573099952336099285665881951625052558634519821807530768463602571648342689992760592206538095196249229699119943682758736270234509842377102571108996012979287131700312563871231325075274852011646217490324852815025726431287919572468646158313215648871234108776222986538930427428871446626382454867889211068707877775408428012171238878085831245950864622774120168959961998123530398650228838904398249180627509826819313234992264543915341308100466237004980890221896048809692789081359916139959517430264213027631518704865699292986036419085506724686177764551089893138300697646969103140434157679730805317656450112106515079084201070585410771522755545674286990145811882326081080678376861876489292037498590349005040506420431233457294185846778963493309434908671245607034570853240131342624221479924522786967966103824972808232170895592388859214778488374212741930002067933743362767880728810477077119033587641518790511495060175189928575780864102942829302110986853038938459567150649801501668799480737649562384047579012796413756625822706258097659366226727433966511936639420219260351415291643776848261239190898147746596653543396595152191966616115038519128344514775474142407978701620667842297659854065695349802198532410421433483049048371072411757440843535597032577419905666426369192948470795174689331890487275247258551972462984251818492509457688950866483757092725893795589823008161311098175326042954071743096167673298668602690770895605762680440311035369330458123837275462359390561724691378197755065609785033582857072007701141601177337816352245147897785293177666195484377405498856490877343883528444680135791500601138866781466503888278797427855163730188734791811195402648644580204431685125360518084497709015084517301345184102133945561277761345478109076714415077208679412694811002996009045698534282249826076295298121954254880799044667107932322012613410362628199761328638943684960476257578460880248555465296183749864614238115184932252646335063145918908892029363391116259561730050280189336693719614036150283822831295121566372424083647926301224013469534507191378842365672998458037988284705523247430109086171516853569664243048426768372818105951332933032002571347281348303334723703329413757471396010966832040041755756929038311499288609571953066505515809870091192057458137949876697904871019338591642196454761994431828793458752064983000730626576001880582238095101890974748009257809768228864902679754952834096830200133505496834855471483353928759078804516147795650144273739118227073635602368966430847645095812424952133075680901876442136604535424610998986770368942499861456071776330299571203812448830421380199456390473293883095341791283050030274160825094716948352970672884969005552393081042909766299316836578034295514839619828479001034020412294211283009894482309728172371850539251431896243098468366473871914976035366333465012184394265130940003582266194322688798930585043955287733418224223472585608451297141809176214237448333963815947993844471268251391803020662787499781161588870522335991061095640574740106204992016574638662240566006498472528543699474072710731351611293538565548002868068239902969530929644008156691475096089448896431070179429062230650771765879353784634489177574459678666030434820106332049307427965582910342688841457994771583289454422433693166441206170170133045532866478447723388056025224356405876687807093963291215680727857413624117237348206557871982147167301497585558389786326903083957129969080838116073904993132495583849110631154612113325371273152946450251636563392945398091162518329749301443636853096213765052320600290184511915405713838143631698577151398538311297037490823002109492091272565463969918989139231074752779217876070742174468274764239638534505536557016941056861770974829818426722723731062754256850473608793445382032019934769715183206377236991012171582260130652503678745238044352071648011001819945926391583411469491654139404363837535293455883163618467714225292276184322426752898417972018637810833353584252314975820292983913900847239281164942920820730338765292329659419343724647385055217200412366678827741212066421296562905213962113647998213422115810854145170153429184866029008041485189713209393003169413078410441071871063812829663754605769311812236085642098445792403036541552975877598524657171278753011962481821941504815159497188794900452751001657724773506918530244842278337202732627292021359333157790239768279515807898916247814746516502220154435767018389458322479560771089867107237037229017405960851460730851460740033914340542525125606747307452678254474256862752228729150577322375589363115869543128075290506704491466476349469652314744886166752579172516911557938831117073400794560384165637203740088018127689421656055799482955897820372014021106108125446962790274863005676359002633511380933832611441179675141532963278960369480282110940563109319375053885613442720321184856187580919392711689606682774327938095978403984043065918560169760064595648552387896228510920932294879148215791264273880365414470361779937075715272428260925795826929183818797153250852171200347423907925488376662796441827566921911502921527788691629551709039720898293471668668427642690731500997155798038928526243279660903133475043827916350500010298960958497605491464186135208492775393268071047223972874272733012417074121982864331810464433959850120343953480376546236055126596708642524109302397915140619033932446282629272734584964582878912064118259979777352373817489197856644550712653730317677569738497875292232651272157523612069558528323507023977351012566635792187537988140410886684588565964797188270901668934759149505799807326741444554690218882561265996350827580277374403393204757710049904346792781909911008127774773896965959315970731132031601405035832671386311289405178309844604387008753568851758435755918318004105838750693264037763489431782118365171374640868158659745135212799834422516423165433006610159900153397585405054218901693944463378873009602398221934112710232314379308974758605991519088653618831877080746111222783859676560431558998867548669289979329094808333104960672317598184720925533987899703329625142720823418873502456801932646638097834770798793611856041594025024355931366399629335020351680255398255769148150253933104230856660684780403718926810498753922088280819474188623868832649513424744310807526380859029502358039222509153340467235550849074653222270662264218721980475784983735727041764238030544156898027879620966795741375998709140726142816367113038061190269968750115437527285342744109602822925773425852381300925157305692836708472904309599931980790620634023858000517374253574014089307952394462209916926010226542606099886332084523593502322228806238430375577418293056203769940500384950119530235549819893389898317748103075473976927010845015608037521945912127790207761944774023032794914608144294498619515309934617523941383522030521740993184363079135246821484277618518563016638119353971898330977936228930116737807435576820798712932408001857499915012471299980012489234603899972382311115203861091080104742169637929301548893348555032302325017112254199008250227391561229211751670826018597881633705321843860687949124581799446767274713116529224620411013863149457858947689949229408734398915463015985071420933609923446891344389269143530380920190207200466889329745163009319849523324383699634408851841642810090144908347802229072147850068006397824410361843422268351631106114481361299353590824232191646945484991310727597823655050984885776767716530753727995289237656142539058680797087962444463659347867553949571377378318439345087255604475391842472913221228044917539971254051400958004159860291907865237735237598866531443473266231157600962915766914283427430346779106052507331360064613915303731088078527965910468344929162662827536582294687535144367321601143530969745073551668867689425327866157106371267711036417177316576528386390319603188461188725183643121960798249319366852186879370962534362520414540993845066821693723027600374019560700881431398871952869957959908226455506778859711083113272865849837224553379806967320238308986740190443524940555145359143769415882670265888928565453573551120353604992944407166291541517996507632808057200658708836498388699347965092828819135112490268611345950834142966702157111579320223780200500681028522790919477651338523584232500019695431435901775837708121179789126397971326486438241283388071706783828281481263664196803757534255887329982282057741086714690774394876637984575523593462987434918924123121114683491466234498952938687294788308073714655253022803740366329702710561489910489749011102860654160531780491484822452109002814322941464152408456003614453485163974498543873749842593290330398155695150603140114169830229684926755967451746967439090327601901879819136935572681271088481189938853327784540665567303407403304778297229962439131055118334973942102869940337622938335387288168514573587178443770193043501188676693479925436695940393824828288986502450443012392363897518846113513950648416291102209551103561605744150192540147868822129879498873396345714149727938222631504154236308607717223840761399998636748808277285034851539731862738781512262697081686956177710742138793646522345708460619276412852292879958814243590313252132858825766764792941728141323009050795517855823092411289043786062553335136433491966652189163218848251883046956726458853750917037289831462628624452581911607506652066477935871831556480202429330268396042867736015938487420883502771553084824879444203268130878824898643973985592398365243304166303109855160396935566707249229091514852853501184172197877640887664653911409206315575551827975649154926789021115941849061444511407355691259566741619695442834924711500801125190560662586334306489820148180524328151840043256344117325949173289870525274432267009795450616245223484898882170656280059358766133899105431096912258396426531851904418317273181305894373748348806441516615507846408029152970439878625769082524883057560542257283295359676804871950137665535512711359441838018225120630679243322275231933111004652134035579345953494621442000717244123438091486881557928985351477235478869688575484864724177985920757889266841554587606321758190635222108381351257663618334001699100309447789032679798980116868837847640469396044016547463169520177171522135509099888032673706739486596248325625153910812985619218840453817542423382045845898705767262222414936357555744076649413213091068102028060834744463387441508552993627505686895598210560928796230216392434372269496243059160360373062580656488058483933544892100947276696444569724576902399901917857017623712903855655176755723900715544125948901174305035589153292184447321360025531741231872203253738033361540931048214226466272271554900980360693285795093341367203458922810153842615000497061969304401808136705251381425373320234346918825544031324813325857577537169510781453284011956298063275348692398900024069555716672460463664942630315353276098682479428135808030162117644650584181523733591545367029182588525637876700524375917511360434701229524852646734067081006326767332514449754648793744667973333690841014942703770925666463445525871998021371129107839721582443756097649559595528623130512986711612029980335140002921199980835147679622523037855625572955542672497072321359509081951703477630304812796182910994474874270904024163848208407862812610209782504370448265997005188020948567686851382999491742965656235026915811088219992411866716578638918344085746348942510052707371145039772968480924207250408423277759331515043049885189879933115381200375679526757172662203641421012891831818238919132539927320080131443567274123183741246855048587713169388005582692757066393937601551833772744764116590288167141255309524170158807143792208749129575725027302277100547631945849780745110177928445750783815934983871565980861823307371617010463236144327098923835031264213772320200638801349301886456455252796521509972477353961781281356536923548928774861609467765741520199901307430216523179407735162386928548522585651181009463775079957864613969214762963512438519991370128322436603009865418007732153735057355493532117840058075218032258202452173870959983415976892204658620041650664324823439680256379473821485606423318639013905598192683751263477976552126447221787721935850232623271332388990467345409821957214074930515512735561731681965222343530240898764247834599142136328530628172523886342988847895123764356850972844632136919712757062497656382822519902124218117026770619489146280712382356227186494924452905151263542445215003558431325767194514619039374251638699187567912336612850071410663758390589652340768784446282998399053781105815531033292876788923632188588741688428485028506689230455242534802562597170115411733179708298543380944725871890598260637817205895492928295412582179515512587961550860988636912019504328596751911040460804967639408828293270695835103565494282282779412177747272492252694940192595863732298112981293992866090237367017301960884727037994408986987431410325347276541414428164944367995405200639241939499085882983366874170590286817442336255529779779332050823006282383739916394063339304603843837469995137790254990720515871721236671606574716658583132133086528502247899918649837628696167907280353059479539615354413074421134614915571460528771638085890404257402054919498797009222705882019553387188698541463751275187410514089955770812355097884666017995336679039464089566903378994640019458684612500089280731257479032134032384377474213281243350304289951828570549864827059305131454200925283901757732364036420659038738349258019227038323917224348833829880692782052601028732674698730898324034317208516020481129321590535762908762978105086745019200986952089753203469063539756298117209360109636573805801329578166451969825371890458713951348803932328038770579626930209716147500379559768960517945742138282338687810824141969738643215501229054455632041694823389762877696679835964364407771214584938857061391603565191041386726616611041269000589675464755302427796899230223363320959690105530574483867609365028652707651252922400104878355859996037471317983735458706510610823289788089348391966479333498133326459398597015207487913223376470757778849972451949585805274393554571007746855272839321137320358067422478688550846932299004719397966025512437731966820286831350979181351706672375632246286428425131389208843277608428873718338882415952079319471955439236409995570687039335609101885271616197011282993451768868628217726814639657231297068939013477557930794257818814367346248835561658136296706048406214660277572596246966631465448296907567860365315474508262638388167956932409429856703107443379972091407580685019579325538717838829393262642509566324064020120656894630266124700770327346070128889391731137610313887574262782678856703169244614327862356498360196335632961911906073459313694055974215149611639587330910192998700953420957178242465323069636764925234471758321174622989179647326283530251309875291566866319103264953881329689686539081757514475630758866497365258067174850887211830011151291531994512620290304367893840280027283961195848263450902936100735890064181246238383454029819827486245658527741366462273706210345679001096757823916145493730633486514619976559670539952560192798781143478608945126045161560247078727965814516019790517082514726263540965431395143104235265672891676590710771508731204732868859481241051273540142836109829776823575351143393488539042038744832191190399509298200200427827517615131030464696596817137681694918680686307343387477463811991923610539342390114730775061454690935197469024430898421334738159422158796698215800336499443182121017004924709382289734812417571570599230624049798544132523450267621298694147592171002743895193520218752877147634091229925262643072874281267515351495943022972481929525990520567859702840593174470487296886555295813610589663632491527355768358328037890468348645026974541379883958036638873336754824431007432397809977844148163087843934900876800748912083444538262102063087815957337699984701472872118108810228602245185283025467440615565867626560113239147414312669499164563047728107789546421101185566749218817495684822583169333518330113111469032614108084687889752581969532592395389807168873860794614991483850581408670011470405219050912100816485631726492340978240182047762909445780924132761272778399498040778872473506683468780661884937689506355659914823837413125230005665833488087887459837690882039616210480789192909696825269995717971442480540679827230445247545664299709902831159958198659107118253542927695718828289136682826172012871659641387826883967566848670350062105622771117309082523409129184672952513873414314879518465777535545965640469358204572338421515280837091716979822871587410603921579733238978428294658717190237492894217061411166368095816430312457954641796047696698671163231478555188225271353327158748444538051208780743567073076284018287244927486541372364908160569755655012694660107815827937286681698174833207336482462101000830786556775051024994526189444388949784208448789263063204553514801895935869363992383989406173882479880653424287989414095542098517358152545181559439970738101572737587800988570375311678205688648680227781698511359920393342368602194217077987224138866827390528149800178323831085762689678324425672021431519178264182200583238902636081203942205060894511551481804177787789222908703687060876277466961585716766955314484141684824137092430501086410032487039631179140588043820349183597988306638479609351071282213843958039701492171961369913161288013166753663496144913637859401743134107907610654489367132946996807499656656599898091488466429819080721945583417988236937090739108225392393062261489084134436080840720518268412642509040555742360729355835625848737047269860249244364388551330361909208026984560987562417902706948432244862685514671565461492093919143919053551764073888717298482503157050204894947667799790997054370075711167571965392377305545541267881448530485576327316545638850251558441677380956506003653825945417077734125101083185007607216336547648167753020070017812771976572578406885418591366578733402222087362234692717006780045341620081209269449582022533735592055566286320096314591698173753152376990194100950351636437257497342576761831086050566111334371369545508083355108245217077132574431993497828777291862267149766160895241740477517658803877728617426200106240824442503373759348199715188806991850305508603866285414027259359618764176566015716202461535928531519959040481156785633417278408056149844118177357771723398548837597374537277956403125900843426092487698796522060038337247887826165659144266179262555277352543516648237934508331165708835923620660416834536710120934150047437066458988839919762687712176752052071615733567992298735745271607552560634125776368559949323556847665053343983364344017536924019924953363739739238069588133531881971738198790038084585400467150522565657190331026415972869044363318532494272747528309884251085020135129487797283129134955563999678153473087452605987510003370664648106970436756398307572445339691113938555442503402392503327111216467177628706511223433445131106207814930890916948474354110085947658137224037282876038002659784413833389966577536923219054194487586466488333563192207882534286607689755823052213253295038655602260206245019195932581511924053740148306658381660007502088103859719007455989504719959199688624022370098422312719045186444409865275023964554005668838538717065898768804003314276202161660046224028387532287371932183495683870392161759037365870378153471816829742022679213303671025500984591417576415013224976427526131432372238480370427435898205721181497819521695199569245756604238555594095768532296356811714129923010565336886311497867725649796516449182969830568986524683593305067206675889416226568700667467776904271441407407083899922843790353433401508892003241926650362323244669618755782356765949289703039892460971792847279671179635232810965109318634296714118625363578420145586200055264801192874045013944656337876533765793547101280011474219921365866824528528111508213623110223008357783758967490875855732121363449132697912085514570012679352448945673722054455699512285589177061739666595473419768324183929949779893518655661392395637620592554704073179110460079159489342015792115216682284979586830850308247162884845980843861904163768272526909336856855856289209496882871182382284253742220731564764142023883556534059957155098647910496274784647695982079256752752523817212731874461106751727367876922278113521946129553046544568866376613932015496403242677024113702557176966331314147987485587776500618859290011046256117564989663776508123836676848588740990604702514216539905089001224773729368797709008358854031734507314524778875715513689587166568204617292275500312562976359519099804433049284961948713352455291776329482555158528938714379794688992690982202241043608723690545824480760583146506598357051176798758398564322445659653883978109205195875342764775063451351516010462551498221171047952761615343110557963749140776915471353463793820041269080442364863786971977186045627612096907504533679778321149578445188327161016733537091551017261337211531718222584449797521370101138578637571451689356137993254141802348343764463090775371178936271395223758888053546215132871623645973263264907347831592214256522981332110839886681761244811429324667019349279362128113903770615097982189397786635282145306802636601957917864778592406373166404609594748780537183516636479348988987666237696848198444217677224553970128049583725021072927492939387973131406678287295060333215837051954555134559580766793841501015675975686252958121580240638304697765193789280889766309542660801742660015320726344274906735992742310303838750868035067715434816196011945289149779393629275877424026825087250867861042268464943204196583523126269010702154990296033292996301232633600451263041352326273880414261821194625589614621481435039460751686331526957987534688635444691745604868319767389445138829945557036685088140163712621878733925171719912903486247330030616110809517199128037875109656750515309543057816543612001057286232450989223261856167249904987263039871449899563722655849103318538528706932602214398792173480350260607423978357260262841204977689872606697216056186781177627110889378290482470837393327104739460689567266917947409066602057197685014597101862610053422678916740679281215392491794999736869194770543658492213600850826113772343257357748999974966646862817598168052132643323185326257913281797213986194315362492433782331970417923124428482401556647061001793796974614644146374302601552245425068094631293991374275048732866727982586867299443198602209367557048509628330586863924718085383401992271493546037920028110596922731474839317413158279281449660236514881785194857495553825296628928544731043051290037497795847010535612138963585979783563843508376293675486928928620240368560432703016464839699004614336963479730324643973070734682986410289833307847570341882410706035620203149358608059970451408371049339065903226775713383766446520046210773609514222234394009719536777497157521264473808103260290010601755376375128944487831496506015396649209812816691641154116603864162820868512153715153214857156214292641135932342944522061494326052424156385081488253318758287739308308804010244424563423000790436165703277576831077810348748196445416327841211340995222191183834928282446066124036343610419956841667820980995179848021972753544306012334145636345469242788630672534490435699019768229002915027854101953593077640850146595969678938040834130047173843319182696449824562625610966705547581485782742750019193569754957111384142422693098714406272048246690275881379348239911857637969395374639587394396487623780931201349507658703786059593409165316212857681214825804785454406246035103263544494708727689752143458592404626448840760903528766200661741406809885215190209363767226260020161569271514925279292394349516543698663713086930026764095282703301392011194910805801452168381447987191121101651038966639347644294217488530209627588356978458187712555634707328991076917472622496878857472945637780340822160873078379287453928647070833887097388343486242547268549170306104350397121188838883717630414838782139132715420672312090918592868266707905402847838283817741447030470208505487272794536539566016673307771609635441515829175785562910240044638709109708193681693498988612047942631648222702046703171197038018036995918515553202965800967151766641697119292810017264179310686249098174092167807485371050138732721386791335860998406326756264358734331459575843754458348743020246473182893191509531399304476755251362475007699917170769227569865440203971157295216524415243949578961214876911357489778045089471116757087942277589057192612834127539561429795036589370783075806514107777561799367094269009682519329846273724448226075063312376040420606226579946052871499533921839464313010431240308257310813796953297350045498149566912465440617157880219355317620442034091876473974808484269473458788157833944224841062653579407652982580157689712134774576649563414020536102013245160637027241229173708283482479962336172428178042863333628995072144881068134784700334909357851050055791579835819993369938919078855937748793733232958664282100941504401258466606480072304285879473433617844715837557777038860559075036286305241310189045089808273201875605975322005844531062715195151797915627527227043767426412955711690826312326213904859399816132522747866007053965338984171057025681929593018510365322348434549598391963963978694377834965846629747606802490458017300882193813476396868416807698014923192586339775664836658766341449684313675755085276361159748098060977872772548646110742819566443882553894931264585974451896568692713576345320909432329191978867732938460202578969805841117626179966691105227138049315719499674423610607909770844521160791730958013322940770157327942176561174570862409572226257756216973422007609062850978943389826657090737420761844003414883587867935941484469140233748571396535867719164856880187779313152688815798730851047366264786343110906690456958087359936984203292930473105135207914464795177332775083676753956676839616061970889225534382886380619501232395584709386211550324534716284280089565440502618212533568495474892176150960016427452889728008583009585851256754857409382824360839223059868177009284867087089233759573334609572824591006069547367637589907697151935364495153182711319305947038376957156335853646286719763212102734199006281137318510484082239543004279521820891870732618767379751936436517174301912452195515858500009346844946333624182436144932047775745597477555378697297134092758438472268259686440290961557507488828129226047905255290811586498455259865263108658908108333429828462548753847035395222688173374493973009500545365615950159792007238709765504153270035862269469905727293042835902296243908885108051130524544039295860312457874294960461704297433465088677880201834092008850508622553794435228220860393936015979872464486218369432094655014836167282864744529215023900350465025474205095208758331776442854033301324982044377525976301022559985254052064262014797526491538763352572261246322299425401564999072867591799210264837679564818210511981942484419347367550222573837425446264540435003932480789454843882402383118810519830206818112699408969214714890771002437785406859179848810611834587939157897895249692908610781397859074332968181062455107642173112411344549180617143863911787592142599221103830711534341946220753039091246803301590131711585744596259330507047146992128774225750352491247300516809574619340803690098665306427682050899387463066124105414727706527450174926198530936668420097640927264401805120954981682938808937497122584641013675775017614124475130061007819304334146150886394972752217829953090526808006416982226848990916372009352910786707508968220210057679139011958993547936147966490118973633913913313205426499116198180483289628289753922647917821422365197105987408479207378688202883242466848635521204047614912982323229562082971555082608683477031105441077568628021129950041065411357189639346904634901122309263060604042182459498319052990486730744557524997951142718195171955152705835743378103291659341873652263146220674706345842845399651075971947301094972440179034940858777305492854046376112477130066203606181027884362361905686143196371891218566867461723013385075724240221863237231884677638870871514824806589988743869018969188105608326353236325097305927688067015517447979578711864734294486782222327283145659403561910550214577101267118198359195842334626230015403354661004086838478651678746355548071322593010339689728010876004910813171044601248764966384996478816369073199410144642265705203336660454259587955735645758255989913676707596261438020709999021359743576311173178998246598954774727539908930916660076602289354987368069038577932318511124956639002415092781664589295148854065404134914328720165794986897904105228701818926750816980704736356505672608943381197062915816808570686772748517380550919166098979295284041105710359696589689392164011268666912435297697919770216999111917919330915629756075230278179532217657570757805303971553337690980388190758788053402995701759866362356685288568711509682294899423496177918051252176912980769024893098281498162078482723325907549812527479877629758856714150281873264822084592300202778975962066950289880903751469173922414516117373236200592007187904342522395961970093867373581684649255672874462143340123627592027406189067543553090046199181560387938495761334407892221131213360519009775848200591088345069898598900710313543335455985939449539371563738514871995547288709899149717099865557453853836551069022044327356186744969440165285395704884051240254579412034741082475211430180816864505545472865146750167338182485420122101067318391174219106191578149132451894984737554210074640981588148080441529285706966675981910332391394161327461225409630476607799272119063504015283381429860857115375951091902563852339670989019267330297376511293073930408685748144656547127559175287170625602759915606280336694799717492851254483362141732883428500742119480326308474629145253893994277300307292712023255999339377235791621398140017455345157743797480475322110474566604833908669116743717475516498246883918535792850567571648068128200502461922501710472380562791777837266274792976754992434515978036391744608355042366955632376802650451136477327897562884811940760408505567755991943371446602338768076639174677836959554402251435124179369485215755624623152708416544768840759556689327523153588773638905594837698239032837244939940462121537265072717682770519930261263405131011794567726862378396607960453607591241209531721152595832420153806805250232955589881435332100180103925283825522606049915298029921979730474601014363197517581404675923699267951297022734607258891098126627094340273549635776498338235346021638452173530259278145491893499432523197459482054571609811152118358604382822750828699680773295881798166798816122206210473150914650077749709268178173219543328141893516656996726225532614616155825535782109732372144964145480642933488349263623237066585170692721227734919668736486025620823071055594017028797753511001501377534421345095228061797401352597912504442374403414993911378695436717594279880109916044242737983961425357048885938793109457212210896976809962934383898946533879938039256618158927261191949463600570161259681100591611258952170802495102853387577387391736206659991983945787190558172543898319811563549208819017240260906367745022542257215862969858492618265798054044542648065647685507542781690635778537330490341010020654351867056444600725742134400515488322443212751616042045768161748978550753431521309002164921763708234250842664011858870617982739646039000999917005035984844419409722663445544972694315262674979686326591740585922201929913899021636081152865999127990330832979041019675382703602356812949575718885484894548158996585291438561018688318282911420215824256564181053366052274323637660487150746439067098331099699133590016813975078431973610058954801889885392179344211757813015033142709721072890609147458369856591655871557178376678251514002934802779132788176763692001078077462056619397346276643471889051860874673226026310507861595605302904019926611844062947913645387522710237174997978814236598299718228984672615519017800630305843092097332550049400749516444981963667922916742978495469168830542223043464213428675244222559641372465360223325390302373504799079182935783515823486160293041019152665254669244337251553484057476118623338697791688187418040456430685009237857679984252841803900703795219121105287144907740448447305583823126614546808675809266107652737139662505986058842096766123241311026389531044337797464061217352716694018695152095606004213552628736647005411465202229724881492060145209519524456770399537044535503653485278552428092818034649853737871747014352652298058296060927306933675655631006324873175639573317249612108013023375742486479611188230160646021485741857045057602062508705510448331091023977187691725324736549678171827025854350857367142221853651998749544081164385242434699010462148364878544087396317238699172718962961318810331380285352302555336324097432529001565243225736281451441244383626777366683707430940881228999636894964033609601404567411743997422481938680029682705752264460459386053511483734147614889206246189047467069789090057143083997368074249551489836877602067430976025302385160248393155036460992273763059303744137709617381881876567401272618836048343806155481844272351542582118994509016606721029528390109438423157798344064042870350640009811005401320711080959130779602920317634586270271971610758270635470047089862499178536299073124841734343925820225780366262856563681630197696865029545713691461902530239990617644082120258787033928985982321512528065922962250274449113784758074620765749858426735195398669264539438259824075869878634985312874271222289591065300333486285099943609000463597587330888815728549818628905514805605297650643656359790017306505433032521604999561455462921956739894294221776680482732924998137956301150098361091929782046497943628813994000527459715289509030100054171269086260155394417155221992825311474474981873477717912325792856412761423320184582332408738168401676701575055487031012678065977845914128728416998384970709569084567940938240591387442865660758671387961434286169542262748114431185088209621286156937703836971883820023063700713498532968527750054013461746606851863361900918302321160299987280019033678109413672064774223196340721090982647620151299682387635218864611643767359438930772411750695257343179960355133321618900538874997843467438416958807194642042097007347887647096113099686010434015934445935235869172887032789819230440908198699191401880347696667340632614407871650893223740342316729014874671565184161968444189201284380100261111893625781004540879938157021522255220097560232016110258318189273626253984112500771155957412633601726463838408338391081743264107181981000983241338014294509959661491899433665442414798610580433644469452579252297031560727387090773122804920793620595268688387367338260181022153996571200994288560820984131955384932961253054614206700057463297002973036345297243504134660518513701881996961580574846342556909738529757734083752457848077004116251536683670523148712162479419505685270335655036255811845516656251871898413738185082110376938963029453308271969146723933445544216678398808588796325857038619364113533668691823371745503620570385452761404154920548093410520825116469923732960840574633323953299604756439187838495643722882692418256684935711312036970744285798944146626982940440243259206320572796355344792051876443036101761681332994644787692841270547546815497241521589993879677697811344954642387919302619269069114422411720727505990735423451330236685145375692843166401712641598949681625833621178075801577044240340071039138183605355261034345650381555904925216199608790225487990994233691341995561918274311115484933907100130613624901334402947425324732595908672403212756278334909541553031037716359151319952120653042856605389565451960199378687488456466285550453440386486449442316436075465412730419250581233139666068439366350312151419668736085450898224960861536152135185867422179033657408130237353463407097386978621181028877530741344228160851611782763049954423922331086748980058886944241598901722090486189482891116186122984744762602126891286947788889954518037578591847578658179673263761151078170519556196548101019542192422972178827452141236839298899921219950966497915159963931990383064388257226032583988175352979753133822329054471424193123102189976107095163514615701988428768276143620002933888436709372618900225400066092744402902612288263222594251081272178085563674870351150405363598042671542627249119373000672370544791115233580684203719978420661156756575264133241754701291938096108082521095505952594169906901755205108025544351605683390495611020686685027310838914181397731589055033046765910807089076438722439692069253237185857137407988146813617107621592397623590111842319147940342320189183484327386225980183544366740558835878843434406745632492106509708038785993044801736734464967455835506186045488722914290849033980967328636798291623395457706051012461749608514471654615461907885805155958164090759310443514151280902721897394416296202952461167606841258264257193651118507940376209277559960160750430862638544003063119896846885686308249555660945255836944927285733125942873321540463742126298892446053447409375701781381164225129047052323576876115966715458698064807588495517812849777315521945432890630824963283038201178770224803107159407149929479646287778403261223363503521843096238878068016076275033032400057846129001927229528074731121536709910369635680345865582468045415180096308379878570200530599943053379024399721940135599199753770367911763892068510928853534535660536223793027534667971689088093696435534992754009484976866938576457247825720595436885913356878436322958885914827432834461777384041935303678052916192057300765644653984747702110276470448348261304824696716211523768334834584325017618158170074851708925030334616685163105146998036994032265082649351684103595458267507886500401023249093858146363030403390431799321984288913827900366638405342965892869411805422193442476607778427804860619390023267275360916943876367889939792717059629050552944288757089730699565961589308369298903721498598873130208198052252937274686985698597344905910404533118067231268074572792895756301224635836344553639050447585237554237187615473926385081725971346708158470906588378076076954234169975784264822846836142903357035020444827524140694542365117411608923879982138250984626146225973410078851847835469593563127239879771322422252803011466255273916077108566739116290181085988702023805629054379505977888333458504416094015610856963245373411978353194970957817838146997998546212957235706053417944238735984187577496522741666601382622235945860507728374126431540848140543257728770244553667498174585506257885908210145304103830793512012313398238220240402459010908232491281119259790960787362365853740245859143256938521334310573770657242082211585528865671223986262442803461661294045923415017933798657008692250925474656641407814925399627174327947173153351488674309306483952240324476504769363142588211809039201745398991620482072294764065698123610575879239990919018177845097477020110188152252103091781478416286814718410798560787558236030521274235114408079439492361843865383162611243353126248170586849267090366392700903847700590940711759919940268376417849924913303869210713650881499486600369399291375912673510198082032566045905047271326744222624729754819928188460937054909005165030475628049504608726327800139376062699838534615924810999663003870604378155518555809057082604004468642479634386279148978417226841985092138233192019567945601194862143024367423491231656852567185766693035222445978504956414644127170269890778951060560157319001159153366444945688912640167785896516187416026252108436232737684237870537166514396679127550270604592869622215804521639294660385732410599781310015225345997628310835183980464580563822726734367041635004304793627613291937708418892365372462926012236548997706033819654636153944102987865814120045353946081526322864440433875320336989593433144809809287702640335319111203560607137123721673008213168452407190890800839312430109058275366205250714407892400046592957567540982767924057991193144834596517056876810135614786510587168242701730027060674277547544360855967608029267358243870478095638293161230580613772722648590595883965498285372353997483225164681573333093528266518146082325131676879036057929793769564241938695812752681974985635735791432701882036328410601537685168629443895380935212921501316498984309123321630690896560539245414075818582575180680726125397744071852256811803697550537811370773387337254162155783077998136139260045023386230002151008937374440511356016500840233195593712624219950456755602709741548431478809472161063170533058463573348906519199385797581054784171265703298875365928734468959889440483105487611369342780128156154506685642168619083538667242888574463390992326484854028044806416749277777849148764094470905849921200556476345637967246843060334087897834548311337500937551924515426952910820739909096569074842467465608124738352469555852715638237837873809229105999301383972349140978518806314128545656657939971364546512347889814434677746499243839745549434085496821905785278963818138788227119084483682178560650748255496269336375767160500845041211965416447377864741704285085968173737266456286908636782844882796843252204640783476567993922910740340600104446165595352012130489753031674375325514726659179226807789348871526142047478527815890295833770781423805339726522282109906204407162586791301051040754177580204650906370435892416223810863510587141797106376921507923706585072705330049411670249556770485585344642183034999634212718033461765721855167733204373924151870245392790533847136034096921915297875369116167458793156701916598963504716256970398298744942846624043058237078435583645188721516875220895106919650335582848850755877436455291440466679541806420121936012578497709616052436055873973110660887953814704294276219136844641026828633233491316942380677424565587243892817132573715039225384756492202385260634057495498817409376729174618996968849447438651524275719897830014298261710637311990498692791332034645450655536681356804188030998231562843856749783821063023604370825544478727310760904551762920340740054148953214330356436489263966982869543250740446778739602305595028057577044913201487116514013284845059277883420600293486999398653002478363962003931282816554196431802299133964339082686517334134710295459862422981506341151656444023354062306961904085317346156234440780181033320752836539637765261812566820748618332072579455425916876140950445452093640519251980647111131336294915130057887952563463890526477075975505630759746682078699506933658864698844709636934628626432631603188453045840677621893487627957773955511659584758055591582395280627894515430821977708273587855190336548672574727324152789639268011569756601811312195510818027425182688701830180389618109921180153744002327350143685877514046791070145460488573142464014719775224666462607105289341672175785785636779644582837116532596048648271508804280594404787731236383174239526906834594065731387806683810312339023316603054832991693812305626822290368934010025515540824505014373550866004904055800819660402669900188425933575475612489461754006793226037128802038272137109163234987638727295971506986200947090147147290644536294569783641257229454059969961569491501111813000167352111782439735715911699933590110221549287088775621807813448580308090803784905680846251140651584164161184898802157153359622411872964143042583752654688245178871627111852855675185788757710687400641065699819078737785124843388331676884814126413142780235897131300087000675767794042295138975554820687805238933818065774406875754083626164591563831567023964188397025633678976831894705897441619015556852451103991414009509927129208134883930886827158614697856325749085951277057143708132412972416443979828107155858099653440555274506127196970022152852750026260994663235070196068838195951901226193050700694388679288512181466897164982880392810734594594425145277010747540254916659334123724959815980937243187631969395057615965132417466883973065710392645837240554209361932638188562342046798326174009784516587691906299693443355514657971495391544728561880426793101845300569098425794416290843384103428433532725964973455720173366663835480451370644775464060991040231071869446357671164669180601755239422468740024479499174422540969130039548177043432460898151589310558487603367914589312724342842108089055031800524862982788405484828313503010113585973009842828842997863357496580850860576164764862858808695787386760084901091315664532246992972551334457471493248260379039413448940273485594457425872470601169491336610499425951581859141224122118609224390871842226264598294595713238106953126247311569792267591408045916275165887647769095561800526400361629892974786278869935746393289302784772588779140937104208130677501595295149843409040045516916436091192498850805604725778735440045121225430496531246996116361338257485789744105164418849630515678538830100507097929289869842380138863012962031595870368449430322352491139939365393163858627014609668918828116332399102195797196969204636832594237014948003947673387285362996498893568324450873540537743535056534603854821711282110267394023251844475916954867263041823882795389764029081874637667579629571754465336447217119587583298900358344826738992210837789139324675349016026924418292221582676901997883241267535795172502456980077503864620969260120519151472935172454340159787782578948633095232403147098585944816459715895627133616577462176777316463008663487043363428522691330556214498260015460938111888903483407164835238911042307958495011689203436440079726231947645170871740607808939726247817029707528046791796933672001691962619084875385281663738558971614563515171808152347823688835776551044010587300283608210304593247647772813318945215708243356449665190961352080375994732457200118921484350736042151554335353511505936967574133121751406785606005018892183655729980057364314447349331423462170710354049148276581887984956710446898431493336486442082501219693670051669362012022244584070902690289188539815076991604896249084585412067748770020572606600360003832702446882175756575421243768003392041810525563044846052561078538148051806566323889286743358367912917370568982001658853509419994080634339731737391887572723857150206726452389973327405188617014289408521826221588525496390096927700530194916615694712704975386005257277282332044101308269299946316308380373460537870091206603957328263753446671166333815126793409997185985124972795687935717332809889885294553442439851672033776503291554274443264887721833908801545606871464178350272841555445717183503635712835847454111574555428957040813993606346829303983655757980411390280488285528087048760495723343296178018408911091607486062757193738604195400505798586462060402711393542063473135601897503674446238359084157510675716001029712794411831185773271596144844331631983914306355847293130204369394906591294520017820555753204606191958963286060879402715289803376680564748631163779961585544354732605706829422078651876340011686571921509101147262919274733200534397714725016253909335281085498101213048477307375064227340237742738404136781388025861879347027829132928424791829272336845424984048519425023124383448680541743849065766147523837599755837436827188648587604690823004022272305530541355960423066622373404408570028343499328893600522214204868623144814096262598162427254917103600131084413444878272787958879586554627615636950208307572376617162878077813845076335610226315400300149703247844980376207276134019395030611891268642213818207551534645325431944404939484911584337895170629409460158195267486146123817552410310988383689575998696620777190344371541325321997610755674766272585613341864762790172346868596609005178380177197643540542477995827599858740813707404862160150196584296196865300235108316434722715225684926675833958816075742314465697600267290450802141478044266999798181754460314505939286458690822484397176800839036601814822536718951306251367277556047336732610849574799475352625319018299248326414375880464950033718728433098790499803680893265155651458193963227733678302044298227887454288069494298071624407103742606029726511822396803856771495738107959533072467418335245655763594612710039807932253413639664489159692525504663444014337135821644881246409904687287163074679059997537228125978070189536836543648574888644831035675845563456444256543964585547020679321324974526847822710054126868557961907016693914562204696752255468413654384841268914265584105845135044638348889740566635269100296237601047179521529273264080935500504241399172682317437518371206698252191164679109390317058985937891279210843135287349978923746243942956587236492415673014226258839242367302332332756085209960393165689070391298929486883072824650983025008451103480848813462473893235424180022676959276002111060975015754828522239530447902134449505542204271152266378675745642741095246354424117081949591174233756386117264813839431334973368993945525192858448512788518627713778605542911015146750683907356611234508054578084624714320305590177341079301003439284598636287077900137744074170197369832791362678850047916448152010409660825591763840224509288007108192613977983238577747867997916929628678484312086981992708344321702189165553145725450483938962182308739647047916262550382686005430663054055348229825466904033844960345821361870865497056140175791636662586196624553270860317688835588252318167759745547558061988509192208110982446214526926037094891218640093459290193317557152507105158206073349745662213176430687292972174814710277402015125855006072072827657752807638040025218633371894350219814524819056556485173531211595503626184379346080052739416431151701013819395884190318203681373846017005322447710808977433909401438013989700228454097468223262761822220000923587399807261978256800947277068322845924884982934531396402939878411968907344588411382353608130433802770353956057988123995165356338163629008133976720829250879569462785170071147086142288384865805215593930042281142716429409244206010531251545152845688482680385023770514390120249964130853888360546892416262838329124215503402995876838983718271233097180345122673497705484103613990394113665945201912310315279381292586441039103989936532865831657468034996514131499845770963950002987876173624186695006791243263105627032147555717600603384534055337838817560941475709611340136645498272773613354278454612251066683815383469414691917815553367145480458707855333024642595096969149913979801856026485556744561854762057979999525740659452823975840558941991229599804031501046377577122795101216805224759775291566915962943246113082957559045771262545476622900836264154550337918516762181438429594080158802743644758386169938483215729312928421578638309216759643654267239420575094950807684245791472285679685692775892231956647090070052910672328409059881490452470276241219306230441324449373327049935981028345657803341186138419014009323983051579450186450465236765577232893720759049463959695398115738356303988996304279133296397873937918454993649074242840305122969651781840181008202726251255269598338200201732051626378655203168283562695005237842315442453660252635816785569199733994053377611601936542157147928731741761984518796524537570290329910462203555855980512475764232198841731828281674744821677575199272966037384877239864969879821282281216306316645460088073497989088745702395632343584703626010687091038348669366696167639706807151020724274881841995504156963095650191658185732910504727058708890699778111331140953950996238747055691651168475711091623008132316710459448999791416324672791918879480341368085320907258619205084862831383141755529295553359069728282392923456600085422496232243993061144896990156087591195532431941673621783415534968864918085335439377691771399885070440351782227214098577120483079833078600698789633078109115743710576612129247562689471478971583027475694823115198057149716305975770121796850513128610473408656178067011375118510117969270769436026082511412473317656872143685277906651400080108776549606897106726106967175996084903691835076644173376659355214046083326423358591910239274183634710260410882068031350094763594212742454403336523913372221393700274914231372395068444073592462894832154876033015869210144927808270706189613779082330587606066014420229999040579785455831431784105413607063116378461011013372029175822827268642955904865189166841838664652494511493849085978259770122551290364477243951591483173084951800106309650343509243630679055027252127077097600827700952087529190110006990441313539008514641163793769265414575205907556226903898936477498281989187329406118783320836925104094559546782652175911615886119765838200005727188158614917160453725457394345265893867757701711237565986852695983178760828654565716204778832471205400775265882961679924499263777024651043353187335912650444663698352687445100244941790884161108894024122383427678752507550399498726797839014912326379651668542278139770138196032824575262484861853591126638605613073994015174454697576497569304185424876828609536343463541936657585075663716977753289795834390912299860055429595692350309006552596106689188771154393960991964084021774961684836725505634469420888430015921389997858562004268262580275086103107617087273351169844582758962838987848568536866274928480728215796520114854666787860781401779618363512027862852045798514760342608493993822987536400545682148741868633234198130429549917416099743271744548199466518283262878362304295802908217642511718774160780299064430577468415408496593517485652051759252477967737225877442715883909071511492752225700519516477621338834220995156823016458971267205590413855452176477685492062701573298782399345736587949597990847657051207023521317854186813702775881062566426314043685313155925442496007240616522028384434220232729907459067492454996316302676030017696544306304289537515635262269110399067115015900933601949325766344030018675066039165804117002370244609118128531220299897368842314840612038597119062748801523078986225354032657862343407428395876926893959759729734723153162246236849971787094096776859532796825959208006036988208425619137684422422231309154677467588272833957610832848352287272596425874795625902947295639279575385827706416874042815517983823206436790114288371262305728617648519163484014929254993635098412914618245093814607007379330185176621159604129333547392167652500824237395056106993326103956200895372444492615751744189578100962691038025550546037844951242792282191826493618935884515901026709237027589920224136377733375099216629832453114501071698210895924854448183543908330026719788199319524798816495566653091883319488345761537805676272851266974874431162592271134397686410317366356382198968432036329365558902025450289223503591026822464050572236380622701350054429420598709328769459925532175938746011470086558931749498362404921507647746725195211616896923105758847113524329618183881161464907898283091444573244578184097527852758161386836712160674583009146702500071328217859367993744141906753185919726148864893083193181292896071545500891246000945866379458555511230937626530643193399280901255961080156441044393640162169967695430650093348820038676994289984373045138325125169137820544511579862456660067292867705615380264670842829031861437506731285970537292804777424349382445702844955239728702181144924852025466268119718209523576566790131052350557492435729091223472422859164927174883515098241930595790363709530065970889791703108533750057351251199911159195577264294475529889260735508067894419670926865794789351634341433877261727556440231258065882678000948387854943513252782007035914545847935753402817916777821836066445860908202959172578947128597886747164078004638266272123437664785514133303588703323708681682464960971649078934679762026819866966511815787555536056573057927743055831450600979237329372321938847065165960574103701756442912105842364216735372517101687750727967633395583261247754870643131885475603324781116462486219741957073944079619749192741972683688436602833843687505294803660621477004817343642645739388127010280173106210702470444616765112048914001608306921299518001223052784158874451736073432892922015318342626295730073914814190461102895525480982437511787723494148696247114141395681456377491580768588854388799954316688495478455787618087101864675473462499849248035613687830603455689908640764373487912950666926498462048216154213464939116587750911262108172168234994812639575916968966524273487410921529998951073966418527696786737743605583948101695970638075146221400929579488333079911500421310962746011621821057537334102628004737852931905145691320043757298754839263839050213514767884032955409613534422099244209730608211143898885658409466013379245667498248937491785014178613056116726034451382517538516029709992224226159899784392917106110093246521397583724526814694561530447730186601703680100354425422777985344032844956476929367536330947769827526276805617177086477114025435733732113747231507771446442388989484417278682268981265241767299508512462298725092791724699920951138814704193109436752560334696910444727781638213079885352757400389434286263726571436300461985466334492953843406527945441686902657659864182871994452942716428887606538017419138885173276738872948781263847053441736347086412342563701942881008967642535891087301196147629129157233579307815407237373297278504887155979989263010616678105636001580867633474935741100660421643885400749353289261443365874279714614680575527904072627281748589087299656841781934767146167866717105761619983450403624133710720632990418007790932024267309608112252577049308015367795365535061541439039344080257032436577718030963977389539762502507387792546451894217557092764742695948548513019385975002156399897407732099204467830405023806161296039730562553744027433940764719130918187474328017537980399387270190932369853437521610778333568595331343444647253092856853283980845121049424593556210844199603265897303588500649051458745521530463682568209257097911049937477964436019833854013629573226919493096554483340172888119282020344603848801436205732856344082913122288595615138831610475395105234980284161806122924922167992900985620870672010354828703959200712932349288903353666392599911579741275447938844619781298849299901352199163718479469505231442217610171952592304576218889424530543278529285499301969956702957382930115466399770515570546183046962860421461789942194753610062819747602572682341607477050726063629857517570606002387488595388841143416995868793594246352332473589823045922427571073264508320486303824892412187710506482888921111931744418228856135188652321801798727771404144618587645951727309524029230337078179134359457557421597874532423921598426877959290135562534413663772170379085506013825731687865909876879275265451347883473765186225455961808918884654882129056363247486769471741816478432571934427249270090665224586034241129826570469051985062565281304204862674811334512289203105656927385109500666374850167061871138619500635813612543785183951364541992297497477539833472557844333369877728904251799882830695979238276334622715422810220216049618986364171126967292043806505529596651476155772264510617803000723539192468945418266926180589646800537911517873674727017955473143177946910262866403607832214097504785938834578713036605946390441654648599142082537071073399991243331919247790860248978900753107382940103731687176054075726594784980495106832009908489009976906655841201474280824694520801594968483567639676053344138972815654069286893767776802206910150747708666160607445704842631988555394444079102053579963687143132731679286264393906870663836918841001405020954166601792604948141384345823525141353732731242617897465687797818884804588458586968597818114636637033929972299021071894938945894630547711078185076764942706200989068183139402392812727067642539967890404821424545427875747637766284569988921645899292699331550158571266654508220117074773387969498339055111891193635223139850818682056761080286150043742221618198446276941243591585508281964046014746995971680287381119567632443122864922345623921408512101522039264579443992107437770578148926527921614982424327266070020149617153178352371489416063263696637719162257761840347414691957350033835379182375542458138271411285020474422090297723552390380421363531537886262034673399180572635117944820751785561831793845111671973756132733030190720538874580464197778376552381925908953931834822926653767543874814173425282820457856235780368598866872978655098839682836961407534834374805911013267022427665006531340635940887620904151189053362786364355697419559497084471652083101129907613850777490421701543725222543627512723202421328781258322536277440904294216752083336075099917552537402345576834952387365761587814833994642635746806559980588668858238718542356790249764702199303746481555517246271675700530112834597795833699035025788086344270975020223936103557454128713304810348626056101912773324997785725484973234539363509708668476089890335011982733754079520183857475155483039527116957759899779134258281363899379924750896202657850151831982363779346839768185533975643358752434807597415704907222073050313616646526084610675557655516540509436452861967899605674691934280001012071110329167574686779590151938533308810902221046010488592632279320408659180656176256006071159392929980737464315529609068689683841416992836101642952914490479554344125885365691861845917663542216982634330845770821788649271127689160283690994258238163475575732129636610409918898870573555371787738604716764402564975388356437257271170029916509132498956471023891227689261280019815527283484411568327065033637761120214425535326081308440294657471810462750231775961427348947133290283457780664431796238282982936161374417080051265548228699010848031901523891941664123450072760975599948826862307192945890765151721726415143393333284199665388587669860613144873247679270722074512996056259132966077999951692952694073695548450809482629931059209086543648835030064232853415518193602829725290838133554039368861323901760680441930116797430199554268257142376144957598801470453594900754821673498502400554491041037095364515085800202469856321609008823207900304954335434091067489249676058295546130540019073277934023667887406097400269276985632534484481343419871235781343147647496422478151681336596134672873902656758863545459735323003467289806126521288445189257907760471326102494651728283332218432678921752770875592467257319908538868565129108990298621178278707313971137766477971058470244691141718249091906299962313486007343757429926470388454890966772857346038680246637891248989113536972005824527127955893791451668304080747856649817430097872383128427967679374972069340740754256936682877742700557168313635278233995580685388519870934179354591575428675345680433016597622012153168220216159079887819844981631991073876343700842140684028119877131695650082102221632103418681380767119829855289887715419067374537911298613930757146075103117052678398796168403913831355284479089730081851487211667541726276123194302012318382663975447347836574686866459963514929416726012163700232320979681988489677324481308215311974056338866386899708062922551708465679826773205867391926476109215529848295349124191205457803267388300438960918778357112715132710009513173754023140693056477344396137504139411918584310399664804360391895504713029815383616549003388329014292818993745935872111090626832858302407314705359191886199813425018805212119154699201512067154331445056640853037345744602809132444177683279963015249834292175562952216091268469316620646598157305444766518949653910402783021833503613843076084861554237647271108603206912788731741290867311784976256192686840180389395380114010942057472047955716666427101157928493816929929056925577890810644843580203625385206855227035910857866032062547432942640321962502721010842410665155409203516200698686765179922300526947678029427502691669742314087387542007598105945912276674991098220820029751656211285287024194707994481606467248766770744199519393718346394287697461792289614421751914878701000838593480003973205209244778618294027847630444792296844334137270860628608038531727337718445104548046144566026979687416378177745218529846503923166859773286470621925217596423666514952858132348390924867676977332497438119726057364771661975139544308634569485572425774207636101930186923999650224946950448162428845015958561673317183099874869472039276315230131690642874185430212801506186764765239328104590028525709616745897233850180706289027717231727876427621204690140297816191264812735519987153581687047082744632422571190210873885091838154328453089451986823504399436243150105669441100672387950134548340366725113062256002939975390045143530286311492462751838229118155611595829428905957092849458354436574359723759715978562788404807727665175990497332773020134428132816983824005027646446785244082914439243430221554953228158525767563543509869516648079557617787277153445834326536135324795204917834943106144789473759010244331023281886047778293551748319962669143022970483217658240461230490800692353117818917767587172710248657350238010038542236745568109979698697298602364256026845943492502905594856376334759788521959651853257290017668147888713874626341717737621263257329386158164427090585879798922033021552025747716661108135040564475845437467634441655173999574305499325363824041384506053316609531408257621198131936089587776523348224101004603361261396006912799509958514386967455625617721047702909308243883660161597569846299910386126390987459172681034312097303464353594475798695952037420133249963016099160053953826531905988151158429181275105116365288201271629809903663581574192205524126652058796895395722197974931524442435643849899026433025769271854193763998813285699488494383330941547842690961837201885537488298477650725622005785489102264008120723293182173677281298362916293549806298692493574081823723802902099479382565855214778848328400544389227946753715199191221392617891813196525915327160194178643565341732440841035122980100083501791033005380904501750995692737433199076053544682737698084409450326143915496887969524757233460240836821789299250768507353817937774725591977070287387703503399090299477193247793476283278887721152898189013961664821738886404125209743283701609277440308115246480448403161004287623128690103846572992417797594691776086522724188571386309147223561513637850349368284167481859989814657018250897280251705879058117608241672571822006818746631980087980847150034829153278633480305360746035030464881394810218835695869446511060711998267855602454240595237806698536331222509944525770780583390223428729281208315554347348595597307266586401551903180734745804357090351774745245004219059030182060591995010090708363560251051513699150267997403918356321254545319658757147082919755647310206779511035681999951883159385605848925964833871665598954669255168405085527418980186404846750234435694164197579539487786317009895118874421951327903329221792404116477413875974300922406555517338030564937962362399389371435904220801838745492358177876601651763462010200426588557781823878210433825719268810901696855363820350619163751955814906034214295466377593824511466786512525050954979163952177702755247333102575343531204268761540551737256285393410832866400911825962879543741163991991930074784506045474954240338596655690045991890396885677270763658824185271625669138440464396936498952455534745318799994076821384678018038675265252603489811854396592162433253578535886172734991152074030578297724110174256630377040851036662609712256812787826664716443203639601379346866586403574907655104222156905739678737791371300554349277488816298858220961401244124614963123379726041759810513546935723332829102875454609523895934416545224733255804545164006201266948237008794189115765152909601770747083777547793116625882480207348923966928934297075804646631964910301248630158153890237127610950929678199585689326797142086918565364039170118956037507059269920883584450289484662636251989567067625656206341979893178659136927741365106288551851060572064366020202304214968734244241879350704767649764980300027333875621762961288825265988147016515344867486910443751677585338353810505486917955894913216750960202272060473059637921434812662369159440225991624729771087827464125546950596909068926541146199281507622690868398740779731122034177631407634817688589135212956644311350438746714042559144587782376213488747773836748255457566797152416981086859961706132358107470424436071330809858087362534196113279549484328491796604906700277491648198881261747982877348662109646191374831402220379347449157639926887818311964580872109776725785044574188791673953654679931433169113068968403627629753033725343856610575204741286288647101634894347007285867967055136503422430710033317695667426440974191319411370278918792105265371452573984811981342596144773964388519606189670475333158677174215303967800724983049089235035297124570495527190130793219810276757012422747184074319891819905293708923656327521586704728661751920657283168615425219667632533819503399188846907891663734277866518505786964374756746345062682237852603330778079862626624488497493467652315028573043686751441918171910204067881848486426460970761085837800472584474548240633824853140682213052251244779953954833684823019342636140674228746597688745036163981759423800581073678649499576793771325139437848236637648291774247091239210047311132446834347716527387257173348510145910666865941661049942896801426600252154155617327594021222010762735191788364154699503156448365007493102026939174330110561601862904242092495800771884157497893836367155665206840136632925480561956608355798480025514283914409506030464327528224633899782228197561689652680357358497381379879263833181573360333532578503383334745390482508856531383298046276349137292215786921758192268604581169158369914243758857221060383829499087803689928770796968005541614289747586180301593336028695665091368076713727100739376929033188973128270502538588014971680876289267498172517218564579719937289092708025868960749618249761826238794355640807985844722844549353168854014966198158600235960197794634271670547032362785051540638652914189840039435652424189754116582849782485772504572221692709320145319268835483336307711753596829244395607611565950663383113761813296984397679098325160150401243496687818808795903278832828363703499548220327509694827419279225322077879523249396889700182441588263210195191622172865017319542651920187344817782909452709081625339485656818282351383341232879250211112581452312563496161115115260666963548392809028273375532062382218345858221076712591168481886767930039259478945724612073025849350780840356898073170491791952983122017155873792114278957994113058641908626587222998844172983524584793646707589317275156642442595432296102915565404079774091843745203167390219697674031645268317884391037339583832749086386720077779219597445357814196366726611763180045449910352489712219328630174522650479604252702554546920717686259545735746939903530431044552541270897669143781310744179061319876449650864008870088376285305589861118506301760515553284653834405715043820164193338603615725190718238108716808710527313621522718749412861248159550483995642256008724213043262489559277190656570234314171510218565957300481712901251576014391457534124330706066462991629491944558056303335664392227094286796427266499900457356670456634684777843680497921160873685119521261067223635722944983297130076015977431229792777759560136653458740037681417582378942894919930447817726113416099238694112181466001268237194309680664553243010939257302791096224510026638165218214768052663595200827107570520642106316020778310707658270908188747969615863827318834380186062339324771551580925370473112593477324085606231130679451178711430490239410152936285270065716892459580153704663261437478660073017111121279851772657901053642122735057499727520000831065634776831358089450235928102860414601552057405429749208291425613369690759149189528718910430672399449505154096807865047378196533277145196319889363751284653532152265977794788112742409839414190002870797814048384466099864706406067981163114807860980396143121452711940963522401839987796358249093557525227728233672547405783633702519548204209304712292700999365102049071937692967310341650740514534324404427272191774894663060152063404080636163607014197396813851985387880428563520645069600891397154405934609994269867051015202035361879280489273422523388913203593802457210823596358703347413121139693095918299898553568357970339498497575203149471167421462491781510637876919751685705406117673132446368874369852406448348741268818330808352101708649969574903820741463100196914483183297009798741986270895095107305594118745567824944083341970448767117656668943582478379841980501732238509633983737775798941881498472463015917516084183968029929554004679127149096812949244875914356310331231789013867558459322234900767251462378047886263915006383682876461250072675555147271764925710657794711926719356466870483089127002400910766157578463591804311826464411011692723601813984573404327750903753487835065854687862924586361137881222426591170489348326696818209253773295282158834422077268840315296165897868285791981615408731671533318009800467213117076070975687163391918727501390578248392167290316793826239647652807874488398051739756805680854049907823784640458401149107335249575174629331231026599291437950147701580735159967562600302277187406840675228820714985001851367270020962428749514143496946860178300586724319415206936637089668698008406128592166605213382266404738523554985137212599946244966827294612324072829279440329218410993699086441311031590822051222388032964332502613227505322872206705915535160502580695335904839256944472498626153565528763621511244913636618844290489549986952206482299836356140127167455005215100868631697425989159746034977599029611919017940234423189513280566859821732161777470027034186773227449726399794941141548847843818183976803622967678314395964253335139600203475218426837954581996796376633942574799768219748211924609951234114860456275924510401029249478649433737190492198387925393552884496652839360086318210201457585736321267368570711009040056848397774925591609537618143544650511918973549779768335063504716043680677358292664699032205550728315701877007858972332703201332293916411053724561205882236463102103625523684292338031619495734558128830989545090141027788693877101875725428797104066170203120386530623626733447248512112743911559236715425047915701107484904620769588454371603961556450837663969530105252040970834504687259924916684819965091142227688403046499378916882386915226147346544670552061349580346888862849827766544654659776990076545985012046518444334438070644315342216786584335755301411096573093114909823022511190986324433316545574884470382472238354767179833522318501424908905086069659921292597229721170417716538180643451633111513073721149710021931042505004734350794357786590561311434866003681454041653783426120004929259395618874666758650600974029502899385492704479102727287636806914620293684902290182461834065001195933474371445496528977938091289128353379727909753461327026724216230719312297597391517400318745377623067256520920276219304939130424270848184140393306886608000096692725646572961373098677147306344751840314878910930546924675577541022734544359376490904923076430563309566319008153590821685617794085008769935210674350745434364997916768846094457924847144174307038971738795892782906052557068373484585017005314241801693224836905737930115540391925669369902782335671548802814585343162080237230873421274388294246812319399672706100193069302102813690034438923583971306923509090482316575073088894821443762122534097588466125731696417376895012125923598279348364943871319351930586376036136500251145899054884916126480843576326746097878049912483837341360291694185063887844389489601512264833990166535728610013288371535565940113575182848189942682498618711821080472926090333505645609472304583538392300987155603898905712418878208191956820794943663936261436444905991654310359211953423104662539155705417455931188170540711811058473982438580224568539342381610028530872380166570530684544241567579821010422481001596506948183111495667788944346466685242278207228030729724955747364162239619152366121118529558772736118341275011464732416345813734995582332006738421455600697539638996231269388164521564782048423785159516332879073663334365829964658144115008800509898792080005620492147049041455815764302370040204207564709197545529227315468071394707701123350173351275613096748270116594296305158915622475898103041445200005653161078636040416603076332204744784819143077312124435849442611201106695384164227056362739205365427600887191184881568199258329921874101024767288934576605792899529089587583265750102692966178758946896485939986593262657225356450016394681581569109501872262357180311356934610134958628181791508608192025713653547728562461956901400768530182867181988903637301209439915944798857082769150503670247037517316190372215893315463630201591215193322747197035458214593216092176676438888653869553734055092609154149174940904383387533928364457692451187595558808410236915794757541017396788309564834581416844697391983070146876387996357383587620775268791399656976775716929634171922474943918628819000461894813821425550297602679170732991212117892806018100438750102026661954341828516518118880889636373684902397787634076629379853700281046942079357071482691909461177808321734568817244624379426538585919752693770253242602194733498078536810651985852111501463691787487998422377378883264323752867780998563767952309037400269982201487275423890493084634993419718234277620418750552507863806867563841527084454840125487607612810435886797106802258130497274377769419167045194191772488528426034266885192706410551507810414767592430935811792803223260736803995319442140451343679875818154573433209477301459250995042428963195704586775868341455579645291072071480154241003414703532463521177108892971157077036070575775210650149195783198121388086702081282326243309885478507113861921130758773259898573639883793777508320039637339889230122693969718423476230858839280862771674669085378053303186670663513206367153732676571640689147739750885769750390821846456304486919729917150269956130559889968035170416637021744437230180046175258467036822057002242751849470446918913814822079384310299998332801402226589141969742605527305735036928108331797329665104237711919781537673169942327319993794330823440825365866122313204793191212757293278168525870059423839328697378886736144781266224833272913481295224072370453530895032626591961273609854975121516820668021381781914844947905143137246715976232092687074353804333281364742364170820692808599004743000319051545026750815077128955153113948041692703606070867940095091092231626651456770488453155641818256294628874290062546721602796109407675123527803699725374486435567489301666937701857504307747652552744145406603484899678325499377113508665344443485634713046548100409877842567419137473852757900152659482444553604641090515347655884881261445372889193329067204851896277123378674872179496016187055735143205307257294201350751925252050276239614817885336946491732212176419220918029775772966509967246405674541648416969002489482037767823351391204916594941526890559267339852734431200395373571046038768833162880060192127638517542186663042810469019413786487842031788601346405735525345530290622174197626302861227606039976055587036068483548305353046778095372608959980411675451245286253565550603143689497076142424726726381502329039364990772772206012251397004045433667897709632748276157230646120983991583814935203534434879335511416198889216324202933480199046205887906384478622505284715981846303270598214014660550100256426863238838119324889326994069541712307482228567658426387623173282744269933270134093195531738355730215374403129359725649385903049278238066361379170508746649261452008216214785727549849766029797799400790933266956522267129157445845508771820934275614682587077309975268214326922114959850488336430593534817376398766077978505638373369211067677992836881570961957657688259476293815417436555050709048238325891269484032060024585058990451795316078184880680775804353700991067602608237957501267218312917994030988751539113482900206777734559136487312319218065352839076378236730755411561747551669303377162685681850462766225976077587026046586120845177862358807642624880348425093212497512615288564300710409092389921662848773458430027736824684592038217981988026182943680253056121440003005012071926735155178236906200554447875599419685170480702847235604718499328248634004264310252720061955626722915110719441494648996483856816272890821204910491841178154002277013466818323395613684629145710692917843470035429854810282122116413305185944857283523606340151131194502988868087964506484423089659686460515706210253017282919690847648548904225847885493071475433027248637642629343039977456937277308021147499405249696289047666509683404383954988547043965717560052163400752750601033360181717891571992257981246484794308610446290618611101194645926926892217682322160806908941817951329845119329325097842717289923139910365143421154170594373231208239741340618856274860447678392236235351052451593010016118990240152196456010062081194677369834989051019874058514625689397174968865801033213521685632548850949008276359105874037884149176264234152449062407970273239482016354322148175341586112133892629011172990810211479290264010363113628900120168153149392146829557238845039261624908400951298302489861437689692760686971809992828543144353905740849468597915103284102376007175879555911967268403075215436513541482228639802863113407201876656977347379613828457918476497389244537734943523586883325810971690637866507450685894302055300026794151093765814648788082578561880612642932167822967034363853206001541818285260161097451008142289780742141330303197074489634865325094081439826905941022135392794816632774626877335508601673943985839375121203153576069033745959437040720520812662079551291002582824412372511625951620442630173782138771435521267991050586895477397029339536988183193566582208852104669933286197432004187702955391438803194856000234653962294639377499038303981916292045349888247186635428073954726408286822945917598284836473240299844749291306972143411784229866835033434470625885587130676412034883738256367807345538906989493335133551777854903077009659623696300272040071244609330690246179413191703941110512745158708089084844070744372060216329160587398543904246228670456161468699131512945135761457701227695225983580820139170831981645138166636711951219083216413135658304102237346669897993649339522697552609966038673437952630269430878636365405235663192700527796277476426698895117248838360714675459327139181501737267041561583223550165042666670082398015246316812974855499374109781018644985560172593015970457282320215290393523950423004631944266781761086443969616418758071877891457923502194644257210003810827216299919074125576643569497970570624068229845278220435574229628557268077795915879754587594176150024070191013438567633262135212229228721242058531271814787867478624449530338660768573523551027765973445933814741721498866347674615826690938824588711919451096891205314429701828731427902243832639757791396191685495441995964368609412370131448076503452666851470466535198981126743528886992595803752493913898720791924429525672845592334777683076671380946574898249606488987890265256216420627207799450596791898696001322218903443927448641413887470546925027725144466317816306874665785296187616572224732645229415428354264914157291771296654791142687837918457478481190261424935961041081878064603894019983955882782290604363430338725025915324921309013955113961840018242322411490004820549127859525494452700509651803486718879030621028606215271145154694336315022168928298202118236556248393603808283881078932377079544365242538900101470086150251835619694285059118524295837242169703527501702863928269766286925724287599920358545120989938990484124626880305681089036651258360460427746429290199660569316081133054080399062167007281445919579796269974469901106116022364652097641947325327758291344544942005428651383232831298205266196409619715428464321706664529011187095213740563200950441499118616447407459468142322143854181444315621149436603707265374376819388899119340266822786186345856902597186113058266974748553494403090126617350205312524761610376848411335361524577552706845180305918985324154387976009356694010490964729004813546063306909697343041558956596972114481272737788779221828095828763133510377872756371308887890837149151894986984998799642667027106266332761402208734576890240768932937759372687509636702806510997571765779011129659648394248912901877420031906104870432129175935954503354048371745592725603694488381581962149524857912652290651399073369229550839931558417751296841786590830272030895096173051417133147207893622120043649008997026667308467993670665024039979728279594570376410164846761320682754386153820712569509450725725054671789416193549898784331529130511897640609368637507011274863422084347978641123261037589518881072383406313678602225500335199951592798678930482975164358764414139887187448877842732038447107160470932753772074167710444954898794837478992271017625389866610135458546951548152586693548299765025775568220489685632437872764596975247996369247606145340867630877578550275395391792067351072727348945877742961908451227918843884868059826061936465056159347151023989875335727160525970982422293612865824529132527716475341943541676163515211119257667819766463953544615900183742529124471055414219163301131522286281142054226590144854536513384491555015574157897409504658291409964074094275877710408000094512409354551081561707816863945741911995766804729089907254860867516008491765182726953337415388508016440864752674956128500901115885009455755281855618047270644013105385448429478279047122010309783349202277777916004138807742026429106917994244668516931784668951885931700068613448276827164919388322106583136414747765082295130374932704753141441853918468924582160380436590442444362917028485317866329906115714697404244894630059302555707380959482414813886221367061612766827784969363386171133201123387658328061397937086311097360540230301505224822826443091312954667046993314029836428964468852529451856322795484787163459494753410355476542453125097125737770282981945756250601524137545238066025505417896263859633161184320239940313259178093568499541120686586972476355947376567059285505003048856007562676381848514653049207628955103364152328538853054283772731178895980564389429916314932534226496543178578880684069730990700915449318064512358714922219508448927459434830999056882411097760519353908854746889426801461543580007175671767245747163922208575830578628233084384178851226485174447456169359891790147879287929043725992380739300857201519187964508245496627280530411195998022017754669866251937761416191140226988567212292317590420723190319048590634564933332194020292625508286741730024374363978653667111025709034342305981468544414548896448975632968347780327345473612645059726890722486121021573909721119607042723709637595444999740626726984216022876267708247801819972588870193976795982372879204023828595914250911079193074999428021481452979282650335158087105047458588630631742821847655884319447295732476654302106623062750388122780685304423902966469851014652484133389980345363997417997456298846917361934936353435059425394748679730153268081433736891145273518825470628822661172900504986248710512633095037513146650941891377791739241892238107170776358816146886024639887518091881691223170190944856023620588193381168247282766891128690131036668649739537862274559844651792008793354853676930042028475267191301566008953627088076639093901912041206950206547316277306752023119765028604835621204543960390566210632892284461238153187074740463027855861843230827433992083616390046707799776768692715302153513179948813490658340185019603377906188170199712553787516997025164669191865092960180703279395432431323791220630168563687848360417790753954496829368924786879834569649946462038794630019161154392882880021216766812007187563817630177720096581665196489127284023412405432851549825790958138150661708415428600873354788576915008494737532777520496930164959634394225127752358722733652396919601452777840700586387502079460617568834659400322516554034323358127728529009544727850133353091942270107613626897656027992565261929031408135514552369578969572999815335192225617493988040615593732261088813022740097908301005310445070531353309216911200549761632411437683307230401251086555991242062272255802528800376205903098594286939613393958660455869650941120185165214532786619304688065517934545817698714681466706107106404558723133719841222938370579371393336888131448854284143146928387566876453148447261185707074257882674153628085241922874547681167396364079581253203215763322108504674744471516635418329197565059690982760520971299713844803489294394576763901552947055210118338213557859478684953104293266556404615408395182600820019083334764644718019350256122690032546214951550454414872304028778679486219352714912043430983738882892732824670237363884717558030402172766571685128995790078557304319956652846310894063784968234489222031816022321135681671685589286459043302701872294887616501021551010702529749555414216823476110445220930716738285177089603052772482522315075608949695841690550915152540994060933630613457895615053722503703018837300200744843542057433327063006022454251310196609317918603492108576822257980599449492583425774315673778273186356596863868874389931961327782016397086511333268728109256919217863306989436585488244973400889439444868411129214881391300421517220536939121615193917972557461271636946383383020734693911614147336968353071468774394727535135504038006503701022871678002860566840598496264333154810352740315617834642693544517692545028745500570505981714051206187645444092322223465788193958105025126147704634699790132368720777428809398406231602797192569435069670640154446530566296521821646343887065258167513036663335492290393422337408228171260453800069721205487881889622116666476189398855744914750491036165997781595598827495873996507955748787754347303166468465118925504674433126546469187810371132391104247221933736886805845691617496591053766427858891466523418863262887826719608989494222650054187621581926962330009249822127378286285553527371420684651470506776988790715970375113461991617182624820596935272425628101747424561765000319577271264175594855061896503338605444246104184903639280705346849248180908811555808021749593725306425888033990776001262181830775145263686581532931959797715164879350384301102818968174102380474658729115232345782752804898777104913083049698225693918472079938888072989746291900965460331627572414379748634090881338140689407218763236460981433378539654409439623389980384260577654365477680886860691340333320801670446232552691196144298244805273292167283291907809936295556488168441505679350341804874267012466087944343780912425123008287561966458026166416451073542720637471921963279271291709368923196765956152968843796474593642541276882414582223902464601169271904637591221411546515472639238123525664328326146478944738024048999532031371192206839141206158806805487949275574016275831392004441384968416825187955865356317222226340114303506772295864675750036823509545065684055105933065010681831813703986880802464953314468475891699169294492895024183950752202837261745353266678686443799390385569521392221598482094060706162873756867892762459216107242923415345251075483587810068138964882785381678302686104629225333872968238437129764408546546228052777058541100192045103081913101285093429947229953313347669376384657840625438669070646405908087914893898154698289991674244802845772216791758257586673184403525454094117370347683533154886856666581522255625943969125114765558281458478605841513773800517769352147885536623353161990394335979808330359065835980934607346727408439114005625960429728706816637153455267372664269030403848970393742605069497013570332124917257222242219143764629516575262276343988699917894632407125327151256451834666618878454673332869638148703743576318790676166455243760190010442964875458854064731291705263130122912081879731136676982765967963544365700180615528443168360648518307410451842843119992473422472823919712911516940234136744493703854596666422601082133902652957088467678565853741588986722640415747663692242000406479450369245276886029766158907525718413167003425556498676896665228690474170355212433881414403786675372090688759692607966999424261438646681959517789945278693484676693940693523504669953800934023940054767868340982486066730045677107996167683239837131633322114987037395296440853612474641767795073404449853308526052193630552051991714468257767976020034273004441268256715520739848939948349576795109523585107813961857989507810780656845362052802338230577642384991794004250649434336511724768086512075851095778602291876656155544766653881564109047924035282533646022548633695215448643136404445854966653310922804200615600553996017395349868232584149371920579518972201127635804581736503358616687866685674136626520572107816578991987546185257185043991318746293714260554118595494275275056636156356545605745896028130608661642734752626883250840234676350585013698162026100053162102613293195556208839929944094322911600433061673272982182427308797910818573432138705574932909261125810775314783473014168832859523289870327639339164132479291520710633670583202814436309555606463004632481369383838566216604174803260920517060701550305435784812739700964770669702341774262055150299518647876064220645860524840113935912724757487110495647226568204329827191631118726484219356477320005654526407029003747236769334512433403675993290113515998424184955423806326410172797477358866031575060908244790423142565556614569947118216974438123400447111711883794171838172872268727666094973438620239344906661752383834869530125045327765825494627531342047627068237239805640616415873579849298459629414650563113191405588399889797043110242706640913070131008272155143357443073302751406777305462116054396071426629553018433144651248544652767772323695814784487440949837088379844837591048881469112813796554342952147262084694506216686906802515214949830161940798884064419189245925886619765734980035903986982607413342492216290376467172564578667412241325991453148887643397187776567586731831126953156429842478499590744767307858817048541330394376798713882612677429452368226203199051823592548044841757468361666390190343127336990045146431202075464791949884206418976695863568335554768902911103664186365643658598925930641487688641521128625142283370056376945588191283012638318368543486264768364494752899348231740198693471688004171896981734292504643436430832830587271451702715562325436419619870535371506324922123195088964711468912809060566810144989140237830066777888603891296651824565214390300472536728369017050294775522903759773964800423081004524726112836137672053246666747232380343624696609102270316771933798183559145972097662641819001951227039434907569067030966024508996141062262015165673247593670328799622874729759687085501579176694073181066837704867272160444489106691551291075598833070006493240284558998349470998272921361665038572694646565740962334450486735045159002332212735983539835699830767070819839177009281507107469108607613089785703060465808518479024385077744180156996327467754649550822029355853047562921535957722807221906749088790180094241301362469131721181641698245636511401980881952945126654183532722647187629503902010697691419920973798444699460971226742014639516296108587427133200529947128091994626560236718619803239040562969341361019184989129757383061586268536397719800468422724259785660651388555670553407631360816900630841240081195652210525060306895139277798923032726065184635947932113988596280438494232745874292127455859839067355459882152182760787462424148235123033948301735121306228690987636429177674619401614932731124078010037948658298831499897851082480075095813463572284053292331842371120428632698108049414855665834995928274246584184110564865247191084472777252507121328954823679753206876965943850532958455380064920832881147107246825544572807889148593132397848362432874638321077323435154294519317069809747918590543074787315553429814143825213245953402291222682567466442441338812162460145314993364113579793589870443016644340165666366728994652729692479563934508860701145647599988574153409443757520077321169041729190098249473796108942728832262928988208402575387024458825151352848918291576308131131063708979631247223889389274548598626126682116653454771213271012178828722861358357647634839928134912569449965303065645199776049094043337230585479318789346102418007012107006842684879009051146074445518546621218295610355280985934999418055784877354751783741187506566949993739401498240848889169518253167099400941080305865575847370562629116022272501106262103607805052030082154069892217041662505324949433882992117612752961746174982619070496020579899658324985152834362032991046847686873461396023732171044915676627482372767324959831437474555722348071787536042659760658513450726717859612757504195101103422326206411100737735254193869343235219992411839618623021645041442701448437587323920842917247983779064184415940331713047848601520680807875263128744147597570039157300072592392819331447931106065028859645434067706475198417977004025762186933200299278235313265971543545688990498644279528878257189339963510414417480151104329632933846317395972942612406541262482667673209286160606736434533544289237470463244233270415338071381223582274025942976483038162463430570521831282140535824039595071288953538629282402896399816061962093064668186839225579940540950197511928920483082230182207720892149192325643415236535889780852099417906278889062207459547549494252135990807283939562989034856736273837076940121997010949016626091733957217321382411310011197549733798816496963371223824810958821090771013159995206162666122344250333595584166660828401123841098016706792262849574867758583673901306900151256885984867533931059495801527340708790396682335182593743502005022440269990684976792332171371742212510837876498354035736032351078877486053353479476884695146353207432698072674433812084636847506593506563202389455142689627368709768699979359885493088494887864862001755773047654346200568248435748465246736673141199963505924652209971694128636781226406198388829504141580985808147306651911992134214149402574011823915850763846627652540569464106338397270376965641770541779919009274070125777242943408574737170773344627808829058553774119522461720613933027027336073935128675181377285688528830176891616004656717557567416399035253722165289636906321440259711409254117430006800449252022397229861974093169073031269973288760786705304857074293835258093039053142875572570856113918484453743632966567957607331576117390255237489489782936165464621834050562459145362489629098395846874758449173542482669047105827647799514381338652314166730172094172409785202903847262648863063308593214810664530851315346364293675658192067618661183393120532466543889137207968397421813540536015585426755546381469358659724163728451686717291108907343985084945466126238828527840246179878737113890991485752705251887048885924490174834624746057440571983109512439864265686276635022283608678226060440143934716983255161734309123971381272346469173102899080894439832022986243239574501613385505004559437299044080674468834966344805557865125499139015494927291545577640936194991743101548665607767104163338165790651298126761120927595546066847202148065368969920272380963507240816110818317541547298092679062489467087122006506323243751770919711847262871856510474062457710029022912191518436621752093629760239115380573559035578690887612144293244250315670936635504388268150937132091558817922375400630932402786243374606917872435845848428147391742103583361304712152113405719475644881482528164107863120753454681255931776490914326487943380115142144724144037251121670749508706993882141621913911825260346868494596307702435080096110055750961377147899847157752184825265066133910716588648957240072961348694440318317067748400200081463478687057167420080898238210316304104065589201615945368212425899558737959192784227888954931531684850593108228114273651092893984090112850620874985262645757649154646028828973696001172341960536571359312642995639998848662545384018628917320511237824991909186224038021848970223110249939562633918230524647840105142829790053295031939335815629424074356185761421668081953592118088799083302081799728480004333868382867779233955301451408264891041841023597787934664307238731656079359986221559501349247054833195001437071480646019144005030064857972571469208641102510578809013983013772682147070102639524739836627686604982372289190859873722244096655271250624643028681795740664842361853047643992679893437556241867478433754578865646523022423375608581684221320061284903761089192315987602565570591303802370128228509030558323835742204760429513933394409017287205518256929463491556162114394636735243372401405495409984814355271750768684427648264028491385680216214516290552498634083956042033002100261702501654708294740090138986816444425455981522460115761820328776333082691675193869459392546567504450230138866944733335100489220895338974919296875381532137578564753942039823453743218096287115924125822532492697188707834808116014188472213638131593086672127334899078042201126828411763430913412880141605736475649014261257027017414982961042075428865489503197960811123030659240073566381674043329769168547745670436940868341259530481128532136296899258733081448446795271972117727995427476106767380813783036429697905339537128849025848284501139291267681844833505952975662141258933099506337119181958128837379575817526273983114849833533532218439927075012098530241636039271827542660078583610980559172886287705501621963592440933975850852886597059039595097951410677224208487312054655090381090919471932966126349316602176307305896385353583466667943389009888410399316328894393821544145528486433236506672858425271408309047387067495486280678559127151862733236550088309258142414294060736463435855238638716343840003632046427024348888781190333299739906169974225007267144591477413373651231024261138786719429322807508391328842829912260648174494796103965127064846192407343541800521126952135724208316055017588594335280944025932984503358643208982116752031150702343213148734004725729758231937551302789089488637910514376620629255859884755451124321623057540940086311793337845330980436504650094785758364289024975945248986700991006869355371929299718141382345811526649197308350195903852815166046994577352666623008085213087060974869698870533403678011971236238328309295302467547558936202421664200424307976907143044295404786014589126301656687311832412821554799688185426722812587883086747746018106984585329199696120551774787559490303035266379833360414712141141336806574066635495707631936770210642134934373124465162913077616217245075917366569804298691334166610701478080174950821355299988914228392744654784710796781840479243817475654689426455085269151885779375347958943832480157659215005798358201854701750999214140461194494957502540374177942990265828081564275008823756650788567784094623489134525527378634633244286114436262213278441790941230373259527958680634024812735611201355863400836328852574826683007139145851782600960122653172088419150326469832587763422876906701178159712761612528585658410856038910552418682385652079244672632605822166826247839385624030252316472178793258594382494925517539133273698036623455102211419283483823218409514901745527449363696248588172338221641738709947842935487939615063929067323217446635246330100552139616098171606107790759905848044067819031454168464186554004805203294078515100538918233442333032111118012920850056789568084923044673467020085912197486603924357397603586774176480384911562706887248250536447965211694870195143563353384111287971000124318551146363977094132703937062458001976933217231992883668375323122721879589090283538150691065017188358711495596823995392467061034117460827552479483849602850751832145018356467223654671859875574384243692882679241509490583863547104081594110110533378935224311760312773518826505109359866893625282495494827989405580117679008299326095894332095048541170143340005549470711654612544571378869520476324094176790398539941920532723789804650881060416579843745629401329017731153921


----------



## ben1996123 (Jun 6, 2013)

okso my S2 exam (statistiqs) starts in 8 hours and i just realised that ive forgotten everything


----------



## aaronb (Jun 22, 2013)

*"How many times a day does a clock’s hands overlap?"*

Earlier today I saw the question "How many times a day does a clock’s hands overlap?". I thought this included the second hand. So I went and calculated a result. Apparently, just about everyone else on the internet took this question to mean "How many times a day does a clock’s minute and hour hands overlap?". I was correct in that the minute and hour hand overlap 22 times in one day. However, I could not find anyone who calculated the result when the second hand was included. So I am looking to see if some of you math geniuses could confirm or debunk my result on the how many times a day ANY of the hands on a clock (Second, minute, and hour) overlap.

My result:


Spoiler



2872



How I got my result:


Spoiler



How many times the second and hour hand overlap:
[(60*12)-1]*2
=1438
Reasoning:
The second hand crosses the hour hand once a minute. So 60 times and hour. Multiply that by 12, half a day. Every 12 hours, the hour hand completes one full revolution, which means the second hand overlaps it one less time. Multiply that by 2. (A day is 24 hours, not 12)

How many times the second and minute hand overlap:
59*24
=1416
Reasoning:
The second hand overlaps the minute once a minute. However, the minute hand completes a revolution once an hour, thus, one less overlap. That makes 59 an hour, multiplied by 24 hours in a day.

How many times the minute and hour hand over lap:
11*2
=22
Reasoning:
The minute hand overlaps the hour hand once an hour. However, the hour hand completes a revolution once every 12 hours, making only 11 overlaps. Multiplied by 2, for there are 24 hours, not 12, in a day.

1438+1416+22
=2876

However, at noon and midnight, all 3 hands align. In my calculations, I counted all the times the minute and hour hands overlap, second and minute hand overlap, and second and hour hand overlap. That means noon and midnight counted as 3 overlaps each in my calculations. I would consider these to be only one overlap each. So I subtract 4 from the last sum I calculated. I suppose you could consider 2876 the answer, but I think midnight and noon are only one overlap.

2876-4
=*2872*


----------



## cmhardw (Jun 26, 2013)

I had a fun challenge for myself to come up with a function to model days of the week. The situation is that you know the day of the week today is, now given n days from today what day of the week will that day fall on?

For example if today is Wednesday, and I want to know what day of the week 20 days from now will be I would say that 20 days is 1 day shy of 3 weeks. So that means that 20 days from now will be, in terms of days of the week, one day before Wednesday, so it must fall on a Tuesday.

Now, my challenege to myself was to write a function that would do this for any integer n. I was really baffled as to how to do this if I start with the following pattern.

Take any ordered pair (n,d)
Let n represent the number of days from today
Let d represent the number of days of the week from today.

Further I restricted d to only take values in the set {-3,-2,-1,0,1,2,3} since I like it better to say that Tuesday is one day before Wednesday than to say that Tuesday is 6 days after Wednesday.

So an (n,d) of (4,-3) means that 4 days from today is 3 days behind the day of the week today is. Today is Wednesday, so 4 days from today is Sunday. Sunday is 3 days of the week before Wednesday.

An (n,d) of (20,-1) we already saw above. 20 days from today is really 1 day of the week before today. If today is Wednesday, then 20 days from today is 1 day behind Wednesday, or a Tuesday.

Yesterday I had a breakthrough moment and, for those who are interested, here is my function for all integer n:


Spoiler



\( f(n)=(n\mbox{ }mod\mbox{ }7)-7\lceil\frac{(n\mbox{ }mod\mbox{ }7)}{7}-\frac{1}{2}\rceil \)

Where \( \lceil n \rceil \) is the ceiling function of n, also called the least integer function.


----------



## Stefan (Jun 26, 2013)

cmhardw said:


> Yesterday I had a breakthrough moment and, for those who are interested, here is my function for all integer n:
> 
> 
> Spoiler
> ...



That's rather complicated. I usually do:


Spoiler



((n + 3) mod 7) - 3


----------



## cmhardw (Jun 27, 2013)

Stefan said:


> That's rather complicated. I usually do:
> 
> 
> Spoiler
> ...



Wow Stefan, that's really clever! For some reason I had never thought to perform an operation on the variable, then examine that result mod a number. Cool!


----------



## cmhardw (Jun 27, 2013)

aaronb said:


> Earlier today I saw the question "How many times a day does a clock’s hands overlap?". I thought this included the second hand. So I went and calculated a result. Apparently, just about everyone else on the internet took this question to mean "How many times a day does a clock’s minute and hour hands overlap?". I was correct in that the minute and hour hand overlap 22 times in one day. However, I could not find anyone who calculated the result when the second hand was included. So I am looking to see if some of you math geniuses could confirm or debunk my result on the how many times a day ANY of the hands on a clock (Second, minute, and hour) overlap.



I got your same number.

My method was:


Spoiler



I used a constructive proof by just finding all the exact times that any specific overlap would happen. Rather I found a formula for each pair of hands to find what time the overlaps happen. I've heard of this clock problem before, but I have never tried it myself. This was fun! Basically I approached it from the viewpoint of an angular velocity problem.

The minute hand overlaps the hour hand 11 times in a 12 hour period. There is no overlap of the minute and the hour hand during hour 11 (this overlap happens right on 12:00 exactly).

The second hand overlaps the minute hand 59 times every hour. There is no overlap of both hands between 11:58:58.98 and 12:00 until exactly 12:00.

The second hand overlaps the hour hand 719 times in a 12 hour period. There is no overlap of the second and hour hands from 11:58:59.92 and 12:00 exactly.

24*59+719*2+11*2=2876

However, this has counted 0:00 and 12:00 three times each. On the clock that means I have counted 12:00 six times, when it should only have counted twice.

2876-4=2872, same as you.

Fun problem!


----------



## Stefan (Jun 28, 2013)

cmhardw said:


> Wow Stefan, that's really clever! For some reason I had never thought to perform an operation on the variable, then examine that result mod a number. Cool!



Fun fact: I couldn't remember the last time I used that, but then I used it again *today*. Came across Gauss's weekday algorithm where I was given the month as 1..12 and had to subtract 2 and end up in 1..12, which I did as ... [exercise for the reader , solution below]



Spoiler: solution



((m - 3) mod 12) + 1


----------



## TheNextFeliks (Jul 7, 2013)

Maths joke (also in my sig): sqrt(-1) 2^3 Σ π


----------



## ben1996123 (Jul 7, 2013)

TheNextFeliks said:


> Maths joke (also in my sig): sqrt(-1) 2^3 Σ π



\( \frac{i+j+k}{\sqrt{3}} \) ate all the pi?


----------



## TheNextFeliks (Jul 7, 2013)

ben1996123 said:


> \( \frac{i+j+k}{\sqrt{3}} \) ate all the pi?



Huh?


----------



## ben1996123 (Jul 7, 2013)

TheNextFeliks said:


> Huh?



\( \left( \frac{i+j+k}{\sqrt{3}}\right)^2=-1 \)

Q8 group


----------



## Smiles (Jul 9, 2013)

_The curve of a suspension bridge cable attached between the tops of two towers can be modelled by the function
h(d) = 0.0025(d - 100)^2 - 10,

where h is the vertical distance from the top of a tower to the cable and d is the horizontal distance from the left end of the bridge, both in metres. What is the horizontal distance between the two towers? Express your answer to the nearest tenth of a metre.

a) 213.1m
b) 126.4m
c) 138.6m
d) 169.3m

_

I need to solve this question and I'm pretty sure I would know how, if only the wording made sense. Can anyone help and explain?


----------



## CheesecakeCuber (Jul 9, 2013)

Smiles said:


> _
> 
> where h is the vertical distance* from the top of a tower to the cable* and d is the horizontal distance from the left end of the bridge, both in metres. What is the horizontal distance between the two towers? Express your answer to the nearest tenth of a metre.
> 
> _


_

Not sure I understand this._


----------



## Smiles (Jul 9, 2013)

CheesecakeCuber said:


> Not sure I understand this.



neither do i. that's the problem :/

EDIT:
nevermind i found this.


Spoiler


----------



## ben1996123 (Jul 9, 2013)

Spoiler


----------



## Smiles (Jul 9, 2013)

thanks for your help! i managed to do it on my own too.
i have another one D:

_Dinahi’s rectangular dog kennel measures 2 ft by 5 ft. She plans to double the area of the kennel by extending each side by an equal amount.
Determine the equation to model the new area._

so what i'm thinking is each side (2 and 5) should have x added to it, and when you multiply them they would equal double the current area (10*2)

so (x+2)(x+5)=2(2)(5)
x^2 + 7x + 10 = 20
*x^2 + 7x - 10 = 0* is my answer.

i dont have the multiple choice, but a,b,c all started with 4x^2, and d started with x^2 but was not equal to what i got.
help would be appreciated.

---

there was another question that was similar; the same thing but 4 ft + 7 ft and it asked how much each side should be extended by. i did get the answer but the multiple choice was all different.

edit: read my next post the wording was stupid.


----------



## CarlBrannen (Jul 9, 2013)

The problem of a chain hanging between two towers is an interesting mechanics problem. The solution isn't quite a quadratic equation, it's a catenary:
https://en.wikipedia.org/wiki/Catenary

According to the wiki article, Galileo thought it was a parabola.

To see that it's not a parabola, you can go through a lot of math to calculate the actual curve, but I suspect that there's a simple argument based on symmetry. I vaguely recall writing up a solution to the catenary problem for a class some years ago...


----------



## Smiles (Jul 9, 2013)

_Dinahi’s rectangular dog kennel measures 6 ft by 8 ft. She plans to double the area of the kennel by extending each side by an equal amount. How much does she extend to each side, to the nearest tenth of a foot?

a. 1.4
b. 3.2
c. 5.7
d. -8.4_

---

i didn't get any of those so idk whats up.

(x+6)(x+8) = 2(6)(8)
x^2 + 14x + 48 = 96
x^2 + 14x + 49 = 97
(x+7)^2 = 97
x+7 = √(97)
x = *-7 + √(97)* // not minus or it'll be negative
x = *2.8488578*...

and i even tested it. adding it onto each side and multiplying it should give me double of 6*8, which is 96.
(6+2.8488578)*(8+2.8488578) // approximately
= (8.8488578)*(10.8488578)
= 96

edit! OMG I JUST REALIZED *it means extend each of the 4 directions, (front back left right) not just each actual side (wall) of the kennel.* i hate the wording of this stuff i can't believe i didn't notice that.

i no longer need help on these questions, clearly my brain was dead for the day.


----------



## ben1996123 (Jul 9, 2013)

Smiles said:


> _Dinahi’s rectangular dog kennel measures 6 ft by 8 ft. She plans to double the area of the kennel by extending each side by an equal amount. How much does she extend to each side, to the nearest tenth of a foot?_


_

okso (2x+6)(2x+8)=96
x^2+7x-12=0
x=(-7+sqrt(97))/2 wich is about 1.4244289008980523608731057074588



okso whast \( \frac{d^{\frac{1}{2}}}{dx^{\frac{1}{2}}} x^2 \)_


----------



## CarlBrannen (Jul 9, 2013)

I also interpreted the extension as "two sides" because that's what any carpenter would do.

An easy way of doing the problem:

The area is 48 square feet. The perimeter is 6+8+6+8 = 28 feet. So the answer is going to be a little less than 48/28 = 24/14 = 12/7 = 1 5/7 = 1.52 feet. But only one of the answers is less than 1.52 feet.


----------



## brandbest1 (Jul 14, 2013)

I'm assuming LaTeX works perfectly fine on speedsolving.

\frac{\pi}{2}

Someone help me, please?


----------



## Stefan (Jul 14, 2013)

brandbest1 said:


> I'm assuming LaTeX works perfectly fine on speedsolving.
> 
> \frac{\pi}{2}
> 
> Someone help me, please?



Look at how others do it (which you can see when you quote them).


----------



## brandbest1 (Jul 14, 2013)

Stefan said:


> Look at how others do it (which you can see when you quote them).



\( Thanks, ~ Stefan! \)


----------



## ben1996123 (Jul 14, 2013)

so chaos theory is cool and weird

i made a program to simulate langton's ant with different generating sequences and img sizes and stuff and it makes alot of really shitty pictoors but alsó some really cool ones

in particular, RLLR generating sequence makes an infintely (probably) expanding cardioid type thing (notshore if it approaches a perfect cardioid as steps->∞) and it looks really cool

also L^n RR expands arbitrarily slowly as steps->∞ which is cool too, I noticed that L^100 RR stayed bounded within a 12x12 box after 25 billion steps which is weird



Spoiler: RLLR at 10 billion steps











edit:


Spoiler: above image with r=1-cos(theta) layered over it










right half is a pretty good match, left part isnt though, how strange

edit:

LRLRRRRLRL is preddy koo


Spoiler: 200million


----------



## brandbest1 (Jul 15, 2013)

Today I crammed a whole bunch of math, like dot products, cross products, box products, and partial derivatives. 

\( \frac{\partial z}{\partial x} \) is very cool!


----------



## ben1996123 (Jul 15, 2013)

brandbest1 said:


> Today I crammed a whole bunch of math, like dot products, cross products, box products, and partial derivatives.
> 
> \( \frac{\partial z}{\partial x} \) is very cool!



whast is a boxproduct

edit: scalar triple product ok


----------



## Smiles (Jul 19, 2013)

_The monthly economic situation of a manufacturing firm is given by the following equations.

R = 5000x - 10x^2

R[SUB]M[/SUB] = 5000 - 20x

C = 300x + 1/12 x^2

C[SUB]M[/SUB] = 300 + 1/4x^2

where x represents the quantity sold, R represents the firm’s total revenue, RM represents marginal revenue, C represents total cost, and CM represents the marginal cost. All costs are in dollars.
Profit is total revenue minus total cost. *What is the firm’s maximum monthly profit?*_

yeah can someone help me with this one? again the wording is troubling me, not that there's anything wrong with it, but i don't know how to deal with "marginal" stuff.


----------



## ben1996123 (Jul 19, 2013)

Smiles said:


> _The monthly economic situation of a manufacturing firm is given by the following equations.
> 
> R = 5000x - 10x^2
> 
> ...



isit not just this


Spoiler



\( P=\text{profit}=R-C=5000x-10x^2-300x-\frac{x^2}{12}=4700x-\frac{119x^2}{12} \)
\( \frac{dP}{dx}=4700-\frac{119x}{6}=0 \)
\( x=\frac{28200}{119} \)
\( P=\frac{4700(28200)}{119}-\frac{119(\frac{28200}{119})^2}{12}=556890+\text{abit} \)


----------



## Smiles (Jul 19, 2013)

ben1996123 said:


> isit not just this
> 
> 
> Spoiler
> ...



thanks for the reply.
but can you explain to me what dP/dx is? i can see at first you divided everything by x but then the denominator changed from 12 to 6 as well.

oh and these were the multiple choice:

a.
$437 003.91
b.
$535 163.26
c.
$415 135.20
d.
$377 125.92


----------



## 5BLD (Jul 20, 2013)

He differentiated P wrt x to find the maximum, aka turning point, aka dP/dx=0 or the quadratic
He didnt do division, he used calculus to find the maximum value


----------



## Smiles (Jul 20, 2013)

5BLD said:


> He differentiated P wrt x to find the maximum, aka turning point, aka dP/dx=0 or the quadratic
> He didnt do division, he used calculus to find the maximum value



oh okay D:
is his answer right then? cause it doesn't match the multiple choice.
and these tests are known for having the incorrect multiple choice. which one should i choose LOL


----------



## ben1996123 (Jul 30, 2013)

ben1996123 said:


> so chaos theory is cool and weird
> 
> i made a program to simulate langton's ant with different generating sequences and img sizes and stuff and it makes alot of really shitty pictoors but alsó some really cool ones
> 
> ...



okso tis koo, RLLR stays as a cardioid forever

i maked my program faster and its generated it to over 1 trillion steps (10^12) now

heres the full image after 1 trillion steps (13mb, 10000x10000, cant put on imgur)


----------



## CheesecakeCuber (Aug 6, 2013)

Can anybody here who is proficient in Python quickly but thoroughly explain to me, wiff a few examples, how to implement karatsuba multiplication in Python? Thanks, much appreciated.

All I can find online are people asking for help because their code is faulty or the explanations are so abstract and littered with code irrelevant to the main task, that I cannot understand it.


----------



## 5BLD (Aug 7, 2013)

CheesecakeCuber said:


> Can anybody here who is proficient in Python quickly but thoroughly explain to me, wiff a few examples, how to implement karatsuba multiplication in Python? Thanks, much appreciated.
> 
> All I can find online are people asking for help because their code is faulty or the explanations are so abstract and littered with code irrelevant to the main task, that I cannot understand it.



I'm not at my computer but I have written that exact program before. The idea is that you split up your numbers with something like min(len(x),len(y))/2 initially, and then def a karatsuba function that calls itself whenever it needs to multiply. Unless the multiplication is single digit, where the recursing stops. So make a karatsuba(x,y) function and wherever you have a times sign from the formula do karatsuba(whatever two number you have). What exactly are you having trouble with?

PS, you don't want to be multiplying by 10^n or whatever base you're doing, you wanna be using n.zfill(number of zeroes)


----------



## F perm (Aug 7, 2013)

CheesecakeCuber said:


> Can anybody here who is proficient in Python quickly but thoroughly explain to me, wiff a few examples, how to implement karatsuba multiplication in Python? Thanks, much appreciated.
> 
> All I can find online are people asking for help because their code is faulty or the explanations are so abstract and littered with code irrelevant to the main task, that I cannot understand it.



Alright, this is poorly done, but it works just fine and stays true to the alg:
EDIT: I changed m from min(len(str(x)), len(str(y))) to min(len(str(x)), len(str(y))) // 2 because every time I used it I did m // 2. I also changed a little in the final return.



Spoiler: v1.1





```
"""fperm 8/6/2013
Karatsuba algorithm."""

def karatsuba(x, y):
    """Multiplies x and y using the karatsuba alg."""
    
    if x < 10 or y < 10:
        return x * y
    m = min(len(str(x)), len(str(y))) // 2
    zfillNum = max(len(str(x)), len(str(y)))
    x0, y0 = int(str(x).zfill(zfillNum)[m:]), \
             int(str(y).zfill(zfillNum)[m:])
    x1, y1 = int(str(x).zfill(zfillNum)[:m]), \
             int(str(y).zfill(zfillNum)[:m])
    z0 = karatsuba(x0, y0)
    z2 = karatsuba(x1, y1)
    z1 = karatsuba((x0 + x1), (y0 + y1)) - z2 - z0
    return z2 * (100 ** (zfillNum- m)) + \
           z1 * (10 ** (zfillNum- m)) + z0
    
print(karatsuba(12345, 6789))
```






Spoiler: v1





```
"""fperm 8/6/2013
Karatsuba algorithm."""

def karatsuba(x, y):
    """Multiplies x and y using the karatsuba alg."""
    
    if x < 10 or y < 10:
        return x * y
    m = min(len(str(x)), len(str(y)))
    zfillNum = max(len(str(x)), len(str(y)))
    x0, y0 = int(str(x).zfill(zfillNum)[m // 2:]), \
             int(str(y).zfill(zfillNum)[m // 2:])
    x1, y1 = int(str(x).zfill(zfillNum)[:m // 2]), \
             int(str(y).zfill(zfillNum)[:m // 2])
    z0 = karatsuba(x0, y0)
    z2 = karatsuba(x1, y1)
    z1 = karatsuba((x0 + x1), (y0 + y1)) - z2 - z0
    return z2 * (10 ** (2 * (zfillNum- m // 2))) + \
           z1 * (10 ** (zfillNum- m // 2)) + z0
    
print(karatsuba(12345, 6789))
```




Type karatsuba(x, y), and it will return x * y done using the karastsuba alg.

First it checks to see if one of the numbers is one digit, and returns a simple x * y if they are. Then, using min() and len() like 5BLD said, it gives you the length of the smaller number, in this case 4, for m. zfillNum is the length of the larger number, used for zfill purposes. (Quick sidenote on zfill if you don't know what it is. str.zfill(x) will take str and if it is numeric, add 0's to the left until it is x digits long. Doc page.)

x0 and y0 are the back halves of x and y, here 345 and 789. m // 2 (now m) and zfill are used to format them correctly. There is almost definitely a better way to do this, I am not a professional programmer.(m // 2 == m / 2 when m is even, but m / 2 + .5 when m is odd.)

x1 and y1 are the front halves of x and y, formatted in the same way.
z0, z1 and z2 are numbers used in the final calculation. You will notice that they contain calls to karatsuba. This is where the recursion comes into play. Hopefully you understand recursion already, if not, happy reading!(There is also an easter egg in Google about recursion.)

Finally, when all values of z0, z1 and z2 have been calculated and the recursion 'level' is back to the first run through, it returns the answer, once again using zfillNum and m.

I just found out what Karatsuba was yesterday, so you will have to excuse the less than perfect code. Here is where I found my info:

Mathworld
I could have used any calculator to check my answers, but I could have used this one which also uses karatsuba
Good old wikipedia
And this pdf has info on Karatsuba and other multiplication tricks

If you have any questions on the code, feel free to ask me.

Hey I just noticed when reading backwards in this thread that a bunch of people are doing Project Euler. Me too! I started only like a week ago though. Here is my friend key if anyone wants: 63986219508625_f04d170010c1ee31653dc21faa81ca81


----------



## CheesecakeCuber (Aug 8, 2013)

5BLD said:


> I'm not at my computer but I have written that exact program before. The idea is that you split up your numbers with something like min(len(x),len(y))/2 initially, and then def a karatsuba function that calls itself whenever it needs to multiply. Unless the multiplication is single digit, where the recursing stops. So make a karatsuba(x,y) function and wherever you have a times sign from the formula do karatsuba(whatever two number you have). What exactly are you having trouble with?
> 
> PS, you don't want to be multiplying by 10^n or whatever base you're doing, you wanna be using n.zfill(number of zeroes)



Thanks for the reply Alex, I have one main problem:

Understanding how to split the big numbers. (Bases and padding wiff zeroes-)


----------



## 5BLD (Aug 8, 2013)

CheesecakeCuber said:


> Thanks for the reply Alex, I have one main problem:
> 
> Understanding how to split the big numbers. (Bases and padding wiff zeroes-)



Note: "tooming" is the same as "karatsubaring" here. This is because this is an old program, I later tried to generalise it using the Toom-Cook alg.



Spoiler: code and explanation



def splita(st,c):
>sr=str(st)
>return [sr[0:len(sr)-c],sr[len(sr)-c:len(sr)]]

def toomulti1(t,g):
>print "tooming"
>w=min(len(str(t))/2,len(str(g))/2)
>try:
>>a=int(splita(t,w)[0])
>>b=int(splita(t,w)[1])
>>c=int(splita(g,w)[0])
>>d=int(splita(g,w)[1])
>except:
>>return t*g
>p=toomulti1(a,c)
>r=toomulti(b,d)
>try:
>>q=toomulti1((a+b),(c+d))-p-r
>except:
>>q=(a+b)*(c+d)-p-r
>return addzeros(p,2*w)+addzeros(q,w)+r

In english:
def splita(number[string], some quantity c):
>if the input isnt a string it is now
>return part 1, part 2 where the second part is the length of quantity c
>this will fail if the second part is empty, i.e. c=0

def toomulti1(number x, number y):
>show that the computer is doing work
>w is half the minimum length of (x,y) when written in base 10
>Stop doing this if w is 0:
>>a= first part of x
>>b= second part of x
>>c= first part of y
>>d= second part of y
>If stopped; can't split this means that one of the numbers has 1 digit:
>>do naive multiplication
>p= a*c, the first coefficient- this is worked out using the same function
>r= b*d, the last coefficient- this is worked out using the same function
>try to do the formula by 
>>doing this whole algorithm again. 
>If one of a+b,c+d has one digit this will fail. If this happens, then 
>>just do the normal formula, q= (a+b)*(c+d)-p-r using naive multiplication
>return the sum of all of this stuff:
>>pad p with 2*w zeroes (this is obvious due to the formula)
>>pad q with w zeroes
>>r



here are four logs from my program:


Spoiler: 42 * 39



trying to multiply 42 and 39
the minimum half-length of these two numbers is 1
42 is split into 4 and 2
39 is split into 3 and 9
a is 4, b is 2, c is 3, d is 9
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 4 and 3
the minimum half-length of these two numbers is 0
couldn't split because one of 4 and 3 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 12
------
trying to multiply 2 and 9
the minimum half-length of these two numbers is 0
couldn't split because one of 2 and 9 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 18
now to work out the middle coefficient...
a+b = 6 and c+d = 12
going to do 6*12 using karatsuba multiplication
------
trying to multiply 6 and 12
the minimum half-length of these two numbers is 0
couldn't split because one of 6 and 12 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 72
padded 12 with zeroes to become 1200
padded 42 with zeroes to become 420
this multiplication is finished, the answer is 1638
padded 12 with zeroes to become 1200
padded 42 with zeroes to become 420
and so the answer is 1638





Spoiler: 230948745 * 129387129838



trying to multiply 230948745 and 129387129838
the minimum half-length of these two numbers is 4
230948745 is split into 23094 and 8745
129387129838 is split into 12938712 and 9838
a is 23094, b is 8745, c is 12938712, d is 9838
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 23094 and 12938712
the minimum half-length of these two numbers is 2
23094 is split into 230 and 94
12938712 is split into 129387 and 12
a is 230, b is 94, c is 129387, d is 12
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 230 and 129387
the minimum half-length of these two numbers is 1
230 is split into 23 and 0
129387 is split into 12938 and 7
a is 23, b is 0, c is 12938, d is 7
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 23 and 12938
the minimum half-length of these two numbers is 1
23 is split into 2 and 3
12938 is split into 1293 and 8
a is 2, b is 3, c is 1293, d is 8
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 2 and 1293
the minimum half-length of these two numbers is 0
couldn't split because one of 2 and 1293 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 2586
------
trying to multiply 3 and 8
the minimum half-length of these two numbers is 0
couldn't split because one of 3 and 8 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 24
now to work out the middle coefficient...
a+b = 5 and c+d = 1301
going to do 5*1301 using karatsuba multiplication
------
trying to multiply 5 and 1301
the minimum half-length of these two numbers is 0
couldn't split because one of 5 and 1301 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 6505
padded 2586 with zeroes to become 258600
padded 3895 with zeroes to become 38950
this multiplication is finished, the answer is 297574
padded 2586 with zeroes to become 258600
padded 3895 with zeroes to become 38950
------
trying to multiply 0 and 7
the minimum half-length of these two numbers is 0
couldn't split because one of 0 and 7 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 0
now to work out the middle coefficient...
a+b = 23 and c+d = 12945
going to do 23*12945 using karatsuba multiplication
------
trying to multiply 23 and 12945
the minimum half-length of these two numbers is 1
23 is split into 2 and 3
12945 is split into 1294 and 5
a is 2, b is 3, c is 1294, d is 5
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 2 and 1294
the minimum half-length of these two numbers is 0
couldn't split because one of 2 and 1294 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 2588
------
trying to multiply 3 and 5
the minimum half-length of these two numbers is 0
couldn't split because one of 3 and 5 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 15
now to work out the middle coefficient...
a+b = 5 and c+d = 1299
going to do 5*1299 using karatsuba multiplication
------
trying to multiply 5 and 1299
the minimum half-length of these two numbers is 0
couldn't split because one of 5 and 1299 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 6495
padded 2588 with zeroes to become 258800
padded 3892 with zeroes to become 38920
this multiplication is finished, the answer is 297735
padded 2588 with zeroes to become 258800
padded 3892 with zeroes to become 38920
padded 297574 with zeroes to become 29757400
padded 161 with zeroes to become 1610
this multiplication is finished, the answer is 29759010
padded 297574 with zeroes to become 29757400
padded 161 with zeroes to become 1610
------
trying to multiply 94 and 12
the minimum half-length of these two numbers is 1
94 is split into 9 and 4
12 is split into 1 and 2
a is 9, b is 4, c is 1, d is 2
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 9 and 1
the minimum half-length of these two numbers is 0
couldn't split because one of 9 and 1 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 9
------
trying to multiply 4 and 2
the minimum half-length of these two numbers is 0
couldn't split because one of 4 and 2 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 8
now to work out the middle coefficient...
a+b = 13 and c+d = 3
going to do 13*3 using karatsuba multiplication
------
trying to multiply 13 and 3
the minimum half-length of these two numbers is 0
couldn't split because one of 13 and 3 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 39
padded 9 with zeroes to become 900
padded 22 with zeroes to become 220
this multiplication is finished, the answer is 1128
padded 9 with zeroes to become 900
padded 22 with zeroes to become 220
now to work out the middle coefficient...
a+b = 324 and c+d = 129399
going to do 324*129399 using karatsuba multiplication
------
trying to multiply 324 and 129399
the minimum half-length of these two numbers is 1
324 is split into 32 and 4
129399 is split into 12939 and 9
a is 32, b is 4, c is 12939, d is 9
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 32 and 12939
the minimum half-length of these two numbers is 1
32 is split into 3 and 2
12939 is split into 1293 and 9
a is 3, b is 2, c is 1293, d is 9
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 3 and 1293
the minimum half-length of these two numbers is 0
couldn't split because one of 3 and 1293 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 3879
------
trying to multiply 2 and 9
the minimum half-length of these two numbers is 0
couldn't split because one of 2 and 9 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 18
now to work out the middle coefficient...
a+b = 5 and c+d = 1302
going to do 5*1302 using karatsuba multiplication
------
trying to multiply 5 and 1302
the minimum half-length of these two numbers is 0
couldn't split because one of 5 and 1302 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 6510
padded 3879 with zeroes to become 387900
padded 2613 with zeroes to become 26130
this multiplication is finished, the answer is 414048
padded 3879 with zeroes to become 387900
padded 2613 with zeroes to become 26130
------
trying to multiply 4 and 9
the minimum half-length of these two numbers is 0
couldn't split because one of 4 and 9 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 36
now to work out the middle coefficient...
a+b = 36 and c+d = 12948
going to do 36*12948 using karatsuba multiplication
------
trying to multiply 36 and 12948
the minimum half-length of these two numbers is 1
36 is split into 3 and 6
12948 is split into 1294 and 8
a is 3, b is 6, c is 1294, d is 8
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 3 and 1294
the minimum half-length of these two numbers is 0
couldn't split because one of 3 and 1294 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 3882
------
trying to multiply 6 and 8
the minimum half-length of these two numbers is 0
couldn't split because one of 6 and 8 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 48
now to work out the middle coefficient...
a+b = 9 and c+d = 1302
going to do 9*1302 using karatsuba multiplication
------
trying to multiply 9 and 1302
the minimum half-length of these two numbers is 0
couldn't split because one of 9 and 1302 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 11718
padded 3882 with zeroes to become 388200
padded 7788 with zeroes to become 77880
this multiplication is finished, the answer is 466128
padded 3882 with zeroes to become 388200
padded 7788 with zeroes to become 77880
padded 414048 with zeroes to become 41404800
padded 52044 with zeroes to become 520440
this multiplication is finished, the answer is 41925276
padded 414048 with zeroes to become 41404800
padded 52044 with zeroes to become 520440
padded 29759010 with zeroes to become 297590100000
padded 12165138 with zeroes to become 1216513800
this multiplication is finished, the answer is 298806614928
padded 29759010 with zeroes to become 297590100000
padded 12165138 with zeroes to become 1216513800
------
trying to multiply 8745 and 9838
the minimum half-length of these two numbers is 2
8745 is split into 87 and 45
9838 is split into 98 and 38
a is 87, b is 45, c is 98, d is 38
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 87 and 98
the minimum half-length of these two numbers is 1
87 is split into 8 and 7
98 is split into 9 and 8
a is 8, b is 7, c is 9, d is 8
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 8 and 9
the minimum half-length of these two numbers is 0
couldn't split because one of 8 and 9 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 72
------
trying to multiply 7 and 8
the minimum half-length of these two numbers is 0
couldn't split because one of 7 and 8 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 56
now to work out the middle coefficient...
a+b = 15 and c+d = 17
going to do 15*17 using karatsuba multiplication
------
trying to multiply 15 and 17
the minimum half-length of these two numbers is 1
15 is split into 1 and 5
17 is split into 1 and 7
a is 1, b is 5, c is 1, d is 7
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 1 and 1
the minimum half-length of these two numbers is 0
couldn't split because one of 1 and 1 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 1
------
trying to multiply 5 and 7
the minimum half-length of these two numbers is 0
couldn't split because one of 5 and 7 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 35
now to work out the middle coefficient...
a+b = 6 and c+d = 8
going to do 6*8 using karatsuba multiplication
------
trying to multiply 6 and 8
the minimum half-length of these two numbers is 0
couldn't split because one of 6 and 8 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 48
padded 1 with zeroes to become 100
padded 12 with zeroes to become 120
this multiplication is finished, the answer is 255
padded 1 with zeroes to become 100
padded 12 with zeroes to become 120
padded 72 with zeroes to become 7200
padded 127 with zeroes to become 1270
this multiplication is finished, the answer is 8526
padded 72 with zeroes to become 7200
padded 127 with zeroes to become 1270
------
trying to multiply 45 and 38
the minimum half-length of these two numbers is 1
45 is split into 4 and 5
38 is split into 3 and 8
a is 4, b is 5, c is 3, d is 8
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 4 and 3
the minimum half-length of these two numbers is 0
couldn't split because one of 4 and 3 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 12
------
trying to multiply 5 and 8
the minimum half-length of these two numbers is 0
couldn't split because one of 5 and 8 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 40
now to work out the middle coefficient...
a+b = 9 and c+d = 11
going to do 9*11 using karatsuba multiplication
------
trying to multiply 9 and 11
the minimum half-length of these two numbers is 0
couldn't split because one of 9 and 11 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 99
padded 12 with zeroes to become 1200
padded 47 with zeroes to become 470
this multiplication is finished, the answer is 1710
padded 12 with zeroes to become 1200
padded 47 with zeroes to become 470
now to work out the middle coefficient...
a+b = 132 and c+d = 136
going to do 132*136 using karatsuba multiplication
------
trying to multiply 132 and 136
the minimum half-length of these two numbers is 1
132 is split into 13 and 2
136 is split into 13 and 6
a is 13, b is 2, c is 13, d is 6
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 13 and 13
the minimum half-length of these two numbers is 1
13 is split into 1 and 3
13 is split into 1 and 3
a is 1, b is 3, c is 1, d is 3
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 1 and 1
the minimum half-length of these two numbers is 0
couldn't split because one of 1 and 1 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 1
------
trying to multiply 3 and 3
the minimum half-length of these two numbers is 0
couldn't split because one of 3 and 3 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 9
now to work out the middle coefficient...
a+b = 4 and c+d = 4
going to do 4*4 using karatsuba multiplication
------
trying to multiply 4 and 4
the minimum half-length of these two numbers is 0
couldn't split because one of 4 and 4 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 16
padded 1 with zeroes to become 100
padded 6 with zeroes to become 60
this multiplication is finished, the answer is 169
padded 1 with zeroes to become 100
padded 6 with zeroes to become 60
------
trying to multiply 2 and 6
the minimum half-length of these two numbers is 0
couldn't split because one of 2 and 6 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 12
now to work out the middle coefficient...
a+b = 15 and c+d = 19
going to do 15*19 using karatsuba multiplication
------
trying to multiply 15 and 19
the minimum half-length of these two numbers is 1
15 is split into 1 and 5
19 is split into 1 and 9
a is 1, b is 5, c is 1, d is 9
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 1 and 1
the minimum half-length of these two numbers is 0
couldn't split because one of 1 and 1 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 1
------
trying to multiply 5 and 9
the minimum half-length of these two numbers is 0
couldn't split because one of 5 and 9 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 45
now to work out the middle coefficient...
a+b = 6 and c+d = 10
going to do 6*10 using karatsuba multiplication
------
trying to multiply 6 and 10
the minimum half-length of these two numbers is 0
couldn't split because one of 6 and 10 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 60
padded 1 with zeroes to become 100
padded 14 with zeroes to become 140
this multiplication is finished, the answer is 285
padded 1 with zeroes to become 100
padded 14 with zeroes to become 140
padded 169 with zeroes to become 16900
padded 104 with zeroes to become 1040
this multiplication is finished, the answer is 17952
padded 169 with zeroes to become 16900
padded 104 with zeroes to become 1040
padded 8526 with zeroes to become 85260000
padded 7716 with zeroes to become 771600
this multiplication is finished, the answer is 86033310
padded 8526 with zeroes to become 85260000
padded 7716 with zeroes to become 771600
now to work out the middle coefficient...
a+b = 31839 and c+d = 12948550
going to do 31839*12948550 using karatsuba multiplication
------
trying to multiply 31839 and 12948550
the minimum half-length of these two numbers is 2
31839 is split into 318 and 39
12948550 is split into 129485 and 50
a is 318, b is 39, c is 129485, d is 50
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 318 and 129485
the minimum half-length of these two numbers is 1
318 is split into 31 and 8
129485 is split into 12948 and 5
a is 31, b is 8, c is 12948, d is 5
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 31 and 12948
the minimum half-length of these two numbers is 1
31 is split into 3 and 1
12948 is split into 1294 and 8
a is 3, b is 1, c is 1294, d is 8
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 3 and 1294
the minimum half-length of these two numbers is 0
couldn't split because one of 3 and 1294 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 3882
------
trying to multiply 1 and 8
the minimum half-length of these two numbers is 0
couldn't split because one of 1 and 8 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 8
now to work out the middle coefficient...
a+b = 4 and c+d = 1302
going to do 4*1302 using karatsuba multiplication
------
trying to multiply 4 and 1302
the minimum half-length of these two numbers is 0
couldn't split because one of 4 and 1302 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 5208
padded 3882 with zeroes to become 388200
padded 1318 with zeroes to become 13180
this multiplication is finished, the answer is 401388
padded 3882 with zeroes to become 388200
padded 1318 with zeroes to become 13180
------
trying to multiply 8 and 5
the minimum half-length of these two numbers is 0
couldn't split because one of 8 and 5 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 40
now to work out the middle coefficient...
a+b = 39 and c+d = 12953
going to do 39*12953 using karatsuba multiplication
------
trying to multiply 39 and 12953
the minimum half-length of these two numbers is 1
39 is split into 3 and 9
12953 is split into 1295 and 3
a is 3, b is 9, c is 1295, d is 3
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 3 and 1295
the minimum half-length of these two numbers is 0
couldn't split because one of 3 and 1295 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 3885
------
trying to multiply 9 and 3
the minimum half-length of these two numbers is 0
couldn't split because one of 9 and 3 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 27
now to work out the middle coefficient...
a+b = 12 and c+d = 1298
going to do 12*1298 using karatsuba multiplication
------
trying to multiply 12 and 1298
the minimum half-length of these two numbers is 1
12 is split into 1 and 2
1298 is split into 129 and 8
a is 1, b is 2, c is 129, d is 8
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 1 and 129
the minimum half-length of these two numbers is 0
couldn't split because one of 1 and 129 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 129
------
trying to multiply 2 and 8
the minimum half-length of these two numbers is 0
couldn't split because one of 2 and 8 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 16
now to work out the middle coefficient...
a+b = 3 and c+d = 137
going to do 3*137 using karatsuba multiplication
------
trying to multiply 3 and 137
the minimum half-length of these two numbers is 0
couldn't split because one of 3 and 137 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 411
padded 129 with zeroes to become 12900
padded 266 with zeroes to become 2660
this multiplication is finished, the answer is 15576
padded 129 with zeroes to become 12900
padded 266 with zeroes to become 2660
padded 3885 with zeroes to become 388500
padded 11664 with zeroes to become 116640
this multiplication is finished, the answer is 505167
padded 3885 with zeroes to become 388500
padded 11664 with zeroes to become 116640
padded 401388 with zeroes to become 40138800
padded 103739 with zeroes to become 1037390
this multiplication is finished, the answer is 41176230
padded 401388 with zeroes to become 40138800
padded 103739 with zeroes to become 1037390
------
trying to multiply 39 and 50
the minimum half-length of these two numbers is 1
39 is split into 3 and 9
50 is split into 5 and 0
a is 3, b is 9, c is 5, d is 0
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 3 and 5
the minimum half-length of these two numbers is 0
couldn't split because one of 3 and 5 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 15
------
trying to multiply 9 and 0
the minimum half-length of these two numbers is 0
couldn't split because one of 9 and 0 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 0
now to work out the middle coefficient...
a+b = 12 and c+d = 5
going to do 12*5 using karatsuba multiplication
------
trying to multiply 12 and 5
the minimum half-length of these two numbers is 0
couldn't split because one of 12 and 5 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 60
padded 15 with zeroes to become 1500
padded 45 with zeroes to become 450
this multiplication is finished, the answer is 1950
padded 15 with zeroes to become 1500
padded 45 with zeroes to become 450
now to work out the middle coefficient...
a+b = 357 and c+d = 129535
going to do 357*129535 using karatsuba multiplication
------
trying to multiply 357 and 129535
the minimum half-length of these two numbers is 1
357 is split into 35 and 7
129535 is split into 12953 and 5
a is 35, b is 7, c is 12953, d is 5
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 35 and 12953
the minimum half-length of these two numbers is 1
35 is split into 3 and 5
12953 is split into 1295 and 3
a is 3, b is 5, c is 1295, d is 3
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 3 and 1295
the minimum half-length of these two numbers is 0
couldn't split because one of 3 and 1295 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 3885
------
trying to multiply 5 and 3
the minimum half-length of these two numbers is 0
couldn't split because one of 5 and 3 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 15
now to work out the middle coefficient...
a+b = 8 and c+d = 1298
going to do 8*1298 using karatsuba multiplication
------
trying to multiply 8 and 1298
the minimum half-length of these two numbers is 0
couldn't split because one of 8 and 1298 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 10384
padded 3885 with zeroes to become 388500
padded 6484 with zeroes to become 64840
this multiplication is finished, the answer is 453355
padded 3885 with zeroes to become 388500
padded 6484 with zeroes to become 64840
------
trying to multiply 7 and 5
the minimum half-length of these two numbers is 0
couldn't split because one of 7 and 5 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 35
now to work out the middle coefficient...
a+b = 42 and c+d = 12958
going to do 42*12958 using karatsuba multiplication
------
trying to multiply 42 and 12958
the minimum half-length of these two numbers is 1
42 is split into 4 and 2
12958 is split into 1295 and 8
a is 4, b is 2, c is 1295, d is 8
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 4 and 1295
the minimum half-length of these two numbers is 0
couldn't split because one of 4 and 1295 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 5180
------
trying to multiply 2 and 8
the minimum half-length of these two numbers is 0
couldn't split because one of 2 and 8 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 16
now to work out the middle coefficient...
a+b = 6 and c+d = 1303
going to do 6*1303 using karatsuba multiplication
------
trying to multiply 6 and 1303
the minimum half-length of these two numbers is 0
couldn't split because one of 6 and 1303 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 7818
padded 5180 with zeroes to become 518000
padded 2622 with zeroes to become 26220
this multiplication is finished, the answer is 544236
padded 5180 with zeroes to become 518000
padded 2622 with zeroes to become 26220
padded 453355 with zeroes to become 45335500
padded 90846 with zeroes to become 908460
this multiplication is finished, the answer is 46243995
padded 453355 with zeroes to become 45335500
padded 90846 with zeroes to become 908460
padded 41176230 with zeroes to become 411762300000
padded 5065815 with zeroes to become 506581500
this multiplication is finished, the answer is 412268883450
padded 41176230 with zeroes to become 411762300000
padded 5065815 with zeroes to become 506581500
padded 298806614928 with zeroes to become 29880661492800000000
padded 113376235212 with zeroes to become 1133762352120000
this multiplication is finished, the answer is 29881795255238153310
padded 298806614928 with zeroes to become 29880661492800000000
padded 113376235212 with zeroes to become 1133762352120000
and so the answer is 29881795255238153310





Spoiler: 321 * 6



trying to multiply 321 and 6
the minimum half-length of these two numbers is 0
couldn't split because one of 321 and 6 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 1926
and so the answer is 1926





Spoiler: 118118 * 69



trying to multiply 118118 and 69
the minimum half-length of these two numbers is 1
118118 is split into 11811 and 8
69 is split into 6 and 9
a is 11811, b is 8, c is 6, d is 9
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 11811 and 6
the minimum half-length of these two numbers is 0
couldn't split because one of 11811 and 6 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 70866
------
trying to multiply 8 and 9
the minimum half-length of these two numbers is 0
couldn't split because one of 8 and 9 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 72
now to work out the middle coefficient...
a+b = 11819 and c+d = 15
going to do 11819*15 using karatsuba multiplication
------
trying to multiply 11819 and 15
the minimum half-length of these two numbers is 1
11819 is split into 1181 and 9
15 is split into 1 and 5
a is 1181, b is 9, c is 1, d is 5
now we have to multiply a*b and c*d which we apply karatsuba again for
------
trying to multiply 1181 and 1
the minimum half-length of these two numbers is 0
couldn't split because one of 1181 and 1 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 1181
------
trying to multiply 9 and 5
the minimum half-length of these two numbers is 0
couldn't split because one of 9 and 5 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 45
now to work out the middle coefficient...
a+b = 1190 and c+d = 6
going to do 1190*6 using karatsuba multiplication
------
trying to multiply 1190 and 6
the minimum half-length of these two numbers is 0
couldn't split because one of 1190 and 6 has only 1 digit... so lets do the naive algorithm
this multiplication is finished, the answer is 7140
padded 1181 with zeroes to become 118100
padded 5914 with zeroes to become 59140
this multiplication is finished, the answer is 177285
padded 1181 with zeroes to become 118100
padded 5914 with zeroes to become 59140
padded 70866 with zeroes to become 7086600
padded 106347 with zeroes to become 1063470
this multiplication is finished, the answer is 8150142
padded 70866 with zeroes to become 7086600
padded 106347 with zeroes to become 1063470
and so the answer is 8150142


You split the numbers from the end using the minimum value from halving the lengths or your numbers. Sorry if I'm missing what you're trying to ask.


----------



## CheesecakeCuber (Aug 8, 2013)

Thank you very much Alex. I think I'm understanding it. Your explanation was wonderful and much better than most I found online. I will be writing my own program and testing it, then I will post it here.

Edit: Ok two clarifications to make. I don't unnerstand what line 3 does. Also, am I correct in saying that you pad p with 2 * min. length zeroes and pad q with min length?

Edit2: Okso I kinof unnerstand line 3, but still need a bit of clarifying. I wrote up a quick program really fast. Apologies for stoopid errors.

import time
import math
import os

#Program to multiply using Karatsuba algorithm

def splitString(string,number)
string = str(string)
return [string[0:len(string)-c, string[len(string)-c:len(sr)]]

def karatsubaMulti(x,y)
print "Donut worry, calculations are being performed..."
minLength = min(len(str(x))/2,len(str(y))/2
if str(minLength) <= 1:
return x*y
else:
a = int(splitString(x,minLength)[0])
b = int(splitString(x,minLength)[1])
c = int(splitString(y,minLength)[0])
d = int(splitString(y,minLength)[1])
coefficient1 = str(karatsubaMulti(a,c))
coefficient2 = str(karatsubaMulti(b,d))
try:
answer = karatsubaMulti((a+b),(c+d))-coefficent1-coefficent2
except:
answer = (a+b)*(c+d)-coefficient1-coefficient2
return coefficient1.ljust(2*minLength + str(len(answer)),'0') + answer.ljust(minLength + str(len(answer)), '0')

PS, how does one add a spoiler so I don't kill people's browsers?


----------



## 5BLD (Aug 9, 2013)

Yes. Recall the formula (for base 10):
(10a+b)(10c+d)=100p+10q+r
where p=ac, r=bd and q=(a+b)(c+d)-p-r

So if you're multiplying a number that already has 10s in it (which you do when you split up numbers), well you know how many 10s it has. minLength. That's where the 10^2minLength comes from.

-Don't forget yer ":" after def or your program will be upset.
-SplitString(string,number)=> use the "number" variable in your definition!
-Be careful about your variables, don't just copy mine... tell me if you don't get it. "sr" is a variable in my alg.
-Your string index makes no sense, you can't have a tuple index.
-Do count yer brackets or your program, again, will be upset.
-Str(minLength) is always not going to be <= 1. Because it's a string.
-Your coefficients are strings. Be careful when multiplying.
-ljust doesn't work when you've already got 0s on the end.
>>> "80".ljust(2,"0")
'80'
>>> "8".ljust(2,"0")
'80'
-So I just asked it to multiply by 10. You can make this more efficient.

I fixed your code and this code works (once you indent it properly). Spoilers are done with (without the *) [spoiler*][/spoiler*]


Spoiler: Code with everything that doesn't work highlighted



import time
import math
import os

#Program to multiply using Karatsuba algorithm

def splitString(string,number)
string = str(string)
return [string[0:len(string)-c, string[len(string)-c:len(sr)]]

def karatsubaMulti(x,y)
print "Donut worry, calculations are being performed..."
minLength = min(len(str(x))/2,len(str(y))/2
if str(minLength) <= 1:
return x*y
else:
a = int(splitString(x,minLength)[0])
b = int(splitString(x,minLength)[1])
c = int(splitString(y,minLength)[0])
d = int(splitString(y,minLength)[1])
coefficient1 = str(karatsubaMulti(a,c))
coefficient2 = str(karatsubaMulti(b,d))
try:
answer = karatsubaMulti((a+b),(c+d))-coefficent1-coefficent2
except:
answer = (a+b)*(c+d)-coefficient1-coefficient2
return coefficient1.ljust(2*minLength + str(len(answer)),'0') + answer.ljust(minLength + str(len(answer)), '0')


Do try fixing it yourself before viewing this code, which does work.


Spoiler: Edited code



import time
import math
import os
import random

#Program to multiply using Karatsuba algorithm

def splitString(string,number):
string = str(string)
 return [string[0:len(string)-number], string[len(string)-number:len(string)]]

def karatsubaMulti(x,y):
 minLength = min(len(str(x))/2,len(str(y))/2) 
if int(minLength) <= 1:
return x*y
else:
a = int(splitString(x,minLength)[0])
b = int(splitString(x,minLength)[1])
c = int(splitString(y,minLength)[0])
d = int(splitString(y,minLength)[1])
coefficient1 = str(karatsubaMulti(a,c))
coefficient2 = str(karatsubaMulti(b,d))
print a,b,c,d
try:
 answer = karatsubaMulti((a+b),(c+d))-int(coefficent1)-int(coefficent2)
except:
 answer = (a+b)*(c+d)-int(coefficient1)-int(coefficient2)
 return int(coefficient1)*10**(2*minLength)+int(coefficient2)+int(answer)*10**(minLength)
a,b=random.randint(100,100000),random.randint(100,100000)
for w in range(0,10):
print "-----------"
print "Today, class, we are going to multiply "+str(a)+" and "+str(b)
print "Karatsuba, what's the answer?"
print karatsubaMulti(a,b)
print "The correct answer is "+str(a*b)+" you moron."





Spoiler: Logs (not logarithms)



Today, class, we are going to multiply 90656 and 99192
Karatsuba, what's the answer?
906 56 991 92
8992349952
The correct answer is 8992349952 you moron.
-----------
Today, class, we are going to multiply 4543 and 64503
Karatsuba, what's the answer?
45 43 645 3
293037129
The correct answer is 293037129 you moron.
-----------
Today, class, we are going to multiply 57783 and 71420
Karatsuba, what's the answer?
577 83 714 20
4126861860
The correct answer is 4126861860 you moron.
-----------
Today, class, we are going to multiply 70846 and 68254
Karatsuba, what's the answer?
708 46 682 54
4835522884
The correct answer is 4835522884 you moron.
-----------
Today, class, we are going to multiply 18059 and 41031
Karatsuba, what's the answer?
180 59 410 31
740978829
The correct answer is 740978829 you moron.
-----------
Today, class, we are going to multiply 30897 and 87550
Karatsuba, what's the answer?
308 97 875 50
2705032350
The correct answer is 2705032350 you moron.
-----------
Today, class, we are going to multiply 58822 and 85045
Karatsuba, what's the answer?
588 22 850 45
5002516990
The correct answer is 5002516990 you moron.
-----------
Today, class, we are going to multiply 84455 and 56920
Karatsuba, what's the answer?
844 55 569 20
4807178600
The correct answer is 4807178600 you moron.
-----------
Today, class, we are going to multiply 55882 and 16621
Karatsuba, what's the answer?
558 82 166 21
928814722
The correct answer is 928814722 you moron.
-----------
Today, class, we are going to multiply 89051 and 72391
Karatsuba, what's the answer?
890 51 723 91
6446490941
The correct answer is 6446490941 you moron.


Your program doing 2^1024. When you trust it enough you can sack the teacher and let Karatsuba do the multiplying without having to be checked every time.


Spoiler: 2^1024



-----------
Today, class, we are going to multiply 2 and 2
Karatsuba, what's the answer?
4
The correct answer is 4 you moron.
-----------
Today, class, we are going to multiply 4 and 4
Karatsuba, what's the answer?
16
The correct answer is 16 you moron.
-----------
Today, class, we are going to multiply 16 and 16
Karatsuba, what's the answer?
256
The correct answer is 256 you moron.
-----------
Today, class, we are going to multiply 256 and 256
Karatsuba, what's the answer?
65536
The correct answer is 65536 you moron.
-----------
Today, class, we are going to multiply 65536 and 65536
Karatsuba, what's the answer?
655 36 655 36
4294967296
The correct answer is 4294967296 you moron.
-----------
Today, class, we are going to multiply 4294967296 and 4294967296
Karatsuba, what's the answer?
429 49 429 49
672 96 672 96
42949 67296 42949 67296
110 245 110 245
18446744073709551616
The correct answer is 18446744073709551616 you moron.
-----------
Today, class, we are going to multiply 18446744073709551616 and 18446744073709551616
Karatsuba, what's the answer?
184 46 184 46
744 7 744 7
18446 74407 18446 74407
928 53 928 53
370 95 370 95
516 16 516 16
37095 51616 37095 51616
887 11 887 11
1844674407 3709551616 1844674407 3709551616
555 42 555 42
260 23 260 23
55542 26023 55542 26023
815 65 815 65
340282366920938463463374607431768211456
The correct answer is 340282366920938463463374607431768211456 you moron.
-----------
Today, class, we are going to multiply 340282366920938463463374607431768211456 and 340282366920938463463374607431768211456
Karatsuba, what's the answer?
340 28 340 28
236 69 236 69
34028 23669 34028 23669
576 97 576 97
209 38 209 38
463 46 463 46
20938 46346 20938 46346
672 84 672 84
3402823669 2093846346 3402823669 2093846346
549 66 549 66
700 15 700 15
54966 70015 54966 70015
124 981 124 981
11 5 11 5
337 46 337 46
74 31 74 31
33746 7431 33746 7431
411 77 411 77
768 21 768 21
14 56 14 56
76821 1456 76821 1456
782 77 782 77
3374607431 768211456 3374607431 768211456
414 28 414 28
188 87 188 87
41428 18887 41428 18887
603 15 603 15
34028236692093846346 3374607431768211456 34028236692093846346 3374607431768211456
374 2 374 2
844 12 844 12
37402 84412 37402 84412
121 814 121 814
386 20 386 20
578 2 578 2
38620 57802 38620 57802
964 22 964 22
3740284412 3862057802 3740284412 3862057802
760 23 760 23
422 14 422 14
76023 42214 76023 42214
118 237 118 237
115792089237316195423570985008687907853269984665640564039457584007913129639936
The correct answer is 115792089237316195423570985008687907853269984665640564039457584007913129639936 you moron.
-----------
Today, class, we are going to multiply 115792089237316195423570985008687907853269984665640564039457584007913129639936 and 115792089237316195423570985008687907853269984665640564039457584007913129639936
Karatsuba, what's the answer?
115 79 115 79
208 92 208 92
11579 20892 11579 20892
324 71 324 71
373 16 373 16
195 42 195 42
37316 19542 37316 19542
568 58 568 58
1157920892 3731619542 1157920892 3731619542
488 95 488 95
404 34 404 34
48895 40434 48895 40434
893 29 893 29
357 9 357 9
850 8 850 8
35709 85008 35709 85008
120 717 120 717
687 90 687 90
78 53 78 53
68790 7853 68790 7853
766 43 766 43
3570985008 687907853 3570985008 687907853
425 88 425 88
928 61 928 61
42588 92861 42588 92861
135 449 135 449
11579208923731619542 3570985008687907853 11579208923731619542 3570985008687907853
151 50 151 50
193 93 193 93
15150 19393 15150 19393
345 43 345 43
241 95 241 95
273 95 273 95
24195 27395 24195 27395
515 90 515 90
1515019393 2419527395 1515019393 2419527395
393 45 393 45
467 88 467 88
39345 46788 39345 46788
861 33 861 33
269 98 269 98
466 56 466 56
26998 46656 26998 46656
736 54 736 54
405 64 405 64
39 45 39 45
40564 3945 40564 3945
445 9 445 9
2699846656 4056403945 2699846656 4056403945
675 62 675 62
506 1 506 1
67562 50601 67562 50601
118 163 118 163
758 40 758 40
79 13 79 13
75840 7913 75840 7913
837 53 837 53
129 63 129 63
99 36 99 36
12963 9936 12963 9936
228 99 228 99
7584007913 129639936 7584007913 129639936
771 36 771 36
478 49 478 49
77136 47849 77136 47849
124 985 124 985
11 9 11 9
26998466564056403945 7584007913129639936 26998466564056403945 7584007913129639936
345 82 345 82
474 47 474 47
34582 47447 34582 47447
820 29 820 29
718 60 718 60
438 81 438 81
71860 43881 71860 43881
115 741 115 741
3458247447 7186043881 3458247447 7186043881
106 442 106 442
913 28 913 28
106442 91328 106442 91328
197 770 197 770
115792089237316195423570985008687907853 269984665640564039457584007913129639936 115792089237316195423570985008687907853 269984665640564039457584007913129639936
385 77 385 77
675 48 675 48
38577 67548 38577 67548
106 125 106 125
778 80 778 80
234 88 234 88
77880 23488 77880 23488
101 368 101 368
3857767548 7788023488 3857767548 7788023488
116 457 116 457
910 36 910 36
116457 91036 116457 91036
207 493 207 493
115 49 115 49
929 21 929 21
11549 92921 11549 92921
104 470 104 470
817 54 817 54
77 89 77 89
81754 7789 81754 7789
895 43 895 43
1154992921 817547789 1154992921 817547789
197 25 197 25
407 10 407 10
19725 40710 19725 40710
604 35 604 35
38577675487788023488 1154992921817547789 38577675487788023488 1154992921817547789
397 32 397 32
668 40 668 40
39732 66840 39732 66840
106 572 106 572
960 55 960 55
10 15 10 15
712 77 712 77
96055 71277 96055 71277
167 332 167 332
3973266840 9605571277 3973266840 9605571277
135 788 135 788
381 17 381 17
135788 38117 135788 38117
173 905 173 905
10 78 10 78
13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096
The correct answer is 13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096 you moron.
-----------
Today, class, we are going to multiply 13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096 and 13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096
Karatsuba, what's the answer?
134 7 134 7
807 92 807 92
13407 80792 13407 80792
941 99 941 99
10 40 10 40
994 25 994 25
10 19 10 19
970 99 970 99
10 69 10 69
99425 97099 99425 97099
196 524 196 524
1340780792 9942597099 1340780792 9942597099
112 833 112 833
778 91 778 91
112833 77891 112833 77891
190 724 190 724
574 2 574 2
499 82 499 82
57402 49982 57402 49982
107 384 107 384
58 46 58 46
12 74 12 74
5846 1274 5846 1274
71 20 71 20
5740249982 58461274 5740249982 58461274
579 87 579 87
112 56 112 56
57987 11256 57987 11256
692 43 692 43
13407807929942597099 5740249982058461274 13407807929942597099 5740249982058461274
191 48 191 48
57 91 57 91
19148 5791 19148 5791
249 39 249 39
200 10 200 10
583 73 583 73
20010 58373 20010 58373
783 83 783 83
1914805791 2001058373 1914805791 2001058373
391 58 391 58
641 64 641 64
39158 64164 39158 64164
103 322 103 322
793 65 793 65
820 59 820 59
79365 82059 79365 82059
161 424 161 424
239 33 239 33
777 23 777 23
23933 77723 23933 77723
101 656 101 656
7936582059 2393377723 7936582059 2393377723
103 299 103 299
597 82 597 82
103299 59782 103299 59782
163 81 163 81
561 44 561 44
372 17 372 17
56144 37217 56144 37217
933 61 933 61
640 30 640 30
64030 735 64030 735
647 65 647 65
5614437217 640300735 5614437217 640300735
625 47 625 47
379 52 379 52
62547 37952 62547 37952
100 499 100 499
79365820592393377723 5614437217640300735 79365820592393377723 5614437217640300735
849 80 849 80
257 81 257 81
84980 25781 84980 25781
110 761 110 761
33 67 33 67
84 58 84 58
3367 8458 3367 8458
118 25 118 25
8498025781 33678458 8498025781 33678458
853 17 853 17
42 39 42 39
85317 4239 85317 4239
895 56 895 56
134078079299425970995740249982058461274 793658205923933777235614437217640300735 134078079299425970995740249982058461274 793658205923933777235614437217640300735
927 73 927 73
10 0 10 0
628 52 628 52
92773 62852 92773 62852
155 625 155 625
233 59 233 59
748 23 748 23
23359 74823 23359 74823
981 82 981 82
10 63 10 63
9277362852 2335974823 9277362852 2335974823
116 133 116 133
376 75 376 75
116133 37675 116133 37675
153 808 153 808
135 46 135 46
871 99 871 99
13546 87199 13546 87199
100 745 100 745
698 76 698 76
20 9 20 9
69876 2009 69876 2009
718 85 718 85
1354687199 698762009 1354687199 698762009
205 34 205 34
492 8 492 8
20534 49208 20534 49208
697 42 697 42
92773628522335974823 1354687199698762009 92773628522335974823 1354687199698762009
941 28 941 28
315 72 315 72
94128 31572 94128 31572
125 700 125 700
203 47 203 47
368 32 368 32
20347 36832 20347 36832
571 79 571 79
9412831572 2034736832 9412831572 2034736832
114 475 114 475
684 4 684 4
114475 68404 114475 68404
182 879 182 879
10 61 10 61
469 76 469 76
801 87 801 87
46976 80187 46976 80187
127 163 127 163
429 81 429 81
669 3 669 3
42981 66903 42981 66903
109 884 109 884
4697680187 4298166903 4697680187 4298166903
899 58 899 58
470 90 470 90
89958 47090 89958 47090
137 48 137 48
427 69 427 69
42769 318 42769 318
430 87 430 87
581 86 581 86
48 60 48 60
58186 4860 58186 4860
630 46 630 46
4276900318 581864860 4276900318 581864860
485 87 485 87
651 78 651 78
48587 65178 48587 65178
113 765 113 765
46976801874298166903 4276900318581864860 46976801874298166903 4276900318581864860
512 53 512 53
702 19 702 19
51253 70219 51253 70219
121 472 121 472
288 0 288 0
317 63 317 63
28800 31763 28800 31763
605 63 605 63
5125370219 2880031763 5125370219 2880031763
800 54 800 54
19 82 19 82
80054 1982 80054 1982
820 36 820 36
508 53 508 53
753 88 753 88
50853 75388 50853 75388
126 241 126 241
281 19 281 19
46 56 46 56
28119 4656 28119 4656
327 75 327 75
5085375388 281194656 5085375388 281194656
536 65 536 65
700 44 700 44
53665 70044 53665 70044
123 709 123 709
994 64 994 64
10 58 10 58
336 49 336 49
99464 33649 99464 33649
133 113 133 113
60 84 60 84
6084 96 6084 96
61 80 61 80
9946433649 6084096 9946433649 6084096
995 25 995 25
10 20 10 20
177 45 177 45
99525 17745 99525 17745
117 270 117 270
5085375388281194656 9946433649006084096 5085375388281194656 9946433649006084096
150 31 150 31
809 3 809 3
15031 80903 15031 80903
959 34 959 34
728 72 728 72
787 52 787 52
72872 78752 72872 78752
151 624 151 624
1503180903 7287278752 1503180903 7287278752
879 4 879 4
596 55 596 55
87904 59655 87904 59655
147 559 147 559
469768018742981669034276900318581864860 50853753882811946569946433649006084096 469768018742981669034276900318581864860 50853753882811946569946433649006084096
520 62 520 62
177 26 177 26
52062 17726 52062 17726
697 88 697 88
257 93 257 93
615 60 615 60
25793 61560 25793 61560
873 53 873 53
5206217726 2579361560 5206217726 2579361560
778 55 778 55
792 86 792 86
77855 79286 77855 79286
157 141 157 141
422 33 422 33
339 67 339 67
42233 33967 42233 33967
762 0 762 0
587 94 587 94
89 56 89 56
58794 8956 58794 8956
677 50 677 50
4223333967 587948956 4223333967 587948956
481 12 481 12
829 23 829 23
48112 82923 48112 82923
131 35 131 35
52062177262579361560 4223333967587948956 52062177262579361560 4223333967587948956
562 85 562 85
511 23 511 23
56285 51123 56285 51123
107 408 107 408
167 31 167 31
16731 516 16731 516
172 47 172 47
5628551123 167310516 5628551123 167310516
579 58 579 58
616 39 616 39
57958 61639 57958 61639
119 597 119 597
134078079299425970995740249982058461274793658205923933777235614437217640300735 46976801874298166903427690031858186486050853753882811946569946433649006084096 134078079299425970995740249982058461274793658205923933777235614437217640300735 46976801874298166903427690031858186486050853753882811946569946433649006084096
181 5 181 5
488 11 488 11
18105 48811 18105 48811
669 16 669 16
737 24 737 24
137 89 137 89
73724 13789 73724 13789
875 13 875 13
1810548811 7372413789 1810548811 7372413789
918 29 918 29
626 0 626 0
91829 62600 91829 62600
154 429 154 429
916 79 916 79
400 13 400 13
91679 40013 91679 40013
131 692 131 692
916 64 916 64
77 60 77 60
91664 7760 91664 7760
994 24 994 24
10 18 10 18
9167940013 916647760 9167940013 916647760
100 845 100 845
877 73 877 73
100845 87773 100845 87773
188 618 188 618
18105488117372413789 9167940013916647760 18105488117372413789 9167940013916647760
272 73 272 73
428 13 428 13
27273 42813 27273 42813
700 86 700 86
128 90 128 90
615 49 615 49
12890 61549 12890 61549
744 39 744 39
2727342813 1289061549 2727342813 1289061549
401 64 401 64
43 62 43 62
40164 4362 40164 4362
445 26 445 26
844 51 844 51
195 98 195 98
84451 19598 84451 19598
104 49 104 49
674 57 674 57
23 80 23 80
67457 2380 67457 2380
698 37 698 37
8445119598 674572380 8445119598 674572380
911 96 911 96
10 7 10 7
919 78 919 78
91196 91978 91196 91978
183 174 183 174
556 8 556 8
708 66 708 66
55608 70866 55608 70866
126 474 126 474
646 38 646 38
48 31 48 31
64638 4831 64638 4831
694 69 694 69
5560870866 646384831 5560870866 646384831
620 72 620 72
556 97 556 97
62072 55697 62072 55697
117 769 117 769
84451195980674572380 5560870866646384831 84451195980674572380 5560870866646384831
900 12 900 12
66 84 66 84
90012 6684 90012 6684
966 96 966 96
10 62 10 62
732 9 732 9
572 11 572 11
73209 57211 73209 57211
130 420 130 420
9001206684 7320957211 9001206684 7320957211
163 221 163 221
638 95 638 95
163221 63895 163221 63895
227 116 227 116
181054881173724137899167940013916647760 844511959806745723805560870866646384831 181054881173724137899167940013916647760 844511959806745723805560870866646384831
102 55 102 55
668 40 668 40
10255 66840 10255 66840
770 95 770 95
980 46 980 46
10 26 10 26
986 17 986 17
10 3 10 3
98046 98617 98046 98617
196 663 196 663
1025566840 9804698617 1025566840 9804698617
108 302 108 302
654 57 654 57
108302 65457 108302 65457
173 759 173 759
472 88 472 88
108 80 108 80
47288 10880 47288 10880
581 68 581 68
563 3 563 3
25 91 25 91
56303 2591 56303 2591
588 94 588 94
4728810880 563032591 4728810880 563032591
529 18 529 18
434 71 434 71
52918 43471 52918 43471
963 89 963 89
10 52 10 52
10255668409804698617 4728810880563032591 10255668409804698617 4728810880563032591
149 84 149 84
479 29 479 29
14984 47929 14984 47929
629 13 629 13
367 73 367 73
12 8 12 8
36773 1208 36773 1208
379 81 379 81
1498447929 367731208 1498447929 367731208
186 61 186 61
791 37 791 37
18661 79137 18661 79137
977 98 977 98
10 75 10 75
179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216
The correct answer is 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216 you moron.


When I remove the dialog yours takes 0.0110027024397s. One thing though is to check no basic errors are causing it to give up early and resort to naive multiplication. Mind you, python actually uses the karatsuba algorithm as its multiplication function.


----------



## CheesecakeCuber (Aug 10, 2013)

5BLD said:


> -ljust doesn't work when you've already got 0s on the end.
> >>> "80".ljust(2,"0")
> '80'
> >>> "8".ljust(2,"0")
> '80'



I think et does:

Proof


Spoiler



n = str(80)
n.ljust(4,'0')
#prints '8000'
#So mebbe I made a mistake, but the 4 there is the width of string _after_ ljust is used.



Edit1: Ok so I fixed my code and then looked at your modified ver. and it looks more or less correct. I just haff one problem. Nao, the answers are not being printed out on screen. The program appears to be running correctly: It is printing my "calculating line" and recursion appears to be occurring. But, terminal (mac) will then print:

Exit status: 0 
logout

[Process completed]
----------------------------------
I believe exit status of zero is good right? And the program supposedly ran without any errors.

Anyway here is the code, but I will still continue to hack at it and try to find my mistake:



Spoiler



import time
import math

#Karatsuba alg is cool

def splitString(string,number):
#Converts "string" variable input to string then splits for Karatsuba
 string = str(string)
return [string[0:len(string)-number], string[len(string)-number:len(string)]]

def karatsubaMulti(x,y):
#Where "x" and "y" are your factors
return "Donut worry, calculations are being performed..."
minLength = min(len(str(x))/2,len(str(y))/2)
if int(minLength) <= 1:
#Does naive alg
return x*y
else:
a = int(splitString(x,minLength)[0])
b = int(splitString(x,minLength)[1])
c = int(splitString(y,minLength)[0])
d = int(splitString(y,minLength)[1])
coefficient1 = str(karatsubaMulti(a,c))
coefficient2 = str(karatsubaMulti(b,d))
try:
answer = karatsubaMulti((a + b),(c + d)) - int(coefficient1) - int(coefficient2)
except:
answer = (a + b)*(c + d) - int(coefficient1) - int(coefficient2)
return coefficient1.ljust(int(2*minLength) + int(len(answer)),'0') + answer.ljust(int(minLength) + int(len(answer)),'0') + coefficient2

sOne,sTwo = 1234,5678
answer = karatsubaMulti(sOne,sTwo)
print str(answer)


----------



## 5BLD (Aug 10, 2013)

Put a raw_input() at the end to prevent your program from quitting
I'll run your program later though and check.

edit:
>>return "Donut worry, calculations are being performed..."

lol I think you know what you've done



Spoiler



should be print "Donut.." otherwise your program just returns "Donut worry..." as your answer and skips the rest of the alg.



Also sorry to say but your program doesn't work. Because


Spoiler



-answer should be a string
-you are concatenating strings, not ints:
coefficient1.ljust(int(2*minLength),'0') + answer.ljust(int(minLength),'0') + coefficient2

after fixing these I got it to work again.


----------



## CheesecakeCuber (Aug 10, 2013)

Thanks so much for all your help with my stoopid questions, Alex. 

Edit: I swear to God, I think my code is trying to spite me. Now it says that the product is a noneType...and I've already checked for problems with my variables.



Spoiler



import time
import math

#Karatsuba alg is cool

def splitString(string,number):
#Converts "string" variable input to string then splits for Karatsuba
string = str(string)
return [string[0:len(string)-number], string[len(string)-number:len(string)]]

def karatsubaMulti(x,y):
#Where "x" and "y" are your factors
print "Donut worry, calculations are being performed..."
minLength = min(len(str(x))/2,len(str(y))/2)
if int(minLength) <= 1:
#Does naive alg
return x*y
else:
a = int(splitString(x,minLength)[0])
b = int(splitString(x,minLength)[1])
c = int(splitString(y,minLength)[0])
d = int(splitString(y,minLength)[1])
coefficient1 = int(karatsubaMulti(a,c))
coefficient2 = int(karatsubaMulti(b,d))
try:
answer = (karatsubaMulti((a + b),(c + d)) - int(coefficient1) - int(coefficient2))
except:
answer = ((a + b)*(c + d) - int(coefficient1) - int(coefficient2))
return coefficient1.ljust(str(2*minLength) + str(len(answer)),'0') + answer.ljust(str(minLength) + str(len(answer)),'0') + coefficient2
ta,tb = 1234,5678
print "We will be multiplying " + str(ta) + " and " + str(tb) + "."
testAnswer = karatsubaMulti(ta,tb)
print "The product is " + str(testAnswer)
time.sleep(15)


----------



## 5BLD (Aug 10, 2013)

Only two mistakes:


Spoiler: You do have problems with your variables



your coefficients (including 'answer') should be strings because you're ljusting them. Also watch out. Don't add strings to get the answer cuz thats concatenating. (aka 123+ 456= 123456)

You're ljusting to 2*minLength+len *answer*. You know what it should be, I hope 





Spoiler: fixed



import time
import math
import random
#Karatsuba alg is cool

def splitString(string,number):
#Converts "string" variable input to string then splits for Karatsuba
string = str(string)
return [string[0:len(string)-number], string[len(string)-number:len(string)]]

def karatsubaMulti(x,y):
#Where "x" and "y" are your factors
minLength = min(len(str(x))/2,len(str(y))/2)
if int(minLength) <= 1:
#Does naive alg
return x*y
else:
a = int(splitString(x,minLength)[0])
b = int(splitString(x,minLength)[1])
c = int(splitString(y,minLength)[0])
d = int(splitString(y,minLength)[1])
coefficient1 = str(karatsubaMulti(a,c))
coefficient2 = str(karatsubaMulti(b,d))
try:
answer = str((karatsubaMulti((a + b),(c + d)) - int(coefficient1) - int(coefficient2)))
except:
answer = str(((a + b)*(c + d) - int(coefficient1) - int(coefficient2)))
return int(coefficient1.ljust((int(2*minLength)) + (len(coefficient1)),'0')) + int(answer.ljust(int(minLength) + int(len(answer)),'0')) + int(coefficient2)

k=0
##test 12000 times for errors
for awsiuhfds in range(0,1200):
ta,tb = random.randint(220,20000000),random.randint(220,20000000)
if karatsubaMulti(ta,tb)==ta*tb:
k=k+1
pass
else:
print karatsubaMulti(ta,tb)
print ta*tb
print "----"
raw_input(str(k)+" successes out of 1200.")


----------



## CheesecakeCuber (Aug 10, 2013)

5BLD said:


> Only two mistakes:
> 
> 
> Spoiler: You do have problems with your variables
> ...



OMG, I'm so stoopid. Thanks Alex. I really appreciate all your help through my tedious project. I hope I didn't annoy you with my trivial questions.


----------



## 5BLD (Aug 10, 2013)

CheesecakeCuber said:


> OMG, I'm so stoopid. Thanks Alex. I really appreciate all your help through my tedious project. I hope I didn't annoy you with my trivial questions.



No problem. Next challenge is to implement the Toom-Cook algorithm!
Or even Shonhage-Strassen which still makes no sense to me, even after learning about the FFT and making pony graphs with it.


----------



## CheesecakeCuber (Aug 10, 2013)

I hate my computer...It is now giving me noneType's AGAIN...



Spoiler



import time
import math
import random
#Karatsuba alg is cool

def splitString(string,number):
#Converts "string" variable input to string then splits for Karatsuba
string = str(string)
return [string[0:len(string)-number], string[len(string)-number:len(string)]]

def karatsubaMulti(x,y):
#Where "x" and "y" are your factors
print "Donut worry, calculating..."
minLength = min(len(str(x))/2,len(str(y))/2)
if int(minLength) <= 1:
#Does naive alg
return x*y
else:
a = int(splitString(x,minLength)[0])
b = int(splitString(x,minLength)[1])
c = int(splitString(y,minLength)[0])
d = int(splitString(y,minLength)[1])
coefficient1 = str(karatsubaMulti(a,c))
coefficient2 = str(karatsubaMulti(b,d))
try:
answer = str((karatsubaMulti((a + b),(c + d)) - int(coefficient1) - int(coefficient2)))
except:
answer = str(((a + b)*(c + d) - int(coefficient1) - int(coefficient2)))
return int(coefficient1.ljust((int(2*minLength)) + (len(coefficient1)),'0')) + int(answer.ljust(int(minLength) + int(len(answer)),'0')) + int(coefficient2)

testAnswer = str(karatsubaMulti(1234,5678))
print "The product of 1234 and 5678 is " + testAnswer
print "Lol no dummy, it's " + str(1234*5678)


----------



## 5BLD (Aug 10, 2013)

What python version? Your printing algorithm will have to be different if it's python 3. Otherwise, it works perfectly on my computer.

Edit:
also your program is naiving two digit numbers. turn *if int(minLength) <= 1:* into *if int(minLength) < 1:* and you'll be ok.
Of course this isn't the cause for your nonetypes...


----------



## CheesecakeCuber (Aug 10, 2013)

python 2.7.4



Spoiler



import time
import math
import random
#Karatsuba alg is cool

def splitString(string,number):
#Converts "string" variable input to string then splits for Karatsuba
string = str(string)
return [string[0:len(string)-number], string[len(string)-number:len(string)]]

def karatsubaMulti(x,y):
#Where "x" and "y" are your factors
print "Donut worry, calculating..."
minLength = min(len(str(x))/2,len(str(y))/2)
if int(minLength) == 1:
#Does naive alg
return x*y
else:
a = int(splitString(x,minLength)[0])
b = int(splitString(x,minLength)[1])
c = int(splitString(y,minLength)[0])
d = int(splitString(y,minLength)[1])
coefficient1 = str(karatsubaMulti(a,c))
coefficient2 = str(karatsubaMulti(b,d))
try:
answer = str(karatsubaMulti((a + b),(c + d)) - int(coefficient1) - int(coefficient2))
except:
answer = str((a + b)*(c + d) - int(coefficient1) - int(coefficient2))
return int(coefficient1.ljust(int(2*minLength)) + len(coefficient1),'0') + int(answer.ljust(int(minLength) + int(len(answer)),'0')) + int(coefficient2)

print "Multiply 567 and 459, class"
testAnswer = str(karatsubaMulti(567,459))
print "The product is " + testAnswer
print "Lol no dummy, it's " + str(567*459)



Hm, it now appears to be working, but only up to 3 digit numbers aka:999. karatsubaMulti(1000,1000) returns: "The product is None."

Edit: I at first thought my issues were because of my method of zero padding. But I commented out my ljust line and substituted with your multiplying by 10 method. But this did not resolve the error.

Edit2: Aha! So I went back and read my code after a good night's rest and I found a parentheses missing! Hopefully this will solve my issue. I think it will. Finally my alg has a chance at working

Edit3: Lol I just read your post and I saw my mistake that you found. Truly, thanks for putting up with my dumb questions and mistakes. It means a lot. Now, onto Toom-cook!


----------



## 5BLD (Aug 11, 2013)

Spoiler: Here's your mistake



import time
import math
import random
#Karatsuba alg is cool

def splitString(string,number):
#Converts "string" variable input to string then splits for Karatsuba
string = str(string)
return [string[0:len(string)-number], string[len(string)-number:len(string)]]

def karatsubaMulti(x,y):
#Where "x" and "y" are your factors
print "Donut worry, calculating..."
minLength = min(len(str(x))/2,len(str(y))/2)
if int(minLength) == 1:
#Does naive alg
return x*y
else:
a = int(splitString(x,minLength)[0])
b = int(splitString(x,minLength)[1])
c = int(splitString(y,minLength)[0])
d = int(splitString(y,minLength)[1])
coefficient1 = str(karatsubaMulti(a,c))
coefficient2 = str(karatsubaMulti(b,d))
try:
answer = str(karatsubaMulti((a + b),(c + d)) - int(coefficient1) - int(coefficient2))
except:
answer = str((a + b)*(c + d) - int(coefficient1) - int(coefficient2))
return int(coefficient1.ljust(int(2*minLength)*)* + len(coefficient1),'0')*)* + int(answer.ljust(int(minLength) + int(len(answer)),'0')) + int(coefficient2)

print "Multiply 567 and 459, class"
testAnswer = str(karatsubaMulti(567,459))
print "The product is " + testAnswer
print "Lol no dummy, it's " + str(567*459)


----------



## brandbest1 (Sep 2, 2013)

Does anyone know where I can learn group theory? I know it's probably difficult and way beyond my level of mathematics, but I just want to try and learn about it because it seems very fascinating.


----------



## IQubic (Sep 2, 2013)

Since this is mostly a Cube Forum, I would like to see something on the mathematics of the Cube.


----------



## CheesecakeCuber (Sep 3, 2013)

brandbest1 said:


> Does anyone know where I can learn group theory? I know it's probably difficult and way beyond my level of mathematics, but I just want to try and learn about it because it seems very fascinating.



For more cube related stuff, mebbe the Cube Theory part of the forum. For just general group theory wiki is always good to start.


----------



## brandbest1 (Sep 5, 2013)

CheesecakeCuber said:


> For more cube related stuff, mebbe the Cube Theory part of the forum. For just general group theory wiki is always good to start.



Do you have a specific link to learn general group theory?


----------



## CheesecakeCuber (Sep 5, 2013)

brandbest1 said:


> Do you have a specific link to learn general group theory?




https://www.google.com/search?q=group+theory&ie=UTF-8&oe=UTF-8&hl=en&client=safari

The wiki gives some types of group theory, but I wouldn't rely on it for anything more than quick info and links. Wolfram mite help you moar


----------



## CheesecakeCuber (Sep 9, 2013)

Okso, can somewon esplain the diff between toom-cook and toom-3? From wat i understand, they're the same thing right? Becuz k=3?


----------



## Stefan (Sep 9, 2013)

CheesecakeCuber said:


> Okso, can somewon esplain the diff between toom-cook and toom-3? From wat i understand, they're the same thing right? Becuz k=3?



First two paragraphs?


----------



## CheesecakeCuber (Sep 9, 2013)

Stefan said:


> First two paragraphs?



Wow, I'm stoopid. Thanks for not bashing my stoopidity, stefan. Noah was rite abut you


----------



## 5BLD (Sep 9, 2013)

CheesecakeCuber said:


> Wow, I'm stoopid. Thanks for not bashing my stoopidity, stefan. Noah was rite abut you



Lel
Good luck trying to do toomcook, you have to work out how to pointwise interpolate efficiently...


----------



## CheesecakeCuber (Sep 9, 2013)

5BLD said:


> Lel
> Good luck trying to do toomcook, you have to work out how to pointwise interpolate efficiently...



 yea...twill be furn tho, when I can akchually compute successfully. It'll be liek when you helped me with Karatsuba. Karatsuba seems so simple nao. I even wrote a zero padding function, that, to my knoledge, werks. Just needs to be formatted since my keyboards stoopid...



Spoiler



def zeroPad(s,n):
s = int(s)
return string(10**n)
#I've tested et and et werks, but I'm not shure abut efficiency...


----------



## 5BLD (Sep 9, 2013)

CheesecakeCuber said:


> yea...twill be furn tho, when I can akchually compute successfully. It'll be liek when you helped me with Karatsuba. Karatsuba seems so simple nao. I even wrote a zero padding function, that, to my knoledge, werks. Just needs to be formatted since my keyboards stoopid...
> 
> 
> 
> ...



I'm not sure if the exponential function you're using is efficient because you're relying on the built in one. The way I did zero padding was to simply add zeros on the end. Then again it may already be built in that multiplying by 10== adding zeroes.

Also I haven't found an interpolation method yet thats efficient enough to exceed naive multiplication.


----------



## CheesecakeCuber (Sep 9, 2013)

5BLD said:


> I'm not sure if the exponential function you're using is efficient because you're relying on the built in one. *The way I did zero padding was to simply add zeros on the end*. Then again it may already be built in that multiplying by 10== adding zeroes.
> 
> Also I haven't found an interpolation method yet thats efficient enough to exceed naive multiplication.



Hm, intristing, how'd you do that? My first try had been the ljust fund, but that seemed to be too tedious to count teh len of the number after padding.

Also, off track here, in my Alg 2 class, there's a 7th grader named Alex  At furst, I didnut kno who he was, and thot mebbe you transferred from le UK lol


----------



## 5BLD (Sep 9, 2013)

CheesecakeCuber said:


> Hm, intristing, how'd you do that? My first try had been the ljust fund, but that seemed to be too tedious to count teh len of the number after padding.
> 
> Also, off track here, in my Alg 2 class, there's a 7th grader named Alex  At furst, I didnut kno who he was, and thot mebbe you transferred from le UK lol



Transferred from the UK? 7th grade? Why I never.
lol jk

Um yeah so the z.nfill thing works (a few pages back i used it)


----------



## CheesecakeCuber (Sep 10, 2013)

5BLD said:


> Transferred from the UK? 7th grade? Why I never.
> lol jk
> 
> Um yeah so the z.nfill thing works (a few pages back i used it)



But I thot zfill was only for adding zeroes on the left, unless you combined it with sumthing annoying like ljust...or are you talking bout sumthing else?


----------



## 5BLD (Sep 10, 2013)

CheesecakeCuber said:


> But I thot zfill was only for adding zeroes on the left, unless you combined it with sumthing annoying like ljust...or are you talking bout sumthing else?



Add your number, then "" padded with zeroes.


----------



## CheesecakeCuber (Sep 10, 2013)

5BLD said:


> Add your number, then "" padded with zeroes.



I'm sorry?


----------



## ben1996123 (Sep 10, 2013)

number+"".zfill(howmutchzerós)
number+"0000000"


----------



## CheesecakeCuber (Sep 10, 2013)

ben1996123 said:


> number+"".zfill(howmutchzerós)
> number+"0000000"



Ahh, I see. Thanks ben


----------



## ben1996123 (Sep 13, 2013)

hearce a question that i'm trying to do but cantdooeet yet because ittuce wery hard (or maby i'm being stoopd)







that is a squaer. find α


----------



## 5BLD (Sep 13, 2013)

ben1996123 said:


> hearce a question that i'm trying to do but cantdooeet yet because ittuce wery hard (or maby i'm being stoopd)
> 
> 
> 
> ...



Okso did you get arccosA+arccosB+arccosC=2pi and get stuck there


----------



## ben1996123 (Sep 13, 2013)

5BLD said:


> Okso did you get arccosA+arccosB+arccosC=2pi and get stuck there



noterly, go on skype or fekbuk


----------



## 5BLD (Sep 13, 2013)

ben1996123 said:


> noterly, go on skype or fekbuk



Okso f*** this problem is hard
I might make a program to guess the answer
Also I can't solve equations of the form Sigma arccos fx but maybe you can

edit: sidelength is:


Spoiler



x = sqrt(5+2 sqrt(2))


edit: therefore the angle is:


Spoiler



3pi/4 rad or 135 deg


----------



## ben1996123 (Sep 13, 2013)

5BLD said:


> Okso f*** this problem is hard
> I might make a program to guess the answer
> Also I can't solve equations of the form Sigma arccos fx but maybe you can
> 
> ...



no ittuce not, sidelength is:


Spoiler



e


----------



## 5BLD (Sep 13, 2013)

ben1996123 said:


> no ittuce not, sidelength is:
> 
> 
> Spoiler
> ...



no its not


----------



## ben1996123 (Sep 13, 2013)

5BLD said:


> no its not



ok ittuce not

arek found d anser but wasnt sure if correct because used a guessing program but i prufed it now anywae



Spoiler: anser



ittuce 3pi/4rad or 135deg





Spoiler: pruf



let the side length of the square be k and the point where the 3 lines cross be (x,y), then:

\( x^2+y^2=4 \)

\( x^2+(y-k)^2=1 \)

\( (x-k)^2+y^2=9 \)

\( (x-k)^2+(y-k)^2=6 \)

\( x^2-2kx+k^2+y^2-2ky+k^2=6 \)

\( -2kx+2k^2-2ky=2 \)

\( -kx+k^2-ky=1 \)

\( k^2=1+kx+ky \)



\( x^2+(y-k)^2=1 \)

\( x^2+y^2-2ky+k^2=1 \)

\( 4-2ky+k^2=1 \)

\( k^2-2ky+3=0 \)

\( k=y+\sqrt{y^2-3} \)



\( (x-k)^2+y^2=9 \)

\( x^2-2kx+k^2+y^2=9 \)

\( 4-2kx+k^2=9 \)

\( k^2-2kx-5=0 \)

\( k=x+\sqrt{x^2+5} \)



\( k^2=2ky-3=1+kx+ky \)

\( ky-3=1+kx \)

\( y-x=\frac{4}{k} \)



\( x+\sqrt{x^2+5}=y+\sqrt{y^2-3} \)

\( y^2=4-x^2 \)

\( x+\sqrt{x^2+5}=y+\sqrt{1-x^2} \)

\( y-x=\sqrt{x^2+5}-\sqrt{1-x^2} \)

\( \frac{4}{k}=\sqrt{x^2+5}-\sqrt{1-x^2} \)

\( \frac{4}{x+\sqrt{x^2+5}}=\sqrt{x^2+5}-\sqrt{1-x^2} \)

\( \text{insert boring algebra here} \)

\( x=\sqrt{\frac{2}{17}(5-\sqrt{8})} \)

\( k=\sqrt{5+\sqrt{8}} \)

\( \text{use cosine rule on the triangle with }\alpha\text{ in it} \)

\( k^2=5-4cos(\alpha) \)

\( 5+\sqrt{8}=5-4cos(\alpha) \)

\( cos(\alpha)=-\frac{\sqrt{2}}{2} \)

\( \alpha=\frac{3\pi}{4} \)


----------



## brandbest1 (Sep 15, 2013)

Good math research topics for a 10th grader that pretty much has basic knowledge of calculus? I have to write a research paper about something and I came up with these ideas:
-Mandelbrot set/Fractals
-Diophantine Equations
-Fibonacci Numbers and Related Sequences
-Graph Theory
-Algorithms (i saw the above posts and became quite interested in them, but not sure where to start)

Any other ideas would be appreciated.


----------



## CheesecakeCuber (Sep 15, 2013)

brandbest1 said:


> Good math research topics for a 10th grader that pretty much has basic knowledge of calculus? I have to write a research paper about something and I came up with these ideas:
> -Mandelbrot set/Fractals
> -Diophantine Equations
> -Fibonacci Numbers and Related Sequences
> ...



Algos as in fast multiplication? Would your paper need to have some kind of relation to Calc? If so, not sure if algos would be the best topic. (Basic algorithms)


----------



## brandbest1 (Sep 15, 2013)

CheesecakeCuber said:


> Algos as in fast multiplication? Would your paper need to have some kind of relation to Calc? If so, not sure if algos would be the best topic. (Basic algorithms)



The paper doesn't have to be related to Calculus, I mean I am only in an Algebra 2/Trigonometry class but I do know Calculus. And currently I don't have much knowledge about Algorithms (other than cubing lol) but I would assume so, as well as wherever algorithms are used in math. Could you give me some sources for it?

And sources for other topics? I'm a bit worried that I won't be able to pick up Algorithms that well.


----------



## CheesecakeCuber (Sep 15, 2013)

brandbest1 said:


> The paper doesn't have to be related to Calculus, I mean I am only in an Algebra 2/Trigonometry class but I do know Calculus. And currently I don't have much knowledge about Algorithms (other than cubing lol) but I would assume so, as well as wherever algorithms are used in math. Could you give me some sources for it?
> 
> And sources for other topics? I'm a bit worried that I won't be able to pick up Algorithms that well.



O how cool. Someone also like maff algorithms  

What I would do with the paper (if you settle on algs), is first propose the concept of improving the time to carry out multiplication, go into time complexity of the naive alg (what we learned in school :3), then go on to speak about some of the more basic algs: Karatsuba, Toom-3, discuss their time complexities, and maybe do a small bit about Schonhage-Strassen with FFT just to show that there are more advanced methods.

For karatsuba:
Well, after Alex helped me with my Karatsuba project, I made a thread in the Off Topic Forum here, explaining as simply as I could, to the best of my knowledge, the Karatsuba algorithm. 
Linky: http://www.speedsolving.com/forum/showthread.php?43850-Karatsuba-Algorithm-Example
For Toom-Cook use wikipedia and the net

If you have any questions, just post it here and I'm sure someone will rep


----------



## brandbest1 (Sep 15, 2013)

CheesecakeCuber said:


> O how cool. Someone also like maff algorithms
> 
> What I would do with the paper (if you settle on algs), is first propose the concept of improving the time to carry out multiplication, go into time complexity of the naive alg (what we learned in school :3), then go on to speak about some of the more basic algs: Karatsuba, Toom-3, discuss their time complexities, and maybe do a small bit about Schonhage-Strassen with FFT just to show that there are more advanced methods.
> 
> ...



Wow, thanks for all the info! Although there definitely should be a section which introduces the concept of the general algorithm.

Do you have any other ideas or comments about the other ideas?


----------



## CheesecakeCuber (Sep 15, 2013)

brandbest1 said:


> Wow, thanks for all the info! Although there definitely should be a section which introduces the concept of the general algorithm.
> 
> Do you have any other ideas or comments about the other ideas?



Oh, np! Also, don't forget to discuss recursion! And you could also, if you know any coding languages (like python, perl, C), include some sample code, just don't completely copy mine if you don't understand tho. Pseudo Code could also be a good alt. if you don't know any languages. 

Now, on the other ideas, Fractals and Fibonacci are cool, but a lot of people seem to gravitate towards them. tWould help if you listed some criteria for the paper. Like a rubric?

Also, project euler: pronounced oiler (just google it) is good for finding interesting math subjects, like pascal triangles, stuff on factorial properties, etc


----------



## 5BLD (Sep 15, 2013)

Cheesecake cuber have you done toom cook now? Also project euler will keep you up for dozens of hours


----------



## CheesecakeCuber (Sep 15, 2013)

5BLD said:


> Cheesecake cuber have you done toom cook now? Also project euler will keep you up for dozens of hours



No cuz school :'(. l still don't have enough knowledge of the alg, which is the mistake I made when taking on Karatsuba. I basically just went in blind other than some light reading. 

I may have to implore your majestic math skillz once more '

And yes, Project Euler....o my is it interesting.


----------



## brandbest1 (Sep 15, 2013)

CheesecakeCuber said:


> Oh, np! Also, don't forget to discuss recursion! And you could also, if you know any coding languages (like python, perl, C), include some sample code, just don't completely copy mine if you don't understand tho. Pseudo Code could also be a good alt. if you don't know any languages.
> 
> Now, on the other ideas, Fractals and Fibonacci are cool, but a lot of people seem to gravitate towards them. tWould help if you listed some criteria for the paper. Like a rubric?
> 
> Also, project euler: pronounced oiler (just google it) is good for finding interesting math subjects, like pascal triangles, stuff on factorial properties, etc



Yep, I know python so I will try and make some code for them if I use Algorithms for the paper.

I currently don't have a rubric because this wasn't assigned yet, but our teacher already said we have to do this, so I'm currently just brainstorming.


----------



## CheesecakeCuber (Sep 15, 2013)

brandbest1 said:


> Yep, I know python so I will try and make some code for them if I use Algorithms for the paper.
> 
> I currently don't have a rubric because this wasn't assigned yet, but our teacher already said we have to do this, so I'm currently just brainstorming.



Hm, being proactive is good. Bette than my ridic procrastination  Yeah I implemented Karatsuba in python. Have you looked at it? I just added the new zPad func that Alex suggested.


----------



## brandbest1 (Sep 15, 2013)

CheesecakeCuber said:


> Hm, being proactive is good. Bette than my ridic procrastination  Yeah I implemented Karatsuba in python. Have you looked at it? I just added the new zPad func that Alex suggested.



Yep, I saw it, although I am not that pro at Python so I don't know what some of the functions do lol.


----------



## CheesecakeCuber (Sep 15, 2013)

brandbest1 said:


> Yep, I saw it, although I am not that pro at Python so I don't know what some of the functions do lol.



Heh, I was really a nub, (still am ofc) before Alex helped meh. Either post your questions here or on the Karatsuba thread and I'll explain. Or pm me I guess...


----------



## CheesecakeCuber (Sep 16, 2013)

Okeh, Good Will Hunting problem. It's easy but fun and I got it from numberphile:

Draw all homeomorphically irreducible trees of size n=10.

If nobody posts an answer, I will post the solution in a spoiler later when I'm back at my computer.


----------



## Ickathu (Sep 16, 2013)

Okay, so here's a tricky one:
A sphere with radius 3 is inscribed in a frustum of slant height 10. What is the volume of the frustum? (A frustum is the non-conical region formed by cutting a cone with a plane parallel to its base).
I've tried a lot of things. It should be able to be solved with out calculus. Can anybody help? And please explain your solution too, don't just give an answer (I've already got the answer, but I don't know how to calculate it)


----------



## ben1996123 (Sep 16, 2013)

Ickathu said:


> Okay, so here's a tricky one:
> A sphere with radius 3 is inscribed in a frustum of slant height 10. What is the volume of the frustum? (A frustum is the non-conical region formed by cutting a cone with a plane parallel to its base).
> I've tried a lot of things. It should be able to be solved with out calculus. Can anybody help? And please explain your solution too, don't just give an answer (I've already got the answer, but I don't know how to calculate it)



tell me d answer in a spoiler csch I did it but it seems too easy to be correct


----------



## Ickathu (Sep 16, 2013)

ben1996123 said:


> tell me d answer in a spoiler csch I did it but it seems too easy to be correct





Spoiler



182pi


----------



## CheesecakeCuber (Sep 16, 2013)

ben1996123 said:


> tell me d answer in a spoiler csch I did it but it seems too easy to be correct



Lol ben I thought you meant mine. Cuz its very easy.


----------



## KongShou (Sep 16, 2013)

can i just add that project euler is awesome, how have i not found it earlier?


----------



## KongShou (Sep 16, 2013)

for problem 1 on project euler is it broken?
cos i got 234168 twice in two different ways but apparently its still not right
anyone else got the right answer?

btw
method 1:
3*167*333+5*201*100-15*67*33

method 2:
python

number = 1
mysum = 0

for i in range(1000):

if number%3 == 0:
mysum = mysum + number
elif (number%5 == 0) and (number%3 != 0):
mysum = mysum + number
number = number + 1
print mysum


----------



## ben1996123 (Sep 16, 2013)

KongShou said:


> for problem 1 on project euler is it broken?
> cos i got 234168 twice in two different ways but apparently its still not right
> anyone else got the right answer?
> 
> ...



no, your just being silly



Ickathu said:


> Spoiler
> 
> 
> 
> 182pi



notsure if you meant



Spoiler



128pi


----------



## KongShou (Sep 16, 2013)

ben1996123 said:


> no, your just being silly
> 
> 
> 
> ...



well thank you sir

how helpful

edit: got it, its 233168, damn ur not supposed to count the 100 at the end. stupid(me)


----------



## ben1996123 (Sep 16, 2013)

KongShou said:


> damn ur not supposed to count the 100 at the end. stupid(me)



thats why your being silly csch it says "below 1000" in d question !!


----------



## KongShou (Sep 16, 2013)

ben1996123 said:


> thats why your being silly csch it says "below 1000" in d question !!



look, im sorry


----------



## ben1996123 (Sep 16, 2013)

KongShou said:


> look, im sorry



3q


----------



## Stefan (Sep 16, 2013)

KongShou said:


> number = 1
> mysum = 0
> 
> for i in range(1000):
> ...



sum(i for i in range(1000) if i%3<1 or i%5<1)


----------



## Ickathu (Sep 16, 2013)

ben1996123 said:


> notsure if you meant
> 
> 
> 
> ...



Nope. I got it now though.


Spoiler



So if you draw it 2 dimensionally, you've got an isosceles trapezoid (call it ABCD) with an inscribed circle (center O, radius r; we'll say points of tangent are w x y and z). So it looks almost like
....A..W..B....
..Z....O....X..
D......Y......C..
so we have AD=BC=10, ZA = AW = WB = BX = n and XC = CY = YD = DZ = m
then if we drop a perpendicular from A to CD (call the point E) we've got EY = AW = n, AE = 2r, DE = DY-EY = DY-n = m-n, and AD = m+n
so then with pythagorean theorem we get
(m+n)^2 = (m-n)^2 + (2r)^2
m^2+2mn+n^2 = m^2-2mn+n^2+4r^2
4mn=4r^2
(2m)(2n)=4r^2
(1/2)sqrt((2m)(2n)) = r
then, since we know r=3, this becomes
sqrt((2m)(2n))=6
(2m)(2n)=36
mn=9
Now we go back to the original problem. Draw it 2 dimensionally again and extend the trapezoid to form a triangle (i.e., the original cone before frustum-ization). Extend the top of the trapezoid and drop perpendiculars to D and C. Since the hypotenuse/slant height = 10, and we have a right triangle, that gives height 6 and length 8 (of the extended triangle bits on the side). Since half the base of the trapezoid (the big cone's radius - m) is going to be the top bit (8) plus half the top of the trapezoid (n),
we have m=8+n. Then we substitute (8+n)n=9
n^2+8n-9=0
(n-1)(n+9)=0
n=1
so m=9
then we can set up a ratio between the height of the whole cone (h) and the height of the smaller cone (the part on top of the trapezoid/frustum; call it s). Since the height of the trapezoid/frustum is 6 (inscribed sphere with radius 3), the height of the whole cone is s+6. So now we do a ratio --
m/n = (s+6)/(s)
9/1 = (s+6)/s
9s = s+6
8s=6
s=6/8=3/4
So total height is 27/4
then to find the volume of the frustum we find the volume of the big cone minus the volume of the small cone
V = ((1/3)(pi*9^2)(27/4)) - ((1/3)(pi*1^2)(3/4))
= (27*27pi/4) - (pi/4)
= 729pi-pi / 4
= 728 pi/4
= 182 pi


----------



## CheesecakeCuber (Sep 18, 2013)

Ok Alex, I started toom-3, but I'm stuck at the p(x) = a(x)b(x) part. My reference is saying that I want an equation of the form:

P(x) = p4x^4 + p3x^3 + p2x^2 + p1x + p0

I understand that part, but I'm lost after when I have to solve the linear equations for p4, p3, p2, p1, and p0, that I will add for the final answer.

How would I evaluate the equations in terms of Python because variables?

Do you think you could post some of your code as a ref for me? Thanks


----------



## 5BLD (Sep 19, 2013)

You have to do pointwise interpolation which I can't quite remember how to put into code. But I'm sure I can remember in a bit. Let's talk on skype so we can discover it together...


----------



## CheesecakeCuber (Sep 21, 2013)

Here's my Toom-Code so far:



Spoiler: Toom



import time
import math
import random

#Toom 3 is so cool

def splitString(string,number):
#splits da string
string = str(string)
return [string[0:len(string)-number],string[len(string)-number:len(string)]]

def toomMulti(num1,num2):
minLength = min(len(str(x))/3,len(str(y))/3)
if int(minLength) <= 1:
return num1*num2
else:
#Splitting step hrrr
s1 = int(splitString(num1,minLength)[0])
s2 = int(splitString(num1,minLength)[1])
s3 = int(splitString(num1,minLength)[2])
s4 = int(splitString(num2,minLength)[0])
s5 = int(splitString(num2,minLength)[1])
s6 = int(splitString(num2,minLength)[2])

#Points put into list
points = [-2,-1,0,1,2]

#Sub points in quadratic
answer1A = toomMulti(s1,points[0]**2) + toomMulti(s2,points[0]) + s3
answer1B = toomMulti(s4,points[0]**2) + toomMulti(s5,points[0]) + s6
answer2A = toomMulti(s1,points[1]**2) + toomMulti(s2,points[1]) + s3
answer2B = toomMulti(s4,points[1]**2) + toomMulti(s5,points[1]) + s6
answer3A = toomMulti(s1,points[2]**2) + toomMulti(s2,points[2]) + s3
answer3B = toomMulti(s4,points[2]**2) + toomMulti(s5,points[2]) + s6
answer4A = toomMulti(s1,points[3]**2) + toomMulti(s2,points[3]) + s3
answer4B = toomMulti(s4,points[3]**2) + toomMulti(s5,points[3]) + s6
answer5A = toomMulti(s1,points[4]**2) + toomMulti(s2,points[4]) + s3
answer5B = toomMulti(s4,points[4]**2) + toomMulti(s5,points[4]) + s6


----------



## 5BLD (Sep 29, 2013)

Sorry i haven't been able to reply, I'm still busy but I'd just like to point out your polynomial won't be that big, itll only be of order 4. Also try using infinity as one of the points.
Here's what I've cooked up.


Spoiler



a=1
b=2
c=3
d=4
e=5
f=6

def p1(x):
return a*x**2+b*x+c
def p2(x):
return d*x**2+e*x+f

#the huge polynomial will have coefs j,k,l,m,n

#points = [-2,-1,0,1,2]
product-2 = p1(-2)*p2(-2)
product-1 = p1(-1)*p2(-1)
product0 = p1(0)*p2(0)
product1 = p1(1)*p2(1)
product2 = p1(2)*p2(2)


now these products will be put into a matrix. then determinant is worked out then ill multiply it through to work out the huge polynomial.
I don't care anymore whether it's more efficient than naive this way now, because I suppose I can work out a better interpolation method in time.

edit: determinant of a 5x5 matrix. jeez um...
though it's good the determinant is being calculated beforehand.

edit2:
the determinant is 288.
this is the inverse matrix supposedly
0.042 -0.167 0.250 -0.167 0.042
-0.083 0.167 0.000 -0.167 0.083
-0.042 0.667 -1.250 0.667 -0.042
0.083 -0.667 0.000 0.667 -0.083
0.000 0.000 1.000 0.000 0.000


----------



## CheesecakeCuber (Sep 30, 2013)

5BLD said:


> Sorry i haven't been able to reply, I'm still busy but I'd just like to point out your polynomial won't be that big, itll only be of order 4. Also try using infinity as one of the points.
> Here's what I've cooked up.
> 
> 
> ...



Hm, that was really clever, putting the polynomial as a function. Also, I'm not completely sure what you mean about the matrices and products...sorry if I'm missing something.

And haha "COOKed"


----------



## ben1996123 (Sep 30, 2013)

5BLD said:


> Sorry i haven't been able to reply, I'm still busy but I'd just like to point out your polynomial won't be that big, itll only be of order 4. Also try using infinity as one of the points.
> Here's what I've cooked up.
> 
> 
> ...



dont be stoped and stop useing toom cook for 3 dijit multiplaxion. use it for rike 10000 digit multiplaxion


----------



## 5BLD (Sep 30, 2013)

ben1996123 said:


> dont be stoped and stop useing toom cook for 3 dijit multiplaxion. use it for rike 10000 digit multiplaxion



Okso ino but i cant physically check if huge digit calculations are correct and its a general pain
Also actually 288 is quite a small determinant

And cheesecakecuber, i am using a matrix to interpolate and solve the simultaneous equations. All I have to do is multiply the answers (of the p1(-2) * p2(-2) ) by the inverse matrix and sub in 10 into the huge polynomial. I suppose row operations is an option.

By the way, I intend to have the matrix only contain whole numbers and one row with infinity. Then multiply by the determinant later. I just haven't gotten round to doing the calculations as inversing matrices is agony for me.

If you don't understand matrices then you can try using normal methods for solving the simultaneous equations you're left with at the end.


----------



## CheesecakeCuber (Oct 1, 2013)

Okso I know how to solve this problem, but I'm too lazy to write out the formal proofs and stuff. Any help?



Spoiler: The Problem



For any triangle ABC with the midpoints of the sides P, Q, and R, prove that the perimeter of triangle PQR is one half the perimeter of triangle ABC.


----------



## ben1996123 (Oct 1, 2013)

Spoiler: pruf










d big triangle and the one at one at the top with the angle in it are similar csch 2 sides are the same apart from a scale factor and the angle is the same => d=c/2. for d same reason, e=b/2 and f=a/2

qed


----------



## CheesecakeCuber (Oct 1, 2013)

ben1996123 said:


> Spoiler: pruf
> 
> 
> 
> ...



Thanks ben, but I kno. This is easy enough to solve, but I need a formal proof with steps and reasons (with theorems). I know you dislike that formal stuff right? I do too...


----------



## ben1996123 (Oct 1, 2013)

CheesecakeCuber said:


> Thanks ben, but I kno. This is easy enough to solve, but I need a formal proof with steps and reasons (with theorems). I know you dislike that formal stuff right? I do too...



no i dont

also thats a formal proof


----------



## 1LastSolve (Oct 1, 2013)

Calculus, but not everything. A lot of formulas I have figured out, I have found out on my own theoretically. Since I'm in middle school, everybody tends to think I'm really smart, but I don't think I'm a really big deal. Teachers were in WHAT THE HECK mode when I was in Elementary school... IT WAS SO FUNNY. The only reason I do good academically, is because I take studies seriously.


----------



## bundat (Oct 1, 2013)

@CheesecakeCuber
http://www.cliffsnotes.com/math/geometry/polygons/the-midpoint-theorem

Just plug the variables into the equation for perimeters.
Equate/substitute/ w/e

If you can't use that 


Spoiler



Use law of cosines
(Basing on ben's image)
- derive c in terms of a,b,x c = sqrt(a^2 + b^2 -2ab*cos x)

- derive d in terms of a,b,x d = sqrt((a/2)^2 + (b/2)^2 -2(a/2)(b/2)*cos x)
- factor out the 1/4 from the sqrt d = (1/2) * sqrt(a^2 + b^2 -2ab*cos x)
- substitute c from the first step

- final result is d = (1/2)c

Repeat for 3 sides.
Plug vars into equation for perimeters.
Equate/substitute/ w/e
qed


----------



## CheesecakeCuber (Oct 1, 2013)

ben1996123 said:


> no i dont
> 
> also thats a formal proof



Thanks ben and bundat. And ben, sorry for mistake and plus I liek your proof and thats actually how I found my anser, but ofc teacher says To use theorems in two column proof with reasons and each step :fp nvm tho, its ok


----------



## ben1996123 (Oct 2, 2013)

so todae i discovered a cool thing

if you count the amount of nondistinct prime factors of all the integers from 2 to N, then count how many of those integers have M prime factors, then plot a graff of amount and M, ittuce close to something*e^-0.77x



Spoiler: graffs






Spoiler: 2 to 10mir

















Spoiler: 2 to 1mir

















Spoiler: 2 to 100k


















edit: something else koo i just found

if we take the average amount of prime factors per number from 2 to 10^x, the graph is logarithmic (and it fits really well)


----------



## 5BLD (Oct 7, 2013)

I was in the shower and drew this on the glass and thought, wait this question isnt that easy


----------



## vcuber13 (Oct 7, 2013)

the first half is.

theta=arctanx/y
cos theta = y/h1
h1 = y sec theta
cos theta = h1/h2
h2 = h1 sec theta
h2 = y sec^2 theta
etc
hn = y sec^n theta
max triangles is floor(2Pi/theta)

i dont know how to do the area yet

edit:
you could do something like this
do the same as above for x and sin theta
then A = 1/2 sum of y x sec^n theta csc^n theta from 1 to max of n
wolfram


----------



## CheesecakeCuber (Oct 10, 2013)

Okso I was messing with Wolfram and I was testing this series that kind of looks like the definition of e (1 + 1/1! + 2/2! + 3/3! + .....). I am wondering if this has been found and actually has any application in maths or if its just one of those beautiful mathematical series humans find.



Spoiler: The Series



1/(1+1!) + 2/(2+2!) + 3/(3+3!) + 4/(4+4!) + 5/(5+5!) + ... + n/(n+n!)



Basically, I found that after computing the series up till n = 5 I was returned the following, where 619047 is repeated infinitely: 


Spoiler: When max n = 5



1.5161904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904761904...



Edit:


Spoiler: More Computation (n = 1,2,3,4,5,6,7,8,9,10)



n = 1; sum is 1/2
n = 2; sum is 2
n = 3; sum is 4/3
n = 4; sum is 31/21 or 1.476190 (I don't know Latex, so I'll just have to say that the decimal part of the answer is all under the repeat bar with period 6 repeating)
n = 5; sum is 796/525 or 1.51619047 (619047 under the repeat bar (notice the "recycling of numbers" I thought it was interesting) period 6)
n = 6; sum is 1.524454939000... or 96841/63525 (4454939000... is under the repeat bar) period 66
n = 7; sum is 9983698/6543075 (period 1122 (at this point, wolfram stopped giving me the repeating part I think because it is much too long?))
n = 8; sum is 50334364693/32983641025 (and here it stopped giving me the period altogether, leading me to assume that repetition ends?)
n = 9; sum is 2029564902427528/1329933391785075 
n = 10; sum is 10373124947763317933/6797289565413518325


----------



## KongShou (Oct 10, 2013)

5BLD said:


> I was in the shower and drew this on the glass and thought, wait this question isnt that easy



Do we not know what x and y is? Then are we supposed to give the answer in terms of x and y?
Also can't u just 360/tan'(x/y)


----------



## CheesecakeCuber (Oct 14, 2013)

CheesecakeCuber said:


> Okso I was messing with Wolfram and I was testing this series that kind of looks like the definition of e (1 + 1/1! + 2/2! + 3/3! + .....). I am wondering if this has been found and actually has any application in maths or if its just one of those beautiful mathematical series humans find.
> 
> 
> 
> ...



Could anyone help with python implementation. I'm thinking a for loop with range 0-n+1?


----------



## ben1996123 (Oct 15, 2013)

iniffinant sum of 1/(1+n!)


```
from decimal import *
def fact(x):
    if x==0 or x==1:
        return 1
    a=1
    for i in range(2,1+x):
        a*=i
    return a
k=raw_input("terms: ")
a=0
getcontext().prec=100
for i in range(0,int(k)):
   a+=1/Decimal(str(1+fact(i)))
print(a)
```


```
1.526068134473330824778047225162438405449754240466465650758365651679574711472025238801816097311773629
```


----------



## CheesecakeCuber (Oct 15, 2013)

ben1996123 said:


> iniffinant sum of 1/(1+n!)
> 
> 
> ```
> ...



Thanks ben, that's similar to my approach


----------



## Ickathu (Oct 29, 2013)

Who can help me prove the sum of a geometric series equation/how is it derived? I can never remember it, so I'm thinking that this might help me understand it better.


----------



## ben1996123 (Oct 29, 2013)

Ickathu said:


> Who can help me prove the sum of a geometric series equation/how is it derived? I can never remember it, so I'm thinking that this might help me understand it better.



S=a+ar+ar²+...+ar^(n-1) (n terms)
Sr=ar+ar²+ar³+...+ar^n
S-Sr=S(1-r)=a-ar^n=a(1-r^n)
S=a(1-r^n)/(1-r)
for sum to iniffity, r^n -> 0 as n->iniffity if -1<r<1 so S=a/(1-r)


----------



## Kit Clement (Oct 30, 2013)

Here's a fun integral I came across on my statistical inference homework today. You can easily find the numerical answer via wolfram, but their indefinite solution uses error functions, so coming up with a solution by hand is kind of tricky.

http://bit.ly/1isXHMg

And here's the final numerical answer, if you want to verify your integral is correct.

http://bit.ly/17w2JGn


----------



## ben1996123 (Oct 30, 2013)

Kit Clement said:


> http://bit.ly/1isXHMg



ifink substitute u=x/β so its βint e^-u² du from 0 to iniffity
converting to polar turns ue^-u² or something like that wich is indefinitely integrable and its sqrt(pi)/2 or something so i fink d anser is β/2 sqrt(pi) ??

edit: yae ist correct


----------



## Kit Clement (Oct 30, 2013)

ben1996123 said:


> ifink substitute u=x/β so its βint e^-u² du from 0 to iniffity
> converting to polar turns ue^-u² or something like that wich is indefinitely integrable and its sqrt(pi)/2 or something so i fink d anser is β/2 sqrt(pi) ??
> 
> edit: yae ist correct


:tu


----------



## KongShou (Nov 14, 2013)

OK so is anyone here going to take the BMO?

Thats British Mathematical Olympiad, by the way. And it is kinda hard.


----------



## angham (Nov 14, 2013)

Yeah I qualified for bmo1, but not looking forward to it


----------



## KongShou (Nov 14, 2013)

angham said:


> Yeah I qualified for bmo1, but not looking forward to it



have u got ur result already? yay so have i!


----------



## angham (Nov 15, 2013)

KongShou said:


> have u got ur result already? yay so have i!


For ukmt maths challenge? I got 97


----------



## angham (Nov 15, 2013)

angham said:


> For ukmt maths challenge? I got 97



So I turns out my teacher made a mistake and I'm only doing kangaroo :/


----------



## TDM (Nov 15, 2013)

I only did the challenge a week ago, so I haven't got my results yet. But I did the senior one when our year should still be doing the intermediate one. I missed out 6 questions :fp


----------



## TheNextFeliks (Nov 15, 2013)

My favorite number is \( i \). "That's not a real number!" My favorite real number is \( e \)


----------



## rj (Nov 15, 2013)

TheNextFeliks said:


> My favorite number is \( i \). "That's not a real number!" My favorite real number is \( e \)



I like Tau. Easier to use than pi.


----------



## ThomasJE (Nov 16, 2013)

I've done three UKMT's; and I've got to the Olympiad twice. And I got A* in maths in year 10.


----------



## TDM (Nov 19, 2013)

TDM said:


> I only did the challenge a week ago, so I haven't got my results yet. But I did the senior one when our year should still be doing the intermediate one. I missed out 6 questions


Only got 88. Complete fail. Someone at school got 20 more than me. Where's :fp when you need it.


----------



## Deleted member 19792 (Nov 20, 2013)

I might do a trig course over the summer just for funzies (I will probably PHAIL) but the hardest so far is pre-cal


----------



## KongShou (Nov 20, 2013)

I got 100 and got into BMO. if i had a chance to check the answers then i would have qualified by more. oh well.



ThomasJE said:


> I've done three UKMT's; and I've got to the Olympiad twice. And I got A* in maths in year 10.



Which Olympiad?


----------



## ThomasJE (Nov 23, 2013)

KongShou said:


> Which Olympiad?



http://www.ukmt.org.uk/individual-competitions/intermediate-mathematical-olympiad/

This one. I've also done the junior olympiad.


----------



## 5BLD (Nov 25, 2013)

TDM said:


> I only did the challenge a week ago, so I haven't got my results yet. But I did the senior one when our year should still be doing the intermediate one. I missed out 6 questions :fp



I got 97 in thy senior, i made lots of errors as usual, where i go "yay this is so exciting i found a 3 line method" and forgot to divide by 2 or something
I'll take more care in the olympiad maybe which is in like a few days


----------



## KongShou (Nov 25, 2013)

5BLD said:


> I got 97 in thy senior, i made lots of errors as usual, where i go "yay this is so exciting i found a 3 line method" and forgot to divide by 2 or something
> I'll take more care in the olympiad maybe



ooh i got 100 in the senior, so close. I just qualified for BMO1. Did you get in too? I kinda ran out of time in the SMC. LOL


----------



## 5BLD (Nov 25, 2013)

KongShou said:


> ooh i got 100 in the senior, so close. I just qualified for BMO1. Did you get in too? I kinda ran out of time in the SMC. LOL



Yeah well no one got higher so I probably am entered for it. I had about 10 mins left actually, but I kept going "yeah that looks right" while checking.


----------



## KongShou (Nov 25, 2013)

5BLD said:


> Yeah well no one got higher so I probably am entered for it. I had about 10 mins left actually, but I kept going "yeah that looks right" while checking.



dont you have to qualify for it? Anyway gj for the high mark. Im struggling with the BMO questions. Can you do any?


----------



## 5BLD (Nov 25, 2013)

KongShou said:


> dont you have to qualify for it? Anyway gj for the high mark. Im struggling with the BMO questions. Can you do any?



Probably.
My main problem is accuracy because I tend to work too fast and have a short attention span. I've done well in the previous olympiads though due to so few questions forces me to pay attention.


----------



## KongShou (Nov 25, 2013)

5BLD said:


> Probably.
> My main problem is accuracy because I tend to work too fast and have a short attention span. I've done well in the previous olympiads though due to so few questions forces me to pay attention.



Have you done the BMO before tho? If you have then what did u get?


----------



## TDM (Nov 25, 2013)

5BLD said:


> I got 97 in thy senior, i made lots of errors as usual, where i go "yay this is so exciting i found a 3 line method" and forgot to divide by 2 or something


Yea, I do that a lot. I got a part of a mentoring scheme question wrong because I didn't see the word camera had the letter 'a' in it twice :fp


KongShou said:


> ooh i got 100 in the senior, so close. I just qualified for BMO1. Did you get in too? I kinda ran out of time in the SMC. LOL


100 was the minimum needed for BMO1 this year.


----------



## brandbest1 (Nov 29, 2013)

So about that research paper I have to write---

My first draft of it is due next Friday. My (tentative) topic is Diophantine Equations, like the methods to solve them and some basic theory behind them. (Sorry cheesecakecuber  ) Does anyone have any good sources about them that preferably cost little to no money? 

Also what special equations should I cover in my paper?


----------



## CheesecakeCuber (Nov 29, 2013)

brandbest1 said:


> So about that research paper I have to write---
> 
> My first draft of it is due next Friday. My (tentative) topic is Diophantine Equations, like the methods to solve them and some basic theory behind them. (Sorry cheesecakecuber  ) Does anyone have any good sources about them that preferably cost little to no money?
> 
> Also what special equations should I cover in my paper?



Haha np Brandbest, almost all of maths is fun to research. Anyway, for Diophantine equations I would mention perhaps Fermat's Last Theorem, but I say this tentatively because how Andrew Wiles made his proof is very abstract to me and seems really difficult to understand. Perhaps others here can help explain if you ask? I would consult wikipedia  and I believe Numberphile on youtube has a vid.

Look what I found: http://www.math.ubc.ca/~cbruni/pdfs/Techniques%20of%20Diophantine%20Equations.pdf


----------



## TDM (Nov 29, 2013)

rofl the Kangaroo was so much easier than the Challenge. Except one question about semicircles, where I don't think they gave enough information. Could just be me missing something completely obvious, though. And that parallelogram one. I had no idea how to do it. I'm never good with geometry though. The only other one I guessed was the quadratic. I know I definitely got one easy one wrong because I missed something completely obvious (forgot to divide by something from earlier in the question). Other than that, I think I did quite well. Did anyone else here do the senior kangaroo?


----------



## ChickenWrap (Nov 30, 2013)

Calc 1 was super easy, but Calc 2 is a bit more difficult. Out of curiosity, does anyone know how those compare to A/B calc in typical high schools? I heard it is much harder than the HS versions (I am in a weird situation where I have to take all my HS classes at a college).


----------



## ChickenWrap (Nov 30, 2013)

cmowla said:


> I wouldn't be concerned about how difficult it is...you're taking A/B calc to pass the AP exam, right? You should be more concerned about if they are preparing you for this test.



No, I am actually taking all of my high school classes at a college so I get HS credit and college credit...graduating next semester with 2 years of college already done. I have never heard of an AP exam, what is that?


----------



## brandbest1 (Dec 1, 2013)

CheesecakeCuber said:


> Haha np Brandbest, almost all of maths is fun to research. Anyway, for Diophantine equations I would mention perhaps Fermat's Last Theorem, but I say this tentatively because how Andrew Wiles made his proof is very abstract to me and seems really difficult to understand. Perhaps others here can help explain if you ask? I would consult wikipedia  and I believe Numberphile on youtube has a vid.
> 
> Look what I found: http://www.math.ubc.ca/~cbruni/pdfs/Techniques%20of%20Diophantine%20Equations.pdf



I was thinking of Fermat's Last Theorem, but I don't want to delve into any collegiate mathematics here, just high school math regarding Diophantine equations.
Some ones I have in mind:
\( 
ax + by = c, x^2 + y^2 = z^2, x^4 + y^4 = z^2, \text{Pell's equation}
\)


----------



## vcuber13 (Dec 1, 2013)

Have you ever heard of taxicab numbers?


----------



## TheNextFeliks (Dec 1, 2013)

Lol. For math we were supposed to find a parabola irl and take a picture of it. Then use quad regression to find the graph/equation. Then we have to make a four slide PowerPoint. One page for title, one for picture with graph one about the contents of the picture. 

I have a picture of a parabola. In front of a Barnes and Noble. So one of my slides is about Barnes and Noble. Lol.


----------



## CheesecakeCuber (Dec 1, 2013)

brandbest1 said:


> I was thinking of Fermat's Last Theorem, but I don't want to delve into any collegiate mathematics here, just high school math regarding Diophantine equations.
> Some ones I have in mind:
> \(
> ax + by = c, x^2 + y^2 = z^2, x^4 + y^4 = z^2, \text{Pell's equation}
> \)



Haha, I see. Perhaps your teacher would give you extra credit?  Anyway, your choices look pretty good!



TheNextFeliks said:


> Lol. For math we were supposed to find a parabola irl and take a picture of it. Then use quad regression to find the graph/equation. Then we have to make a four slide PowerPoint. One page for title, one for picture with graph one about the contents of the picture.
> 
> I have a picture of a parabola. In front of a Barnes and Noble. So one of my slides is about Barnes and Noble. Lol.



Lol, seems legit for math class. What grade are you in and what math are you taking?


----------



## Ickathu (Dec 6, 2013)

I need help finding the solution to this:

sum k=1 -> infinity: (k^2)/(2^k)

How do I solve this (without typing it into Wolfram Alpha, because I've already done that)? I should be able to solve it without the use of Calculus, and preferably without just plugging in values for the first several terms of k and looking at what it's converging towards.


----------



## CheesecakeCuber (Dec 6, 2013)

Ickathu said:


> I need help finding the solution to this:
> 
> sum k=1 -> infinity: (k^2)/(2^k)
> 
> How do I solve this (without typing it into Wolfram Alpha, because I've already done that)? I should be able to solve it without the use of Calculus, and preferably without just plugging in values for the first several terms of k and looking at what it's converging towards.



Perhaps I'm stupid, but is the sequence starting at k=1 to infinity, of (k^2)/(2^k)? I've been beating myself up trying to solve this (even disregarding your requirements) and I want to confirm that the first few terms are: 1/2, 1, 9/8, 1, 25/32? So this is special since no common ratio, r, is present?


----------



## Ninja Storm (Dec 6, 2013)

Ickathu said:


> I need help finding the solution to this:
> 
> sum k=1 -> infinity: (k^2)/(2^k)
> 
> How do I solve this (without typing it into Wolfram Alpha, because I've already done that)? I should be able to solve it without the use of Calculus, and preferably without just plugging in values for the first several terms of k and looking at what it's converging towards.



Why would you want to solve it without calculus?

ratio testttttttttttttttttt

EDIT: Or were you looking for the sum?


----------



## CheesecakeCuber (Dec 6, 2013)

Ninja Storm said:


> Why would you want to solve it without calculus?
> 
> ratio testttttttttttttttttt
> 
> EDIT: Or were you looking for the sum?



I assumed he was looking for the sum. I just can't solve it now...


----------



## Ickathu (Dec 6, 2013)

CheesecakeCuber said:


> Perhaps I'm stupid, but is the sequence starting at k=1 to infinity, of (k^2)/(2^k)? I've been beating myself up trying to solve this (even disregarding your requirements) and I want to confirm that the first few terms are: 1/2, 1, 9/8, 1, 25/32? So this is special since no common ratio, r, is present?



that is correct. Start at k=1 and sum to k=infinity. Those are the first terms that I got as well.



Ninja Storm said:


> Why would you want to solve it without calculus?
> 
> ratio testttttttttttttttttt
> 
> EDIT: Or were you looking for the sum?



Because I haven't done calc yet (just started 2 weeks ago) and it was off of a test that only uses problems that don't require calculus.

And yes, I'm looking for the sum.


----------



## CheesecakeCuber (Dec 7, 2013)

Ickathu said:


> that is correct. Start at k=1 and sum to k=infinity. Those are the first terms that I got as well.
> 
> 
> 
> ...



Well, can we agree that there doesn't seem to be a common ratio because of the pattern where 1 alternates with some other number? This is where I'm stumped. I was just going to take partial sums to make another infinite series then find the limit of that series, but you said no Calc...

Edit: After dinner I will try and solve it like this, although I have a feeling that something annoying will happen.

Edit2: Ok, in desperation I consulted Wolfram and it says the sum is


Spoiler



6


 but I just can't fathom how that can be. The partial sums increase and decrease and don't seem to approach any number.


----------



## Ickathu (Dec 7, 2013)

CheesecakeCuber said:


> Well, can we agree that there doesn't seem to be a common ratio because of the pattern where 1 alternates with some other number? This is where I'm stumped. I was just going to take partial sums to make another infinite series then find the limit of that series, but you said no Calc...
> 
> Edit: After dinner I will try and solve it like this, although I have a feeling that something annoying will happen.
> 
> ...



It doesn't alternate between 1 and another number. There are only 2 cases where (k^2)/(2^k)=1 --> k^2=2^k --> k=2, 4. (http://www.youtube.com/watch?v=mLQNvuZH3GU). So it goes 1/2, 1, 9/8, 1, 25/32, 36/64, 49/128, ....
After the first 2 terms (1/2, 1) the terms decrease, but with no common ratio (decimal approximations: 0.5, 1, *1.125, 1, .75, .54, .36, ....*)


----------



## CheesecakeCuber (Dec 7, 2013)

Ickathu said:


> It doesn't alternate between 1 and another number. There are only 2 cases where (k^2)/(2^k)=1 --> k^2=2^k --> k=2, 4. (http://www.youtube.com/watch?v=mLQNvuZH3GU). So it goes 1/2, 1, 9/8, 1, 25/32, 36/64, 49/128, ....
> After the first 2 terms (1/2, 1) the terms decrease, but with no common ratio (decimal approximations: 0.5, 1, *1.125, 1, .75, .54, .36, ....*)



Haha oops, my mistake. I did carry it out a couple more terms and realized that.

Edit: And I'm insane enough to carry it out even more. So, yes, the answer's 6, except my proof would be showing terms until the 640th term.


----------



## brandbest1 (Dec 10, 2013)

Wait a sec, I just did that problem a few days ago!

Try multiplying by the common ratio. If you know what an arithmetico-geometric series is, then that's the approach you should take.


----------



## CheesecakeCuber (Dec 10, 2013)

brandbest1 said:


> Wait a sec, I just did that problem a few days ago!
> 
> Try multiplying by the common ratio. If you know what an arithmetico-geometric series is, then that's the approach you should take.



I would if there was a common ratio!  (Forgive me if I'm wrong and missing something big here)


----------



## CheesecakeCuber (Dec 21, 2013)

I do this when I should be studying for midterms...why am I so addicted?


----------



## KongShou (Dec 21, 2013)

CheesecakeCuber said:


> I do this when I should be studying for midterms...why am I so addicted?



Omg thats an amazing site!


----------



## TDM (Dec 21, 2013)

So apparently not everything only needs 4 questions for you to continue... this is going to take a while.


----------



## CheesecakeCuber (Apr 20, 2014)

Alright, well in a feeble attempt to revive this thread and all the great things that used to (and still should) happen in it. I'd like to ask if anyone else here is interested in Riemann's Hypothesis and the distribution of primes shenanigans. I've recently gotten into researching and learning about the Riemann-Zeta Function and I've been reading _Prime Obsession_ by John Derbyshire. Feel free to share whatever about this problem interests you.


----------



## 5BLD (Apr 20, 2014)

Try making a complex plane plotter in python (using colours to indicate abs/arg). Then plot the zeta function. S'very cool.


----------



## 10461394944000 (Apr 20, 2014)

CheesecakeCuber said:


> Alright, well in a feeble attempt to revive this thread and all the great things that used to (and still should) happen in it. I'd like to ask if anyone else here is interested in Riemann's Hypothesis and the distribution of primes shenanigans. I've recently gotten into researching and learning about the Riemann-Zeta Function and I've been reading _Prime Obsession_ by John Derbyshire. Feel free to share whatever about this problem interests you.



i proved the riemann hypothesis last night then realized my proof was wrong like 2 minutes later

http://bit.ly/1r8ezw2


----------



## CheesecakeCuber (Apr 22, 2014)

Here's a little Python implementation of the Riemann-Zeta function that takes the sum up to a certain term. It takes two arguments: n and x, where n is the nth term of the sum and x is the exponent argument (i.e., Zeta(x) = 1/n^x). Please tell me if there's anything that should change style wise or mistake wise. 


Spoiler





```
def Zeta(n,x):
    #Where n is the nth term that you want to sum the function to
    #and x is the exponent
    n = int(n)
    x = int(x)
    if n < 1:
        return 'Error'
    if x < 1:
        return 'Error'
    if n == 1:
        return '1'
    else:
        n = int(n)
        x = int(x)
        return str((1 + sum(1.0/(n**x) for n in range(2, n+1))))

while True:
    userInputN = raw_input('Define n: ')
    print
    userInputX = raw_input('Define x: ')
    print
    print 'The sum is: ' + Zeta(userInputN, userInputX)
    print
```


----------



## vcuber13 (Apr 22, 2014)

```
if x == 1:
        return 1 + 1.0/n
```

Why?


----------



## CheesecakeCuber (Apr 22, 2014)

vcuber13 said:


> ```
> if x == 1:
> return 1 + 1.0/n
> ```
> ...



Ouch, my mistake. I think I confused the variables. Thanks for pointing that out. I fixed the main post.


----------



## ilikecubing (May 2, 2014)

How do I solve this simply?

Peter reaches school everyday at 5PM to pick up his child. On Saturday, the school got over at 4PM and the child started walking towards home. Peter met him on his way and returned home 30 minutes earlier. How long did the child walk?


----------



## cmhardw (May 7, 2014)

ilikecubing said:


> How do I solve this simply?
> 
> Peter reaches school everyday at 5PM to pick up his child. On Saturday, the school got over at 4PM and the child started walking towards home. Peter met him on his way and returned home 30 minutes earlier. How long did the child walk?



I am very interested in this problem, but I have some clarification questions:

*1) Does school typically get out at 4PM on a weekday? Or does getting out at 4PM on Saturday represent getting out at 1 hour earlier than is typical for a weekday?*

*2) When they travel home together, how do they travel home?*

2a) When Peter picks up his child, do they travel together at Peter's original rate of travel? In regular terms you would say, for example, that Peter picks up the child in a car, and they drive home together.

2b) If Peter is also walking, then by the time Peter meets his child do they travel at the child's rate of travel? For example, an adult can walk faster than a child. However, when an adult and a child walk together the adult will typically slow to the child's rate of travel.

2c) Do they travel at some rate slower than Peter's original rate, yet faster than the child's rate? A real world example would be something like Peter carrying the child on his back. He would walk slower than his rate without the child, but probably still faster than the child can walk.

2d) Do they travel together at a rate slower than the child's rate? For example, do they stop to get ice cream, or walk very slowly such as to also carry on a meaningful conversation?

All of the part 2 question parts are basically me asking at what rate do they travel when they have met up and are now traveling, together, toward home? We don't necessarily need to know this rate exactly, but the _mode_ of travel they take together can affect the answer to the whole problem.


----------



## ilikecubing (May 7, 2014)

cmhardw said:


> I am very interested in this problem, but I have some clarification questions:
> 
> *1) Does school typically get out at 4PM on a weekday? Or does getting out at 4PM on Saturday represent getting out at 1 hour earlier than is typical for a weekday?*
> 
> ...



1) No, it does not get typically over at 4PM on weekends. It just happened to get over at 4 PM that saturday. So we have to assume that on that saturday, the child started walking towards his home right at 4 PM

2) When Peter meets the walking child and they start traveling back home, they travel together at the same rate as Peter's usual rate of traveling. 

Btw, this problem has options. They are,

1) 40 min
2) 50 min
3) 45 min
4) 55 min
5) 60 min


----------



## KongShou (May 7, 2014)

ilikecubing said:


> How do I solve this simply?
> 
> Peter reaches school everyday at 5PM to pick up his child. On Saturday, the school got over at 4PM and the child started walking towards home. Peter met him on his way and returned home 30 minutes earlier. How long did the child walk?





ilikecubing said:


> 1) No, it does not get typically over at 4PM on weekends. It just happened to get over at 4 PM that saturday. So we have to assume that on that saturday, the child started walking towards his home right at 4 PM
> 
> 2) When Peter meets the walking child and they start traveling back home, they travel together at the same rate as Peter's usual rate of traveling.
> 
> ...



Peter effectively walks to meet the child and walks back again. The duration of each half of Peters journey is the time the child walks for.

Now assume that Peter walks for x mins from school each day normally. This means that it took Peter x+30 mins to walk to meet the child and back that Saturday. Therefore the child traveled by himself for (x+30)/2 mins that day. 

However we don't know the value of x so I can't see a way to solve the problem, as the value of x vary, so does the final answer??? This question seem to be incomplete imo. Maybe I'm just being stupid.

BTW where did you find this question?


----------



## Methuselah96 (May 8, 2014)

ilikecubing said:


> How do I solve this simply?
> 
> Peter reaches school everyday at 5PM to pick up his child. On Saturday, the school got over at 4PM and the child started walking towards home. Peter met him on his way and returned home 30 minutes earlier. How long did the child walk?



30 minutes earlier than what?


----------



## Tempus (May 8, 2014)

ilikecubing said:


> How do I solve this simply?
> 
> Peter reaches school everyday at 5PM to pick up his child. On Saturday, the school got over at 4PM and the child started walking towards home. Peter met him on his way and returned home 30 minutes earlier. How long did the child walk?



We may not know the speed at which Peter travels to pick up his child, but we _do_ know that when the child started walking home an hour earlier than usual, i.e. at 4PM, it resulted in Peter arriving at home a half-hour earlier than usual.
Assuming Peter was traveling from home and not some other location, and further assuming level ground, symmetrical traffic conditions, and no significant prevailing wind, this means that Peter's trip toward his child was 15 minutes shorter than usual, and their trip back home together was also 15 minutes shorter than usual.
If Peter's trip toward his child was 15 minutes shorter than usual, and it usually ends at 5PM, then today Peter met up with his child at 4:45PM.
If the child began walking at 4:00PM and was picked up by Peter at 4:45PM, the child was obviously walking for 45 minutes.


----------



## KongShou (May 8, 2014)

Tempus said:


> We may not know the speed at which Peter travels to pick up his child, but we _do_ know that when the child started walking home an hour earlier than usual, i.e. at 4PM, it resulted in Peter arriving at home a half-hour earlier than usual.
> Assuming Peter was traveling from home and not some other location, and further assuming level ground, symmetrical traffic conditions, and no significant prevailing wind, this means that Peter's trip toward his child was 15 minutes shorter than usual, and their trip back home together was also 15 minutes shorter than usual.
> If Peter's trip toward his child was 15 minutes shorter than usual, and it usually ends at 5PM, then today Peter met up with his child at 4:45PM.
> If the child began walking at 4:00PM and was picked up by Peter at 4:45PM, the child was obviously walking for 45 minutes.



Nowhere is it mentioned how long it takes them to walk home. It does not usually end at 5pm.

Peter took 30 mins LONGER than usual. Since they left 1 hour early but only returned home 30 mins early.

This question is quite unclear in many aspects.


----------



## Methuselah96 (May 8, 2014)

KongShou said:


> Nowhere is it mentioned how long it takes them to walk home. It does not usually end at 5pm.
> 
> Peter took 30 mins LONGER than usual. Since they left 1 hour early but only returned home 30 mins early.
> 
> This question is quite unclear in many aspects.



How could it take 30 mins longer if he's walking the same rate with less distance?


----------



## ilikecubing (May 8, 2014)

Tempus said:


> We may not know the speed at which Peter travels to pick up his child, but we _do_ know that when the child started walking home an hour earlier than usual, i.e. at 4PM, it resulted in Peter arriving at home a half-hour earlier than usual.
> Assuming Peter was traveling from home and not some other location, and further assuming level ground, symmetrical traffic conditions, and no significant prevailing wind, this means that Peter's trip toward his child was 15 minutes shorter than usual, and their trip back home together was also 15 minutes shorter than usual.
> If Peter's trip toward his child was 15 minutes shorter than usual, and it usually ends at 5PM, then today Peter met up with his child at 4:45PM.
> If the child began walking at 4:00PM and was picked up by Peter at 4:45PM, the child was obviously walking for 45 minutes.



Correct, 45 minutes is the right answer, thanks for the simple explanation. I initially tried making equations and got stuck with the variables



KongShou said:


> Nowhere is it mentioned how long it takes them to walk home. It does not usually end at 5pm.
> 
> Peter took 30 mins LONGER than usual. Since they left 1 hour early but only returned home 30 mins early.
> 
> This question is quite unclear in many aspects.



It does end at 5PM usually, on that day, it ended at 4 PM



Methuselah96 said:


> 30 minutes earlier than what?



Than the usual time at which they return home.


----------



## ilikecubing (May 17, 2014)

1. In how many ways can 5 rings be worn on the four particular fingers of the right hand?
(A) 4^5
(B) 5^4
(C) 8C3
(D) 8P3
(E) 4!*5!

2. In how many ways can 5 different rings be worn on the four particular fingers of the right hand?
(A) 4^5*5C4
(B) 5^4*5C4
(C) 8C3
(D) 8P3
(E) 4!*5!

3. In how many ways can 5 different rings be worn on the any four fingers of the right hand?
(A) 4^5*5C4
(B) 5^4*5C4
(C) 8C3*5C4
(D) 8P3*5C4
(E) 4!*5!*5C4


----------



## Tempus (May 18, 2014)

ilikecubing said:


> 1. In how many ways can 5 rings be worn on the four particular fingers of the right hand?
> (A) 4^5
> (B) 5^4
> (C) 8C3
> ...


Questions like these are why so many people hate word problems. They are all too often poorly written, using wording that is either ambiguous in meaning or flat-out wrong. In this particular case, I am assuming that the question means to ask "How many different ways can you wear 5 identical rings when limited to using only 4 specific fingers?" If that is in fact the question, then the answer is 56, which can be expressed as either 8C5 or 8C3. 8C3 is among the options, so the answer would appear to be option C.

So far, so good, but here's where things take a turn for the unfortunate...



ilikecubing said:


> 2. In how many ways can 5 different rings be worn on the four particular fingers of the right hand?
> (A) 4^5*5C4
> (B) 5^4*5C4
> (C) 8C3
> ...


The answer to this one is 6,720, which can be expressed as 8P5, but that is not among the options, so all five options are incorrect. It's possible that the question's original author was confused about how the permutations function was supposed to be implemented, and assumed it was X!/Y! instead of X!/(X-Y)!, causing option D to be 8P3 instead of the correct 8P5.



ilikecubing said:


> 3. In how many ways can 5 different rings be worn on the any four fingers of the right hand?
> (A) 4^5*5C4
> (B) 5^4*5C4
> (C) 8C3*5C4
> ...


This question is the worst one of the lot. I can only conclude that it means to ask "How many different ways can 5 different rings be worn on 5 specific fingers such that at least one finger is bare." (The fact that questions this garbled appear on standardized tests is unfortunate.) If this is in fact what they are asking, then the answer is 15,119, or (9P5)-1, which is once again not present in the list of options.

Where did you find these questions, if you don't mind my asking?


----------



## 10461394944000 (May 22, 2014)

ukpeople: anyone else doing step/something similar this year? i'm doing all 3 step papers next month and some of the questions are pretty hard like this silly thing about exponentiating matrices



Spoiler












and this silly integral thing



Spoiler











and this silly thing with zeta(2) inside of it



Spoiler











and this other silly integral thing



Spoiler


----------



## KongShou (May 22, 2014)

Post the ones you can't do. Ill see if I can help out. I can do pretty much all pure maths ones. Dont really look at mech or stats much tho.

I should probably also mention I dont do much STEP 3.


----------



## 10461394944000 (May 22, 2014)

KongShou said:


> Post the ones you can't do. Ill see if I can help out. I can do pretty much all pure maths ones. Dont really look at mech or stats much tho.
> 
> I should probably also mention I dont do much STEP 3.



lol i dont need help with any of them but some of the questions are weird


----------



## KongShou (May 22, 2014)

10461394944000 said:


> lol i dont need help with any of them but some of the questions are weird



Jar it is pretty different to a level. I think its more uni styled. I like them tho! Its like uni maths but you dont have to understand any of the higher stuff.


----------



## 10461394944000 (May 22, 2014)

KongShou said:


> Jar it is pretty different to a level. I think its more uni styled. I like them tho! Its like uni maths but you dont have to understand any of the higher stuff.



kinda but "type it into mathematica" isnt an acceptable solution in step

also its no fun if you dont understand the hard stuff

did step1 from 2000 yesterday/today and it was really easy so hopefully this years papers are easy too qi


----------



## 10461394944000 (May 24, 2014)

okso me and soup are looking for primes that are of some silly form because primes are cool

here are some silly primes:

\( 513!-\lfloor e^{513} \rfloor \)

\( 51^{51}-2 \)

\( \lfloor \sinh 582 \rfloor=\lfloor \frac{e^{582}}{2}\rfloor \)

\( 496^{496}+496!+1 \)

\( \lfloor 615e^{615}\rfloor \)

\( \lfloor 951\pi^{951}\rfloor \)

\( \lfloor 952(\pi e)^{952}\rfloor \)

31415926535897932384626433832795028841 (first 38 digits of pi)

141421356237309504880168872420969807856967187537694807317667973799073247846210703885038753432764157273501384623091229702492483605585073721264412149709993583141322266592750559275579995050115278206057147010955997160597027453459 (225 digits of √2)

325! - !325 + 1

1395! + !1395 - 1

\( 46!^{46}+71 \)

edit: \( 95!^{95}+113 \), 14062 digits!
edit: 2# + 3# + 5# + 7# + 11# + ... + 397# - 1
edit: ocool, 136!+149 and 136!+151 are twin primes

edit: pairs {x, y} where \( 2\leq x<y\leq500 \) and \( y x^x+x y^y+1 \) is prime:


Spoiler



{2, 3}, {2, 5}, {2, 6}, {2, 21}, {2, 130}, {3, 4}, {3, 5}, {3, 12}, {3, 49}, {3, 313}, {4, 5}, {4, 11}, {4, 14}, {4, 72}, {4, 95}, {4, 114}, {5, 7}, {5, 8}, {5, 9}, {5, 14}, {5, 51}, {5, 316}, {6, 12}, {6, 30}, {6, 276}, {7, 12}, {7, 17}, {7, 26}, {7, 38}, {7, 39}, {7, 311}, {7, 345}, {8, 10}, {8, 15}, {8, 20}, {8, 48}, {8, 57}, {9, 10}, {9, 12}, {11, 18}, {11, 122}, {12, 21}, {12, 61}, {12, 315}, {13, 44}, {14, 25}, {15, 30}, {15, 119}, {16, 53}, {18, 23}, {19, 366}, {20, 55}, {20, 71}, {20, 384}, {21, 80}, {21, 298}, {22, 50}, {22, 156}, {23, 67}, {24, 54}, {24, 70}, {24, 72}, {24, 74}, {24, 189}, {24, 350}, {24, 466}, {26, 91}, {26, 226}, {27, 36}, {27, 45}, {27, 50}, {28, 80}, {28, 189}, {29, 190}, {29, 290}, {30, 31}, {30, 160}, {30, 188}, {30, 345}, {31, 35}, {31, 131}, {31, 210}, {31, 356}, {32, 41}, {32, 59}, {34, 69}, {34, 155}, {35, 46}, {35, 86}, {35, 228}, {35, 426}, {37, 53}, {37, 122}, {40, 42}, {40, 86}, {40, 426}, {41, 181}, {42, 117}, {42, 330}, {43, 51}, {43, 150}, {43, 183}, {43, 420}, {44, 63}, {44, 66}, {44, 89}, {44, 335}, {44, 391}, {46, 134}, {47, 80}, {49, 86}, {50, 68}, {50, 252}, {51, 219}, {52, 441}, {53, 61}, {54, 111}, {54, 121}, {54, 320}, {54, 396}, {55, 78}, {55, 108}, {55, 195}, {56, 115}, {56, 142}, {56, 473}, {58, 69}, {58, 201}, {59, 79}, {60, 173}, {62, 106}, {63, 167}, {64, 384}, {65, 70}, {65, 88}, {65, 90}, {66, 80}, {66, 138}, {67, 98}, {67, 116}, {67, 117}, {69, 139}, {70, 74}, {71, 105}, {71, 438}, {72, 94}, {72, 158}, {73, 395}, {73, 443}, {74, 82}, {74, 255}, {76, 185}, {77, 112}, {77, 142}, {78, 312}, {80, 105}, {80, 164}, {81, 112}, {81, 119}, {82, 294}, {84, 212}, {84, 280}, {85, 269}, {87, 252}, {87, 271}, {88, 257}, {89, 196}, {91, 111}, {98, 221}, {99, 192}, {100, 210}, {101, 159}, {102, 195}, {104, 120}, {104, 128}, {104, 169}, {104, 234}, {105, 259}, {105, 332}, {105, 459}, {109, 189}, {109, 476}, {110, 295}, {113, 204}, {115, 234}, {116, 205}, {120, 457}, {121, 378}, {122, 371}, {124, 456}, {126, 258}, {127, 378}, {128, 215}, {128, 460}, {131, 156}, {131, 210}, {132, 240}, {133, 143}, {136, 194}, {138, 289}, {138, 395}, {139, 246}, {141, 164}, {141, 319}, {143, 456}, {147, 213}, {155, 290}, {156, 340}, {158, 166}, {158, 185}, {158, 189}, {159, 450}, {160, 242}, {162, 166}, {162, 330}, {165, 174}, {167, 321}, {174, 175}, {174, 209}, {175, 245}, {176, 463}, {177, 183}, {177, 260}, {182, 330}, {183, 362}, {189, 469}, {192, 395}, {193, 387}, {193, 474}, {195, 351}, {206, 276}, {206, 280}, {210, 500}, {213, 478}, {214, 339}, {215, 318}, {216, 290}, {216, 347}, {225, 226}, {225, 423}, {226, 278}, {227, 423}, {229, 392}, {230, 500}, {234, 293}, {235, 311}, {239, 265}, {244, 249}, {246, 271}, {249, 478}, {252, 309}, {252, 386}, {256, 422}, {257, 319}, {258, 270}, {258, 316}, {260, 329}, {266, 367}, {268, 365}, {269, 298}, {275, 391}, {276, 325}, {276, 425}, {278, 421}, {282, 365}, {285, 472}, {285, 483}, {289, 294}, {292, 305}, {294, 401}, {300, 315}, {302, 441}, {306, 471}, {314, 366}, {318, 345}, {324, 439}, {329, 339}, {332, 454}, {337, 470}, {344, 417}, {345, 439}, {354, 430}, {356, 452}, {372, 385}, {381, 446}, {383, 386}, {392, 470}, {398, 449}, {399, 414}, {435, 462}, {482, 493}, {482, 500}



edit: seems that !x + !y where y>x is only prime if y=x+1 (apart from {0, 0}, {0, 2}, {0, 3}, {1, 3}, {2, 2} csch smallexceptions) but idk how to prove csch dont know anything about subfactorials


----------



## ilikecubing (May 29, 2014)

Tempus said:


> Questions like these are why so many people hate word problems. They are all too often poorly written, using wording that is either ambiguous in meaning or flat-out wrong. In this particular case, I am assuming that the question means to ask "How many different ways can you wear 5 identical rings when limited to using only 4 specific fingers?" If that is in fact the question, then the answer is 56, which can be expressed as either 8C5 or 8C3. 8C3 is among the options, so the answer would appear to be option C.
> 
> So far, so good, but here's where things take a turn for the unfortunate...
> 
> ...



Yeah, these questions are indeed very ambiguous. They gave me a hard time and I am average in permutations and combinations so I thought I'd get some insight on these questions here. But it is unfortunate that the questions are not framed properly  I found these in a Facebook group. Sorry about the ambiguity.

Question to all -

Is there a way I could somehow use the Rubiks Cube to help myself with the concepts of Permutations and Combinations, so that I don't face much problem in solving different kinds of Permutations and Combinations questions.

Another Question -

Find the sum of the roots of the equation x^2013 + (0.5 - x)^2013 = 0


----------



## 5BLD (May 31, 2014)

x^2013+(0.5-x)^2013=0
x^2012/2 - (2013C2) x^2011/4 +...=0
(1/2) x^2012 - (1012539/2) x^2011 +...=0

Summing roots for any polynomial is -b/a.

1012539


----------



## 10461394944000 (May 31, 2014)

5BLD said:


> x^2013+(0.5-x)^2013=0
> x^2012/2 - (2013C2) x^2011/4 +...=0
> (1/2) x^2012 - (1012539/2) x^2011 +...=0
> 
> ...



should be 503 csch the coefficient of x^2012 is 2013/2 not 1/2


----------



## 5BLD (May 31, 2014)

Oops of course i knew that
But yeah this sum of roots thing is interesting. I wonder whether if it says something to do with vectors (of complex roots)...


----------



## KongShou (May 31, 2014)

Um... Does anyone know a good book/video of a lecture on youtube/resource/etc that explains metric space well? I have long decided that wikipedia is useless when youre trying to learn something.


----------



## tozies24 (Jun 5, 2014)

KongShou said:


> Um... Does anyone know a good book/video of a lecture on youtube/resource/etc that explains metric space well? I have long decided that wikipedia is useless when youre trying to learn something.



A Metric Space is just a set with a metric (a distance equation relating two points) defined on it that has certain properties. (Wikipedia actually isn't horrible for learning definitions of things, but I agree with your comment. But in this case it isn't horrible. Some of the examples are actually insightful.)

Anyway, the reason why we use Metric Spaces is so that we have a concrete set on which we can work with distances. (This is similar to a topological space however, in topology, we generally don't care about distance unless specified. Also a metric space is a specific case of a topological space) It is just the setting which we are doing the problem. Basically it just means we have a distance function and other properties in our toolbox.

In my real analysis course I took last year, we used Rudin's Principles of Mathematical Analysis (often referred to as Baby Rudin). This book is widely used in beginning Real Analysis courses and most of the problem's solutions can be found online.


----------



## Cubeologist (Jun 5, 2014)

Multi-variable calculus and calculus of variation. It can take a surprising level of mathematics to simply do classical mechanics.


----------



## 10461394944000 (Jun 11, 2014)

what is that area

find a symbolic expression that approximates it


----------



## qqwref (Jun 11, 2014)

10461394944000 said:


> what is that area
> 
> find a symbolic expression that approximates it





Spoiler



obviously it is symmetrical
bottom intersection is at x = pi/4
left intersection is at arccos(pi/4) ~= 0.6675
the area is 2*integral from arccos(pi/4) to pi/4 of cos(cos(x)) - sin(cos(x))
wolframalpha cannot into this integral but the value is about .0127631


----------



## 10461394944000 (Jun 11, 2014)

qqwref said:


> Spoiler
> 
> 
> 
> ...



yes



Spoiler



it is also almost a rhombus so it is approximately (cos(1/sqrt2)-sin(1/sqrt2))(pi/4-arccos(pi/4)) wich is about 0.01304517


----------



## 10461394944000 (Jun 25, 2014)

silly thing:

take 922 digits of pi, including the 3 at the start
remove the decimal point
replace all the 0s with 69
congralutations you have a prime number


Spoiler



3141592653589793238462643383279569288419716939937516958269974944592369781646962862698998628693482534211769679821486986513282369664769938446699556958223172535946981284811174569284169276919385211695559644622948954936938196442881699756659334461284756482337867831652712691969914564856692346693486169454326648213393669726692491412737245876969666963155881748815269926996282925469917153643678925969366969113369536954882694665213841469519415116699433695727693657595919536992186117381932611793169511854869744623799627495673518857527248912279381836911949129833673362446965664369866921394946395224737196976921798669943769277695392171762931767523846748184676694695132696969568127145263566982778577134275778966991736371787214684469969122495343691465495853716956979227968925892354269199561121296921966986469344181598136297747713699966951876972113499999983729786949951695973173281669963185956924459455346969836926425223698253344685693526193118817169169696931378387528865875332698381426961717766914736935982534969428755468731



also i have step2 tomorrow which will be fun


----------



## cmhardw (Jun 25, 2014)

10461394944000 said:


> silly thing:
> 
> take 922 digits of pi, including the 3 at the start
> remove the decimal point
> ...



Cool! How did you discover this? Were you looking for the first _n_ digits of pi where this substitution would (hopefully) work? That substitution seems oddly specific


----------



## 10461394944000 (Jun 25, 2014)

cmhardw said:


> Cool! How did you discover this? Were you looking for the first _n_ digits of pi where this substitution would (hopefully) work? That substitution seems oddly specific



yeah, pretty much, me and soup have found lots of silly primes recently. examples:

that one



Spoiler: first 194 digits of pi, then replace all the 5s with 4s and the 4s with 5s



31514926434897932385626533832794028851971693993741048209759554923078165062862089986280358243521170679821580864132823066570938556094404822317243495081285811175402851027019384211044496556229589459





Spoiler: 69 and a 7



69696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696967





Spoiler: first 10 digits of e and pi repeated a lot



2718281828271828182827182818282718281828314159265331415926533141592653314159265327182818283141592653271828182831415926533141592653314159265327182818283141592653271828182831415926533141592653314159265331415926532718281828271828182831415926532718281828314159265331415926533141592653271828182831415926533141592653314159265327182818283141592653271828182831415926532718281828314159265327182818282718281828314159265327182818282718281828271828182831415926533141592653271828182831415926533141592653314159265327182818282718281828314159265331415926533141592653271828182827182818282718281828314159265327182818283141592653271828182827182818283141592653314159265331415926533141592653314159265331415926532718281828271828182831415926532718281828314159265331415926532718281828314159265331415926532718281828271828182831415926532718281828314159265327182818282718281828314159265331415926532718281828271828182831415926532718281828314159265327182818283141592653271828182831415926533141592653314159265331415926533141592653





Spoiler: thing with ~90% 3s and ~10% 7s



33337333333333333733373373333337333333333333333733333733333733733333333333333733733333373337333333333333333733333337333333337333333333333333333373337333333333333333333333333333333733333333333333373373373337333333333333333373333333733333333333733333333333333373337333333333333333333373373333373333333733733333333333333333333333333333733333333373773373733333733333333333333333333333333333733333373333333333333333333333337333333733333337373333333333333333333333333337733733373333333333333333333333333333333333373333337377777373333333333333333333333333333333333333733333333373333333733333333333333337333333333333333333333373333333733333333733373333333333333333337337333333373333373337333333337733733333333333333733333333333333333733333333733333333737373333333337733333333333333373333333333333333333377337333333373333377333333333333733333337333333333377733333333333333333373333373333373333333333333333333333333373333333333337333333337333333333333333773333777333333333333733333333333333333333333373333333333733733373333333733333333333333333333333733333373333333333333337333733373333373333733733337333333333373333333333333333333333333333333333333333333773373333333333333333373333333333333333333333333333333333373333337333333333733333333333333733333733733333333333333333733333333333333333333333333333337333333333333337333333333373333333333333333373333333773373373333333333333333333333333333733333733733333333333333333737333337333333333333333377333373333333333333333333333333733333333333333333333333333333373333733733333333333333337333333333373373337333333333337333333333333333373337333373333333333333373337733333333333333333373337333733333333733333333333333333333333333733333333733333333333333333333333333733733333333333337333333733333333333333333333373333333333333333373333333373333337333333733333773333333373333333333333733333333773333333333333337333337333333333333333333333333333333333337333333333373337377333733333333333337333333737377333333333333333333337373733333333333373333733733333733377333333733333





Spoiler: prime made of square numbers with 0s between them



90002500081000360003600064000900081000640004900049000360008100025000100010004000810004000160001000160001600025000360008100010002500010004000160009000810003600025000900049000250009000250006400036000640001600025000100064000100064000160008100025000160006400016000160004900016000360006400090001600081000400040001600064000640004900049000160001000900016000360003600025000490008100016000400036000490004000810001600064000160004000100064000160003600025000640001600064000360006400081





Spoiler: prime made of primes with 0s between them



970110730710301703101304705301708905301907102901902037050470304304707903108304108902907108301902017030670301301902307304107304109703704707073067070610610670207302089017053047089073030230610301309704705905304708905906102903011070502905907305067011047067070208303709708309704101906707303103097041011071047053073047017070610530706107104706708306707097020970830304105097041050170310110310110370470730110207105017041017059073071073053097037089070590710470430190310190410530970790130230470310710670590670430290230707106707305303041053017023041073011029031047020530203101102020370710190410830290730507906708307905906105059020610130207031011079031061029041070110590701307104301102903702305307901703030370110410709707073017050590410710830708901706108305905301101101105070830790530610670670670310110670370230530890208905304307104303706701102020505043097043011097070710890830530370370230110110170590110410501907029050470410530170507907104707306707101307908304702305050970130502061079059083031019071019019011030790130110470710501707104101703107103053089011029020208902061071011067071070610830710430590370290730610230470410710710130501901304704703708307905908303073030290230290230530190190290830370730170170303108305037073013071061061019070410530207023089023071031053047041017041059029020410410890501301904305017037097043079037097079030710970830310290790206702043070610430190310290410509701706104702904104702023071097059017





Spoiler: only containing 1 2 and 3



2313131231321223131221333123132123323233132313322321323231121312231113311223232211313313123221132123232212233123233321221111111221113313322312122311121323333231322312311232211222211232121222121231332332132213133333111121322223311313133332221133123212333111221113232322333111331232112211323112323331331331213333232113223121131232212311123331331132311212231231233312112321312121323123331122132132333333313322122113313211321232123321132122123333112321223311123321112131311221312223333132313123121111332322233312112311312323132233313111121122123222232323312331212121113321111233322113212313232332213123311131222323333222232222133133321331132323112133111112221233232122111323311323122312321223312212332113132113111132133212321312221211312122221132311311313231312122122112311232213333311332121233212323132323311131123133213213111113121211122211113332223112222333221213113332231211321222323113123113112231223231111333231122223213231113312333131133321323233221213222212322313332311231111132131112331123321333





Spoiler: lolololol 69 leet



133769696969133769691010101011337691337133710101010169133713371337691010101016913371010101011010101011010101011010101011010101011337133713371010101011337133710101010110101010169133713371337691010101016910101010169101010101133713376969691010101011010101016910101010169101010101133769133710101010110101010113376969101010101696910101010110101010110101010169133713371010101016969691010101011010101011010101011010101011010101011010101016910101010169133710101010169691337101010101696969133769691010101011337133769133710101010169133769696913371337691337101010101696969691010101016969133710101010113376969133713376969691337691010101011337696969691337133710101010113371010101016913371010101011010101016913376910101010169101010101101010101696913371010101016910101010110101010169101010101691010101011337691337101010101133713371010101016913371010101011337101010101133713376913371010101011337133713371010101011337691010101016913371010101016910101010169691337133710101010169696913371337691337133713371337101010101133710101010169101010101691337133710101010110101010113371337101010101696913376913371010101016969691337133710101010110101010169696910101010110101010169133710101010113371010101011337133769133710101010113371010101016913376910101010169696910101010110101010169101010101691010101011337101010101133710101010110101010113371337691337133769101010101133769101010101691337133710101010169133713376910101010110101010169696910101010110101010110101010169133769133710101010110101010110101010169101010101696913371010101011337101010101691010101011337133713371010101011010101011337133769101010101101010101133769696910101010110101010169101010101133710101010110101010169133713371010101011337101010101691337133713376969101010101101010101133769133713376913371337101010101696969691010101011337101010101101010101133710101010110101010110101010169133710101010169133713371010101016913371010101011337101010101691010101011010101011010101016969101010101691337133710101010113371337133710101010169133713371010101016913371337101010101696913371337101010101691010101016910101010113371010101011337691010101011010101016969133769133710101010110101010169133710101010169101010101691337691337101010101133710101010113376910101010169691010101011010101011337133710101010169101010101133769133710101010113376910101010113376913371010101011010101016969101010101691010101011010101011010101011010101011010101011010101011337101010101133710101010113376969696913371337101010101691337101010101691337696969696913371337133713371010101011337





Spoiler: alot of 7s and a 1



7777777777777777777777777777777777777777777177777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777





Spoiler: 1357 and 2468



135724682468135724682468135724682468135724682468135713572468135724681357135724681357246824681357246824681357246813571357246824681357246813572468246813571357246824682468246813571357246813571357135713571357246824681357135713572468135724681357135724682468246824681357246813571357246824681357246824681357135713571357246824682468246813572468246813571357246824682468135724682468135713572468246813571357135724682468246824682468135724681357135713571357135713572468246813571357135724682468246813572468135724681357135724682468135713571357246824681357246824682468246824682468135724682468246813571357135724682468246813572468246824682468135724682468246813571357246813572468246813571357135713571357246824681357246813572468135724681357246813572468135713572468246813572468246813572468246824682468135713572468246824682468135724682468246813572468135724681357246824682468246824681357246813571357135724681357246824682468135713571357135724682468246813572468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824682468246824681357246824681357246813572468246824681357





Spoiler: 1 and 123456789



1123456789123456789112345678912345678911234567891234567891123456789123456789111234567891123456789111234567891123456789123456789112345678912345678911234567891112345678912345678911234567891123456789123456789111234567891234567891234567891234567891112345678911111123456789123456789111123456789112345678911123456789123456789123456789123456789112345678911123456789123456789112345678912345678911111234567891234567891234567891234567891123456789123456789111234567891234567891234567891123456789123456789111234567891234567891111234567891234567891234567891234567891234567891123456789111111123456789123456789111123456789123456789123456789112345678911234567891112345678912345678911112345678912345678911234567891234567891234567891234567891234567891234567891123456789123456789123456789111123456789123456789123456789112345678912345678912345678912345678911234567891234567891234567891112345678911234567891234567891111112345678912345678911234567891123456789112345678911234567891123456789111234567891234567891123456789123456789112345678912345678912345678912345678911123456789123456789123456789123456789112345678912345678912345678911234567891123456789112345678912345678912345678912345678912345678911234567891111234567891123456789123456789123456789111112345678912345678912345678912345678911111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112345678912345678912345678911234567891123456789123456789123456789123456789





Spoiler: mostly 1s with afew 7s



1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111717771117





Spoiler: 0 and 123456789



1234567890012345678900123456789001234567890012345678912345678901234567890123456789123456789012345678900123456789001234567890123456789123456789001234567890123456789001234567891234567890000123456789123456789012345678912345678912345678912345678912345678900123456789123456789123456789012345678901234567891234567890000123456789012345678912345678900123456789001234567891234567891234567891234567890000123456789001234567891234567890001234567890012345678912345678900123456789123456789123456789000001234567890123456789123456789123456789123456789123456789123456789001234567891234567891234567890001234567890123456789012345678912345678900123456789123456789123456789001234567890000001234567890001234567891234567891234567890001234567890000123456789000123456789123456789012345678900123456789123456789123456789123456789123456789001234567890123456789012345678901234567890123456789012345678912345678900123456789001234567890000123456789123456789000012345678900012345678901234567890123456789000001234567890123456789123456789123456789012345678900012345678912345678912345678912345678900001234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567891234567890000123456789123456789123456789001



10^2000 + 10^1515 + 10^731 + 10^357 + 1
10^5076 + 7
10^2067 + 3
(998*1006!)^2 + 1

soup just found 218707*2^88670 +1 about an hour ago which is a lot bigger than all of those (26699 digits)


----------



## goodatthis (Jun 26, 2014)

Took my algebra 2/trig regents (ny state exam) a week ago, would have gotten a 98 if it weren't for me forgetting that 0 occurrences is a possible probability for one of the questions, and if my calculator wasn't in freaking radians for the last, 6 point question. Stupid. Still got a 94 though, and it's considered a very hard test, so I'm happy.


----------



## 10461394944000 (Jun 26, 2014)

ok jus done step2 and it was weryhard


----------



## cmhardw (Jun 27, 2014)

10461394944000 said:


> yeah, pretty much, me and soup have found lots of silly primes recently. examples:
> 
> that one
> 
> ...



Neat!

How are you testing primality of these numbers? Are you using software to try to factor them? Are you using number theory and primality tests?

I've always liked this site for factoring. Are you using this site, or something like it?


----------



## 10461394944000 (Jun 28, 2014)

cmhardw said:


> Neat!
> 
> How are you testing primality of these numbers? Are you using software to try to factor them? Are you using number theory and primality tests?
> 
> I've always liked this site for factoring. Are you using this site, or something like it?



1 line of mathematica code


----------



## qqwref (Aug 9, 2014)

What font size would you need for the word "SMILES" to actually have a mile between the two S's? Assume Verdana.


----------



## TDM (Aug 9, 2014)

qqwref said:


> What font size would you need for the word "SMILES" to actually have a mile between the two S's? Assume Verdana.


any
E: well anything bigger than 0


----------



## rebucato314 (Aug 20, 2014)

The hardest thing i learnt in maths is intergration. (in calculus)

(btw I'm 11)


----------



## ryanj92 (Aug 22, 2014)

I do physics, so I need to be fairly sharp with my maths also. Especially seeing as I like all the theoretical stuff so I need the maths to be able to understand it...

I answered 'equations' because of differential equations  I think the fiddliest maths I've had to do so far was for an applied maths-type module I did last year, where we solved ODE's using series solutions. I screwed up the question on it in the exam - keeping track of indices is difficult


----------



## cmhardw (Oct 2, 2014)

Has anyone else had issues with LaTeX with the \lfloor, \rfloor, \lceil, and \rceil tags in [noparse]\( [/noparse] mode? \)


----------



## Christopher Mowla (Oct 4, 2014)

cmhardw said:


> Has anyone else had issues with LaTeX with the \lfloor, \rfloor, \lceil, and \rceil tags in [noparse]\( [/noparse] mode? \)


\( I've had problems recently as well. About a month ago, at least, LaTeX worked sometimes and sometimes it didn't.

I have used http://sciencesoft.at/latex/?lang=en to print out very large formulas (since there is a limit on the number of characters with LaTeX on this site), and thus I use that to create images and then I upload them on the web whenever the LaTeX is down on this site.

To use that online tool,
[1] Click the blue "Example" button.
[2] Delete all generated text between the line of text "% Birkhäuser Boston 1996 entnommen" and "\end{document}".
[3] Type your latex in between those two lines in AMS-LaTeX form.
[4] Click the "Start LaTeX" button.

For example, to create \( \left\lfloor \frac{n-2}{2} \right\rfloor \),

Instead of <math>\left\lfloor \frac{n-2}{2} \right\rfloor </math>
type:
\[
\left\lfloor {\frac{{n-2}}{2}} \right\rfloor 
\]

(I just use MathType Equation Editor to translate for me.). \)


----------



## TDM (Nov 6, 2014)

Anyone else do the senior maths challenge today?


----------



## JediJupiter (Nov 15, 2014)

TDM said:


> Anyone else do the senior maths challenge today?


Hell yes! I didn't answer the first question in section 2 and that one about the cube that she drew an "unbroken" line on I got wrong, because I thought the end and beginning had to join up but they didn't...


----------



## TDM (Nov 15, 2014)

JediJupiter said:


> Hell yes! I didn't answer the first question in section 2 and that one about the cube that she drew an "unbroken" line on I got wrong, because I thought the end and beginning had to join up but they didn't...


Yeah, I thought that at first too... I think I eventually decided, for some reason, that would make the line have an infinite length (not sure why I thought that ), so it couldn't join up. I think the answer was four of the long straight lines and two of the shorter diagonal ones... can't really remember 
What did you get?


----------



## JediJupiter (Nov 16, 2014)

TDM said:


> Yeah, I thought that at first too... I think I eventually decided, for some reason, that would make the line have an infinite length (not sure why I thought that ), so it couldn't join up. I think the answer was four of the long straight lines and two of the shorter diagonal ones... can't really remember
> What did you get?



I can't remember? I think it was four diagonal ones and two straight across. Good luck getting into the next round! Are you doing the team maths thing too?


----------



## TDM (Nov 16, 2014)

JediJupiter said:


> I can't remember? I think it was four diagonal ones and two straight across. Good luck getting into the next round! Are you doing the team maths thing too?


Thanks! I think I did get into the next round; I got 110... even though I got question 5 wrong :fp
Yeah, I'm doing the team maths challenge as well. It's going to be at our school, so we're supposed to have two teams doing it, but we could only find 4 people who actually wanted to do it


----------



## JediJupiter (Nov 16, 2014)

TDM said:


> Thanks! I think I did get into the next round; I got 110... even though I got question 5 wrong :fp
> Yeah, I'm doing the team maths challenge as well. It's going to be at our school, so we're supposed to have two teams doing it, but we could only find 4 people who actually wanted to do it


It sucks that you could only find 4, we already had ours and we came 4th which was pretty good.


----------



## TDM (Nov 16, 2014)

JediJupiter said:


> It sucks that you could only find 4, we already had ours and we came 4th which was pretty good.


Oh nice. Does 4th get you through to a later round?


----------



## JediJupiter (Nov 16, 2014)

TDM said:


> Oh nice. Does 4th get you through to a later round?


You pretty much need to come first and sometimes they let you through if you're second, so sadly no, but out of 30 it's definitely a good result.


----------



## TDM (Nov 16, 2014)

JediJupiter said:


> You pretty much need to come first and sometimes they let you through if you're second, so sadly no, but out of 30 it's definitely a good result.


Oh, that's unfortunate. Yeah, 4th is good.
If you need to get first to get through then I don't think we're going to get through to the next round either ... we don't have anyone from year 13 in our school


----------



## TDM (Nov 19, 2014)

ok so the team maths challenge went even worse than I expected  We got 5/10 in the first round, did well in the second and then completely failed the final round. One school got 100% in all three rounds...


----------



## Ickathu (Feb 5, 2015)

mkay, I need help with my intermediate number theory class. I'm stuck on two proofs. I've gotten some stuff on one of them, and nothing on the other one:

Unfortunately, these forums don't support LaTeX, but I image-ized my work; hopefully the upload works.



Spoiler: first one



Prove that the system x^6+x^3+x^3y+y = 147^{157} x^3+x^3y+y^2+y+z^9 = 157^{147} has no solutions in integers x, y, and z.

Here's what I've got so far. I think I'm really close, but I can't get any more. 



And the second one



Spoiler: Problem Two



Show there are infinitely many primes that are equivalent to 1 mod 8.

This one comes with two hints:
Hint #1: For the first half of the solution: Recall the problem from class about x^2 + xy + y^2. Apply the same ideas to numbers of the form x^4 + 1. 

Hint #2: For the second half of the solution: How did Euclid show there were infinitely many primes?




Any help would be fantastic.


----------



## Eduard Khil (Feb 6, 2015)

Only in Year 9...


----------



## Seanliu (Feb 7, 2015)

Sahid Velji said:


> Spoiler
> 
> 
> 
> Why does it do nothing for 1 and 2? The answers should be 1 and 2 respectively.




To a 100, it goes to 9.332622e+157. Just helping out.


----------



## chronondecay (Feb 23, 2015)

Ickathu said:


> mkay, I need help with my intermediate number theory class.



Yes! Something that I can actually contribute to the forums 

Though I hope I'm not too late...



Ickathu said:


> Prove that the system x^6+x^3+x^3y+y = 147^{157} x^3+x^3y+y^2+y+z^9 = 157^{147} has no solutions in integers x, y, and z.



For the first part, you actually don't need to find the orders at all! You can just simplify using 14^18 = 15^18 = 1 (mod 19).

The factorisation is nice. Now the first thing we want to investigate is the z^9 term: what values can z^9 take (mod 19)?

Now there are two things we can do here: add the two congruences, or subtract them. Try it out! (Hint: one of them solves the question.)



Ickathu said:


> Show there are infinitely many primes that are equivalent to 1 mod 8.



I don't know what you did in class with x^2+xy+y^2, but let's try this.

Let p be a prime that divides x^4+1 for an integer x. In other words, x^4 = -1 (mod p). Now what can the order of x (mod p) be?

Deduce that either p = 2, or p = 1 (mod 8).

For the second half of the proof, we assume like Euclid's proof that there are finitely many primes that are = 1 (mod 8), say {p_1, p_2, ..., p_k}. Now we want to make a number that must have a 1 (mod 8) prime factor, but not divisible by any of p_1, ..., p_k. This would be a contradiction, which is what we want.

How do we make this work? How does the first half link to the second half? How do we rule out the case p=2?


I hope that's enough to get you going. Good luck with your course!


----------



## Ickathu (Feb 23, 2015)

chronondecay said:


> Yes! Something that I can actually contribute to the forums
> 
> Though I hope I'm not too late...



Thanks, I ended up figuring them both out, using the same(ish) methods as you hinted at.

My class is over now, and it makes me sad because (a) I love math and (b) I love number theory...


----------



## chronondecay (Feb 24, 2015)

Ickathu said:


> My class is over now, and it makes me sad because (a) I love math and (b) I love number theory...



Wow, it isn't everyday that you hear someone say that! :tu
(Though I suppose being on the math thread in a cubing forum helps, lol)

Most number theory beyond the level of your class would probably no longer actually involve numbers... Though I think if you enjoy other parts of higher math (linear algebra? calculus? real analysis? _group theory?_) you'll enjoy more advanced number theory as well.

Here's my favourite theorem. It's easy to state but its proofs can be very involved:



Spoiler



Let p,q be distinct odd prime numbers. Consider the two congruences

x^2=p (mod q)
y^2=q (mod p),

where x,y are integers. Then either both congruences have a solution, or neither of them do,
*unless*
p=q=3 (mod 4), in which case exactly one of the congruences has a solution in integers.



Shoutout to all math students out there: what's your favourite theorem?


----------



## Keroma12 (Feb 24, 2015)

chronondecay said:


> Shoutout to all math students out there: what's your favourite theorem?



Possibly http://en.wikipedia.org/wiki/Compactness_theorem.


----------



## chronondecay (Feb 25, 2015)

Keroma12 said:


> Possibly http://en.wikipedia.org/wiki/Compactness_theorem.



I've always known that theorem as black magic, because 1. I have no idea how its proof goes, and 2. it proves this immediately:



Spoiler: what is this magic



Theorem: There are nonstandard models of first-order Peano arithmetic.

Proof: Consider the theory containing the first-order Peano axioms (P1-P5), and the following infinite set of axioms:

A0: There exists n such that n is not equal to 0.
A1: There exists n such that n is not equal to 1.
A2: There exists n such that n is not equal to 2.
...

Clearly any finite set of axioms in this theory has a model (namely the set of natural numbers). By the compactness theorem, this theory has a model, which clearly cannot be the set of natural numbers. QED.






chronondecay said:


> Shoutout to all math students out there: what's your favourite theorem?



Any other takers?


----------



## cmhardw (Mar 4, 2015)

I just did a fun problem, with a neat solution. I post it here for others to have fun with, and potentially for us to compare methods of solution if people are interested.

I am listening to a playlist of songs on grooveshark. There are 18 songs in my playlist, and I have it set to shuffle (play songs in random order). Assuming that the player could potentially repeat a song, what is the expected song play at which I hear my first repeat song? If any song plays for the second time, then I consider it a repeat play.

For example, if there are five songs (A, B, C, D, E) and the player plays them in order:
DCEBC

Then the 5th play was the song C for the second time, and I would say that the 5th play is when the first repeat happened. The question again is which song play is the expected first repeat play of any song, given a playlist of 18 songs?

Have fun 



chronondecay said:


> Shoutout to all math students out there: what's your favourite theorem?



Gödel's (first) incompleteness theorem


----------



## Stefan (Mar 4, 2015)

cmhardw said:


> The question again is which song play is the expected first repeat play of any song, given a playlist of 18 songs?





Spoiler



About 6.007? My solution isn't neat at all, though, so I'm interested in yours.


----------



## TDM (Mar 4, 2015)

Stefan said:


> Spoiler
> 
> 
> 
> About 6.007? My solution isn't neat at all, though, so I'm interested in yours.





Spoiler



I couldn't believe it would be so low, but I found a random letter generator, and ran it 100 times, and got 6.03 as the average. Didn't expect that...
(even though I knew your maths would be right, I didn't want to believe it )


----------



## cmhardw (Mar 4, 2015)

Stefan said:


> Spoiler
> 
> 
> 
> About 6.007? My solution isn't neat at all, though, so I'm interested in yours.



I got the same answer. My solution was:


Spoiler



I'm still having trouble with LaTeX on this forum, so here's my general solution for n songs

And here's my solution for 18 songs

To be clear, the solution method I used is probably not particularly neat. I found the result neat because for 18 songs, the number in my actual playlist, the result is very nearly a natural number. For n=7 and n=12 songs the expected value is also very close to a natural number, but for n=18 it is closer than the other n values I mentioned. In addition to that, this problem is very similar to the birthday paradox problem, a problem I like. For those two reasons I found this problem to be neat


----------



## Stefan (Mar 4, 2015)

Chris: Meh, I wouldn't call this neat. My solution is basically the same, btw (though I admit I originally made the mistake of only going to 18, not 19).

TDM: R is really good at this kind of stuff, I did a big experiment as well before I posted: http://ideone.com/q2li4r


----------



## cmhardw (Mar 4, 2015)

Stefan said:


> Chris: Meh, I wouldn't call this neat. My solution is basically the same, btw (though I admit I originally made the mistake of only going to 18, not 19).
> 
> TDM: R is really good at this kind of stuff, I did a big experiment as well before I posted: http://ideone.com/q2li4r



I clarified what I meant by neat within my previous post, but it appears to have been after you made this post.


----------



## Stefan (Mar 4, 2015)

cmhardw said:


> I clarified what I meant by neat within my previous post, but it appears to have been after you made this post.



Ah yes, that edit came too late for me. And I agree it's kinda neat that way. I had actually done my big experiment before my formula and got a number very close to 6, making me wonder whether the correct value is actually exactly 6 (but I highly doubted it).


----------



## chronondecay (Mar 5, 2015)

A slightly neater expression for the answer.

Let P(m) be the probability that the first m songs are _distinct_. P(m) has a nice expression (the product (18-k)/18 in my answer). Now the probability that the first repetition occurs after exactly m songs is just P(m-1)-P(m), and we can proceed from there.


----------



## lerenard (Mar 5, 2015)

I see others have responded, but I haven't looked at any of their spoilers, I promise!



Spoiler



For a playlist of length n, the probability that the xth song will be a repeat of a previously played song is given by
{[n!/(n-x+1)!]/n^(x-1)}[(x-1)/n] for n ≥ x
and [P(x-1)]/(x-2) for n < x
If we graph this equation for n=18, we find that x=5 returns the greatest value, and thus it is more likely that it will be the 5th song than any other single song. (I think you could use the second derivative or something to find out the same thing, but we haven't gotten that far yet in Calculus)

How I arrived at my answer:
I started with n=4

xP(x is a repeat given there haven't been any repeats yet) = c10 already-played songs to repeat / 4 total = 0/421 already-played songs to repeat / 4 total = 1/432/443/454/4
But that assumes that none of the previous songs have been repeats. Thus, to find the probability the xth song will be a repeat, we need to multiply c by the probability none of the previous have been repeats (d)
so:

xd1undefined? (there were no previous songs)24/4=134/4*3/4=3/444/4*3/4*2/4=3/854/4*3/4*2/4*1/4=3/32


xc*d = P(x)10/4*1=021/4*1=1/431/2*3/4=3/843/4*3/8=9/3251*3/32=3/32
But of course this only works with 4 songs. To extrapolate to 18 songs, we need to formulate an equation to describe n=4 that will apply to all values of n.

We continue to separate c and d, because the equation for c is very easy: (x-1)/n.
So what's the equation for d? It definitely has something/n^(x-1) because we see in the table for d that we are always multiplying by a number of fractions with n in the denominator equal to x-1. The numerator, then, is n!/(n-x+1)!
That's how I arrived at {[n!/(n-x+1)!]/n^(x-1)}[(x-1)/n]
I noticed it didn't work for values where x>n, so I generated another equation to solve those values.

any questions?

EDIT: so apparently everyone else understood it to mean the value of x at which the sum of x and all smaller values of x is greater than .5, which I also calculated and found to be 6 using my equation, but the way the question was worded, I thought we were supposed to find the single value of x which had the highest probability of being the first repeat. I used the graph on this page to find that value


----------



## cmhardw (Mar 5, 2015)

lerenard said:


> Spoiler
> 
> 
> 
> ...





Spoiler



To be honest I had to do some research on this before replying. My interpretation of your solution is that you figured out the probability mass function for this situation and then picked the mode, the value with the highest probability of occurrence.

I don't claim to be an expert on this, I'm actually taking my first official statistics course this semester in grad school, so take what I say with a grain of salt.

It appears that using the mode to estimate the "most representative" value in a distribution introduces more error than using the "expected value" or "mean" of that distribution.

Here is an article that explains the difference between using the mean and mode. It shows via a demonstration that the mode introduces more error than using the mean.

I also found this article useful (go to the "Comparison of Mean, Median, and Mode section and look at the graphs for the skewed or log normal distributions)

I don't know if this helps point you in the right direction. I had never thought about the mode as compared to the mean for estimating a "representative" value of a distribution, and I definitely learned something new!


----------



## cmhardw (Mar 6, 2015)

My wife and I just did an interesting math problem. I post it here because we had fun thinking about this, and perhaps others will too.

My wife is working on a project making maps in one of her classes. Her class is split up into teams of 5 people, and everyone in a team is working on their own project making a map. When working on a project, each member in a team of 5 people must ask another member in the team for feedback on their project.

Question: If everyone in a team of 5 randomly asks another member in their team for help, then what is the probability that everyone in the team is asked to review someone else's project?

For example, one outcome is that the other four team members might ask my wife to review their projects, and she would ask someone to review her project. This would be two people reviewing others' projects. Stating the original question a different way, what is the probability that there are five project reviewers in my wife's team?


----------



## lerenard (Mar 6, 2015)

cmhardw said:


> My wife and I just did an interesting math problem. I post it here because we had fun thinking about this, and perhaps others will too.
> 
> My wife is working on a project making maps in one of her classes. Her class is split up into teams of 5 people, and everyone in a team is working on their own project making a map. When working on a project, each member in a team of 5 people must ask another member in the team for feedback on their project.
> 
> ...





Spoiler



11/256?
I labeled the people A through E and calculated 256 possible combinations based on the assumption that B reviews A (assuming that is one "orbit" and that other possibilites where someone else reviews A would be parallel and so aren't worth calculating individually). If two pairs of people review the person who reviewed them, then not everyone has been a reviewer, so I first paired each group of people up and found there were 6 combinations where one pair reviewed each other, and then another 6 where no one reviewed the person who reviewed them. Is this right?

Oh, and in response to your response about the mean versus the mode, I vaguely remember that from AP Statistics... The thing about that class is that I never actually learned anything, I just zoned the teacher out and used the example problems in the textbook to figure out how to do my homework and then it was fresh enough in my memory that I could figure out how to make stuff work on test day, but as far as applying stuff from way back then to a random problem now, there's no hope.


----------



## Cale S (Mar 6, 2015)

cmhardw said:


> Question: If everyone in a team of 5 randomly asks another member in their team for help, then what is the probability that everyone in the team is asked to review someone else's project?





Spoiler



I think this is right...

Let's say the 5 people in the team are called A, B, C, D, and E.
There are 5 people and each can choose one of the 4 others. This means a chart showing all possible selections would have 4^5 = 1024 different possibilities. 
Let's also say that we represent the choices made by a sequence of 5 letters, first with who A chose, then who B chose, etc. If we had BCAAD, that means C and D both chose A, B chose C, D chose E, etc.
For everyone to be chosen, the 5 letter sequence has to be an anagram of ABCDE. Also, A cannot be in the first position, B cannot be in the second, C cannot be in the third, etc.
The number of anagrams of ABCDE (including itself) is 5! = 120. Only 42 of these have A not in the first position, B not in second, etc.
42/1024 ≈ 4.10%



Edit: ok apparently I was wrong (I counted 42 by hand) and it should actually be 44 so 44/1024 ≈ 4.29%


----------



## Stefan (Mar 6, 2015)

Your _"my wife"_ sounds so weird to me. Not sure whether it's because you're married or because I'm used to you using her name 



Spoiler



Of the 4^5 possibilities, we're interested in every 5-cycle (there are 4!) and every 2-cycle+3-cycle (there are 5c2*2):

11/256

Or with simple counting: http://ideone.com/VuEkvR


----------



## cmhardw (Mar 7, 2015)

Stefan said:


> Your _"my wife"_ sounds so weird to me. Not sure whether it's because you're married or because I'm used to you using her name



I do usually use her name on the forum. I thought to post more generally for those on the forum who don't know me and who I haven't met. I'll probably just use her first name in the future 

My solution:


Spoiler



I also got 11/256

I counted 4^5 total ways that 5 people can choose someone else to review their project.

I counted the derangements of 5 elements ways that all five people can be assigned as reviewer to someone else (since no one can review themselves).

5!*(1/2!-1/3!+1/4!-1/5!)=44

44/1024

11/256


----------



## Stefan (Mar 7, 2015)

Man, your solution is a harder challenge that the question . Please explain or give a hint.


----------



## Ickathu (Mar 7, 2015)

chronondecay said:


> Wow, it isn't everyday that you hear someone say that! :tu
> (Though I suppose being on the math thread in a cubing forum helps, lol)
> 
> Most number theory beyond the level of your class would probably no longer actually involve numbers... Though I think if you enjoy other parts of higher math (linear algebra? calculus? real analysis? _group theory?_) you'll enjoy more advanced number theory as well.
> ...



Calc is pretty cool. I'm doing statistics now, but I might also do linear algebra this semester. Group theory fascinates me, but I've never formally done it.

Favorite theorem? That's a tough question. I have no idea.


----------



## cmhardw (Mar 7, 2015)

Stefan said:


> Man, your solution is a harder challenge that the question . Please explain or give a hint.





Spoiler



Let (x,y) be an ordered pair denoting
x=Project Owner
y=Project reviewer

x may not equal y (a person cannot review their own project)

Let there be five people named 1,2,3,4,5

I am interested in all ordered pairs:
(1,_)
(2,_)
(3,_)
(4,_)
(5,_)

where y is an element of {1,2,3,4,5} and x/=y

Each person has a choice of 4 reviewers, so 4^5 counts the number of ways that the whole group may ask people to review their project.

To count the number of ways that all five members of the group may be a reviewer I want to know the number of functions I can create out of these five ordered pairs where the range is the entire set {1,2,3,4,5} and x/=y

If x may not equal y, then there are the derangements of 5 elements ways to create ordered pairs such that x/=y and the range is the set {1,2,3,4,5}

5!*(1/0!-1/1!+1/2!-1/3!+1/4!-1/5!) uses inclusion/exclusion to count the number of ways to derange five elements and is equal to 44.

44/1024=11/256 is the probability that every member of the group is asked to be a reviewer.


----------



## Stefan (Mar 7, 2015)

Spoiler






cmhardw said:


> 5!*(*1/0!-1/1!*+1/2!-1/3!+1/4!-1/5!) uses inclusion/exclusion


Ah, I didn't realize I could add those first two summands and they'd cancel out. I still had to google to find the meaning of the summands, and then cancel and factor out. I got this longer formula where i is the minimum number of "self-reviewers". From this I get to your formula as well. And it's certainly the neatest solution, we others all seemed to have non-scalable solutions (I thought mine was neat, but for larger than 5 I'd need to reanalyze and it'd just get messy).


----------



## cmhardw (Mar 7, 2015)

Stefan said:


> Spoiler
> 
> 
> 
> Ah, I didn't realize I could add those first two summands and they'd cancel out. I still had to google to find the meaning of the summands, and then cancel and factor out. I got this longer formula where i is the minimum number of "self-reviewers". From this I get to your formula as well. And it's certainly the neatest solution, we others all seemed to have non-scalable solutions (I thought mine was neat, but for larger than 5 I'd need to reanalyze and it'd just get messy).





Spoiler



I took a combinatorics class in college and my professor for that class really liked the inclusion exclusion technique. I think that's partly why I like it so much, because we used it a lot in class.

He started with the general version of your formula and showed us how after factoring out n! that it reduces to this and if n>1 it reduces even further to this. I use this last formula when calculating derangements when n>1.


----------



## Stefan (Mar 7, 2015)

Spoiler



Holy ****, now that both you and Ravi called it derangements, I found out that not only is that a well-known term, but there's even a notation for it so I can say !5. Wow. That's gonna come in handy for those riddles where you have to reach certain numbers by combining certain others.


----------



## cmhardw (Mar 7, 2015)

Stefan said:


> Spoiler
> 
> 
> 
> Holy ****, now that both you and Ravi called it derangements, I found out that not only is that a well-known term, but there's even a notation for it so I can say !5. Wow. That's gonna come in handy for those riddles where you have to reach certain numbers by combining certain others.





Spoiler



I learned the term derangement in my courses, but I did not know about the notation !n for the derangements of n items, cool! Yes, derangements are fun and they do seem to come up from time to time in combinatorial problems and riddles.


----------



## obelisk477 (Mar 13, 2015)

Can someone estimate the percentage of the ~43 quintillion positions that have probably been solved to date? Obviously this will be guesswork, but I think it would be interesting to try and figure out


----------



## Stefan (Mar 13, 2015)

obelisk477 said:


> Can someone estimate the percentage of the ~43 quintillion positions that have probably been solved to date? Obviously this will be guesswork, but I think it would be interesting to try and figure out



100% ?

"essentially solved every position of the Rubik's Cube"


----------



## obelisk477 (Mar 13, 2015)

Stefan said:


> 100% ?
> 
> "essentially solved every position of the Rubik's Cube"


Lol. Should've said speedsolved by a person


----------



## Stefan (Mar 13, 2015)

obelisk477 said:


> Lol. Should've said speedsolved by a person



When I scramble and solve, I go through roughly 80 positions (even more when I'm "hand-scrambling" for a while). Do all of those count, or only those _"during the solve"_, or or only the one _"between scrambling and solving"_? Also, does FMC count (asking because it's not really "speed"solving)?


----------



## obelisk477 (Mar 13, 2015)

Stefan said:


> When I scramble and solve, I go through roughly 80 positions (even more when I'm "hand-scrambling" for a while). Do all of those count, or only those _"during the solve"_, or or only the one _"between scrambling and solving"_? Also, does FMC count (asking because it's not really "speed"solving)?


I'll only answer what I'm looking for if you commit to actually giving it a go once you're satisfied you have all of the stipulations


----------



## pyr14 (Apr 17, 2015)

I've never studied calculus yet but I will most likely next year. I really like maths and none of these on in the poll that i have been studying seem hard. they are all easy. I like factorising a lot .


----------



## Artic (Apr 21, 2015)

hey guys,

Hopefully the math gurus can help me on a problem. I need to fit a 5th degree polynomial through two points, P0 (x0,y0) and P1 (x1,y1). Obviously, there are an infinite number of 5th degree polynomials that pass through the same points P0 and P1. What I need is a way of controlling *which* polynomial is created. For example, if I have the function defined as:







I want to be able to control which curve is created by *changing the time t*. In that way, I can create a family of 5th degree curves all of which pass through *the same two points*.

I should get something that looks like the following:






Any ideas how to do this?


----------



## Christopher Mowla (Jun 12, 2015)

Some might recall that earlier in this thread, I posted about a new method I invented regarding how to derive formulas like \( \sum\limits_{i=1}^{n}{i}=\frac{n\left( n+1 \right)}{2} \) from scratch using only a simple image.

Yesterday, I created and uploaded a three part video series on YouTube. I present the method in "Part 1", abstract it in "Part 2", and prove it in "Part 3". For those interested, enjoy!


----------



## Christopher Mowla (Apr 3, 2016)

For those who were interested to know how I found the factorial formula containing the nth derivative which I showed in this post, I just made this thread on mathisfunforum.com explaining how.


----------



## JustinTimeCuber (Apr 3, 2016)

Sa967St said:


> Not sure whether you put this thread in "Help/Suggestions" intentionally, but it doesn't belong there.
> 
> 
> [noparse]
> ...



Factorial! = Factorial * (Factorial - 1)!
= Factorial * (Factorial - 1) * (Factorial - 2)!
= Factorial * (Factorial - 1) * (Factorial - 2) * ... * 3 * 2 * 1
=
uhh
great, I just broke something


----------



## Matt11111 (Apr 7, 2016)

I'm not going to bother to read the entire thread, but has anyone ever been a part of a math team here?


----------



## hkpnkp (Apr 8, 2016)

I hate integration ::""**&&&*&!!!!!!


----------



## goodatthis (Feb 18, 2017)

Are complex numbers ever used in cube theory?


----------



## shadowslice e (Feb 26, 2017)

goodatthis said:


> Are complex numbers ever used in cube theory?


Well, I tried but nothing interesting ever came out of it.

You might also be able to use them as coordinates or something.


----------



## Christopher Mowla (May 27, 2021)

I just published a video entitled: Easiest (Single Variable and Mulitvariate) Data Interpolation Method ever made? (May 2021).

(For anyone curious.)

I won't apologize for the length, given that videos on multivariate interpolation are close to an hour and show zero concrete examples. (My video shows concrete examples and derives the method from scratch. And I think anyone at the college level should be able to understand it.)

Not saying it's a good or bad method. It is what it is.


----------



## xyzzy (May 29, 2021)

Christopher Mowla said:


> I just published a video entitled: Easiest (Single Variable and Mulitvariate) Data Interpolation Method ever made? (May 2021).


Ooooh, interpolation. Happens to be a thing I've studied a bit about. I think your method has quite a few major drawbacks that limit its practicality.

*1. The multivariate version doesn't work.*

You can't always decompose a multivariate function into a sum of univariate functions. Consider the following. Let \( f: (x,y)\mapsto xy \) be a bivariate function over \( x,y\in\{0,1\} \), so \( f(0,0)=f(0,1)=f(1,0)=0 \) and \( f(1,1)=1 \). If this were decomposable into univariate functions \( f(x,y)=g(x)+h(y) \), then we would have
\( 1=f(1,1)\\
=g(1)+h(1)\\
=g(1)+h(0)-h(0)-g(0)+g(0)+h(1)\\
=f(1,0)-f(0,0)+f(0,1)\\
=0, \)
a contradiction. This problem can arise when two input samples share at least one coordinate. (If all the duplicate coordinates are for only one of the axes, then the version of the interpolation method you presented is buggy, but it can at least be repaired.)

(Related: The Kolmogorov-Arnold superposition theorem says that you _can_ always decompose continuous multivariate functions into a finite number of continuous univariate functions, but it's a bit more involved than just adding up one function per component. The surprising part of the theorem is that the process is only a bit more involved!)

*2. The handling of nonintegers is very unnatural.*

The method as described in the video can only work if all the sampling locations lie on decadic rationals (the real numbers that have terminating decimal expansions). For example, having one of the independent variables at 1/3 (= 0.333…) would break it, because you can't multiply this by any power of 10 to get an integer. So maybe you repair this method by just multiplying by the LCM of the denominators… but what about irrational numbers? You can't multiply \( \sqrt2 \) by any integer to get an integer.

Even if we stick to just the decadic rationals, it's still problematic because the interpolation doesn't behave nicely under small perturbations of the sampling locations. Shifting a sampling location from 5 to 5.000001 dramatically changes the interpolated function, for example.

*3. It's actually not simpler than Lagrange interpolation.*

The cosines are only easy to evaluate on the integer multiples of \( \pi/2 \). If, say, I wanted to evaluate your interpolated function at 0.5, I'd end up having to calculate things like \( \cos(\pi\sqrt2) \), which don't really have a nice closed form.

The way sine and cosine are calculated is usually with a polynomial approximation. If the desired precision is known ahead of time, the coefficients to the optimally approximating polynomial can precomputed; otherwise, a Taylor series could be used. But in the end, you're still calculating polynomials.

*4. It doesn't serve the purpose of what people normally use interpolation for.*

_Why_ do people want to use interpolation? The key use of interpolation is when you can only collect a finite number of samples of a function, but you still want to describe what happens in between the samples you collected.

Some interpolation methods have convergence guarantees: as you increase the number of samples you take (and assuming your sampling isn't clustered in a small part of the whole domain), then under some smoothness assumptions on the ground truth (e.g. twice continuously differentiable), the interpolated reconstruction will converge to the ground truth (in sup-norm/L2-norm/whatever) at a certain speed.

As an extreme example, consider nearest neighbour interpolation in 1D. Let \( f:[0,1]\to\mathbb R \) be the underlying function. Suppose that \( f \) is continuous (this is the smoothness assumption); by the Heine-Cantor theorem, it's also uniformly continuous. Then as the mesh of the samples gets finer, the nearest neighbour interpolation of those samples \( \tilde f \) will converge in sup-norm to the underlying function \( f \). If we tack on an additional assumption that \( f \) is Lipschitz continuous (a stronger smoothness assumption), then we can further say something about the convergence rate: \( \lVert\tilde f-f\rVert_\infty=O(\text{mesh}) \).

Your interpolation method creates highly oscillatory functions, which make them an inherently poor fit for smooth underlying functions. They're also oscillatory in a very specific way, which makes them _also_ a poor fit for oscillatory functions that don't happen to have exactly the same pattern.

I think the disconnect here comes from what you're using interpolation for; it looks like you're using it as a means for condensing disparate pieces of information into a single formula that isn't "defined piecewise". This is… a sometimes questionable goal.

*5. If restricted to integer sampling points and integer inputs, this is zero-order hold.*

… Which is almost the same thing as nearest neighbour interpolation. This has its uses, but if you're going to use nearest neighbour, you might as well use it directly instead of going through a whole load of cosines.


----------



## Christopher Mowla (May 29, 2021)

xyzzy said:


> *1. The multivariate version doesn't work.*


You obviously meant doesn't work for all cases, but this was a good catch! Your provided counterexample was plain and simple. Thanks!



xyzzy said:


> *2. The handling of nonintegers is very unnatural.*


From what you mentioned, I wasn't aware that the output value of a continuous function should be able to produce the fractional form of a rational number. I thought computing with computers rounds numbers, and thus I didn't see a difference (because we could just assume m = # of digits you want 1/3 to have so that it registers to be 1/3 with whatever you're using to compute numbers). But fair enough.



xyzzy said:


> *3. It's actually not simpler than Lagrange interpolation.*


I mentioned in this part of the video that you don't have to calculate any cosine whose argument is not on the Unit Circle. But fair enough.



xyzzy said:


> *4. It doesn't serve the purpose of what people normally use interpolation for.*


Can't say I disagree with you. (I believe I expressed this opinion throughout the video.)



xyzzy said:


> *5. If restricted to integer sampling points and integer inputs, this is zero-order hold.*


Very cool comparison. And again, fair enough.


----------

