From c26f38114fedde81effb938ffbedfe922d77a322 Mon Sep 17 00:00:00 2001 From: Carlo Zancanaro Date: Tue, 7 Aug 2012 17:01:57 +1000 Subject: A whole bunch of clean up work around the place. - Make it a bit nicer to use the command-line - Remove the strategies we won't be using - Clean up some code around the place, generally --- impl/EquationSystem.hpp | 32 +- impl/EquationSystem.tokens | 33 - impl/EquationSystemLexer.c | 2087 ---- impl/EquationSystemLexer.h | 313 - impl/EquationSystemLexer.o | Bin 10104 -> 0 bytes impl/EquationSystemParser.c | 2396 ----- impl/EquationSystemParser.h | 324 - impl/EquationSystemParser.o | Bin 25428 -> 0 bytes impl/Expression.hpp | 4 +- impl/FixpointAlgorithm.hpp | 169 - impl/ImprovementOperator.hpp | 117 - impl/MaxStrategy.hpp | 126 +- impl/VariableAssignment.hpp | 98 +- impl/main.cpp | 111 +- impl/parser/EquationSystem.tokens | 33 - impl/parser/EquationSystemLexer.c | 2087 ---- impl/parser/EquationSystemLexer.h | 313 - impl/parser/EquationSystemLexer.o | Bin 10104 -> 0 bytes impl/parser/EquationSystemParser.c | 2460 ----- impl/parser/EquationSystemParser.h | 324 - impl/parser/EquationSystemParser.o | Bin 26200 -> 0 bytes impl/systems/generate-long.py | 4 +- impl/systems/gmon.out | Bin 56545 -> 0 bytes impl/systems/long-fixpoint.eqns | 20000 +++++++++++++++++------------------ impl/test/run | 2 +- 25 files changed, 10187 insertions(+), 20846 deletions(-) delete mode 100644 impl/EquationSystem.tokens delete mode 100644 impl/EquationSystemLexer.c delete mode 100644 impl/EquationSystemLexer.h delete mode 100644 impl/EquationSystemLexer.o delete mode 100644 impl/EquationSystemParser.c delete mode 100644 impl/EquationSystemParser.h delete mode 100644 impl/EquationSystemParser.o delete mode 100644 impl/FixpointAlgorithm.hpp delete mode 100644 impl/parser/EquationSystem.tokens delete mode 100644 impl/parser/EquationSystemLexer.c delete mode 100644 impl/parser/EquationSystemLexer.h delete mode 100644 impl/parser/EquationSystemLexer.o delete mode 100644 impl/parser/EquationSystemParser.c delete mode 100644 impl/parser/EquationSystemParser.h delete mode 100644 impl/parser/EquationSystemParser.o delete mode 100644 impl/systems/gmon.out diff --git a/impl/EquationSystem.hpp b/impl/EquationSystem.hpp index 4bae53a..4c55bd7 100644 --- a/impl/EquationSystem.hpp +++ b/impl/EquationSystem.hpp @@ -88,32 +88,6 @@ struct EquationSystem { return _right_sides[var.id()]; } - StableVariableAssignment* assignment(const Domain& value) const { - return new StableVariableAssignment(_variables.size(), value); - } - StableVariableAssignment* eval(const VariableAssignment& rho) const { - StableVariableAssignment* result = this->assignment(-infinity()); - for (unsigned int i = 0, length = _variables.size(); - i < length; - ++i) { - const Variable& var = *_variables[i]; - const Expression& expr = * (*this)[var]; - (*result)[var] = expr.eval(rho); - } - return result; - } - StableVariableAssignment* eval(const VariableAssignment& rho, const MaxStrategy& strat) const { - StableVariableAssignment* result = this->assignment(-infinity()); - for (unsigned int i = 0, length = _variables.size(); - i < length; - ++i) { - const Variable& var = *_variables[i]; - const Expression& expr = * (*this)[var]; - (*result)[var] = expr.eval(rho, strat); - } - return result; - } - void indexMaxExpressions() { _expr_to_var = new IdMap,Variable*>(maxExpressionCount(), NULL); for (unsigned int i = 0, length = _right_sides.size(); i < length; ++i) { @@ -130,11 +104,7 @@ struct EquationSystem { return NULL; } } else { - for (unsigned int i = 0, length = _right_sides.size(); i < length; ++i) { - if (_right_sides[i] == &expr) - return _variables[i]; - } - return NULL; + throw "Must index max expressions before attempting lookup"; } } diff --git a/impl/EquationSystem.tokens b/impl/EquationSystem.tokens deleted file mode 100644 index c706036..0000000 --- a/impl/EquationSystem.tokens +++ /dev/null @@ -1,33 +0,0 @@ -T__19=19 -T__20=20 -T__21=21 -T__22=22 -COMMA=4 -DIGIT=5 -GREATER_EQUAL=6 -GUARD=7 -LETTER=8 -MAXIMUM=9 -MINIMUM=10 -MULT=11 -NEWLINE=12 -NUMBER=13 -PLUS=14 -QUESTION_MARK=15 -SUB=16 -VARIABLE=17 -WHITESPACE=18 -'('=19 -')'=20 -'*'=11 -'+'=14 -','=21 -'-'=16 -';'=4 -'='=22 -'>='=6 -'?'=15 -'\n'=12 -'guard'=7 -'max'=9 -'min'=10 diff --git a/impl/EquationSystemLexer.c b/impl/EquationSystemLexer.c deleted file mode 100644 index 9236614..0000000 --- a/impl/EquationSystemLexer.c +++ /dev/null @@ -1,2087 +0,0 @@ -/** \file - * This C source file was generated by $ANTLR version 3.4 - * - * - From the grammar source file : EquationSystem.g - * - On : 2012-07-09 19:58:46 - * - for the lexer : EquationSystemLexerLexer - * - * Editing it, at least manually, is not wise. - * - * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. - * - * -*/ -// [The "BSD license"] -// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC -// http://www.temporal-wave.com -// http://www.linkedin.com/in/jimidle -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* ----------------------------------------- - * Include the ANTLR3 generated header file. - */ -#include "EquationSystemLexer.h" -/* ----------------------------------------- */ - - -/** String literals used by EquationSystemLexer that we must do things like MATCHS() with. - * C will normally just lay down 8 bit characters, and you can use L"xxx" to - * get wchar_t, but wchar_t is 16 bits on Windows, which is not UTF32 and so - * we perform this little trick of defining the literals as arrays of UINT32 - * and passing in the address of these. - */ -static ANTLR3_UCHAR lit_1[] = { 0x3E, 0x3D, ANTLR3_STRING_TERMINATOR}; -static ANTLR3_UCHAR lit_2[] = { 0x67, 0x75, 0x61, 0x72, 0x64, ANTLR3_STRING_TERMINATOR}; -static ANTLR3_UCHAR lit_3[] = { 0x6D, 0x61, 0x78, ANTLR3_STRING_TERMINATOR}; -static ANTLR3_UCHAR lit_4[] = { 0x6D, 0x69, 0x6E, ANTLR3_STRING_TERMINATOR}; - - - - - -/* MACROS that hide the C interface implementations from the - * generated code, which makes it a little more understandable to the human eye. - * I am very much against using C pre-processor macros for function calls and bits - * of code as you cannot see what is happening when single stepping in debuggers - * and so on. The exception (in my book at least) is for generated code, where you are - * not maintaining it, but may wish to read and understand it. If you single step it, you know that input() - * hides some indirect calls, but is always referring to the input stream. This is - * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig - * the runtime interfaces without changing the generated code too often, without - * confusing the reader of the generated output, who may not wish to know the gory - * details of the interface inheritance. - */ - -#define CTX ctx - -/* Aids in accessing scopes for grammar programmers - */ -#undef SCOPE_TYPE -#undef SCOPE_STACK -#undef SCOPE_TOP -#define SCOPE_TYPE(scope) pEquationSystemLexer_##scope##_SCOPE -#define SCOPE_STACK(scope) pEquationSystemLexer_##scope##Stack -#define SCOPE_TOP(scope) ctx->pEquationSystemLexer_##scope##Top -#define SCOPE_SIZE(scope) ctx->pEquationSystemLexer_##scope##Stack_limit -#define SCOPE_INSTANCE(scope, i) (ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i)) - - -/* Macros for accessing things in a lexer - */ -#undef LEXER -#undef RECOGNIZER -#undef RULEMEMO -#undef GETCHARINDEX -#undef GETLINE -#undef GETCHARPOSITIONINLINE -#undef EMIT -#undef EMITNEW -#undef MATCHC -#undef MATCHS -#undef MATCHRANGE -#undef LTOKEN -#undef HASFAILED -#undef FAILEDFLAG -#undef INPUT -#undef STRSTREAM -#undef LA -#undef HASEXCEPTION -#undef EXCEPTION -#undef CONSTRUCTEX -#undef CONSUME -#undef LRECOVER -#undef MARK -#undef REWIND -#undef REWINDLAST -#undef BACKTRACKING -#undef MATCHANY -#undef MEMOIZE -#undef HAVEPARSEDRULE -#undef GETTEXT -#undef INDEX -#undef SEEK -#undef PUSHSTREAM -#undef POPSTREAM -#undef SETTEXT -#undef SETTEXT8 - -#define LEXER ctx->pLexer -#define RECOGNIZER LEXER->rec -#define LEXSTATE RECOGNIZER->state -#define TOKSOURCE LEXSTATE->tokSource -#define GETCHARINDEX() LEXER->getCharIndex(LEXER) -#define GETLINE() LEXER->getLine(LEXER) -#define GETTEXT() LEXER->getText(LEXER) -#define GETCHARPOSITIONINLINE() LEXER->getCharPositionInLine(LEXER) -#define EMIT() LEXSTATE->type = _type; LEXER->emit(LEXER) -#define EMITNEW(t) LEXER->emitNew(LEXER, t) -#define MATCHC(c) LEXER->matchc(LEXER, c) -#define MATCHS(s) LEXER->matchs(LEXER, s) -#define MATCHRANGE(c1,c2) LEXER->matchRange(LEXER, c1, c2) -#define MATCHANY() LEXER->matchAny(LEXER) -#define LTOKEN LEXSTATE->token -#define HASFAILED() (LEXSTATE->failed == ANTLR3_TRUE) -#define BACKTRACKING LEXSTATE->backtracking -#define FAILEDFLAG LEXSTATE->failed -#define INPUT LEXER->input -#define STRSTREAM INPUT -#define ISTREAM INPUT->istream -#define INDEX() ISTREAM->index(ISTREAM) -#define SEEK(n) ISTREAM->seek(ISTREAM, n) -#define EOF_TOKEN &(LEXSTATE->tokSource->eofToken) -#define HASEXCEPTION() (LEXSTATE->error == ANTLR3_TRUE) -#define EXCEPTION LEXSTATE->exception -#define CONSTRUCTEX() RECOGNIZER->exConstruct(RECOGNIZER) -#define LRECOVER() LEXER->recover(LEXER) -#define MARK() ISTREAM->mark(ISTREAM) -#define REWIND(m) ISTREAM->rewind(ISTREAM, m) -#define REWINDLAST() ISTREAM->rewindLast(ISTREAM) -#define MEMOIZE(ri,si) RECOGNIZER->memoize(RECOGNIZER, ri, si) -#define HAVEPARSEDRULE(r) RECOGNIZER->alreadyParsedRule(RECOGNIZER, r) -#define PUSHSTREAM(str) LEXER->pushCharStream(LEXER, str) -#define POPSTREAM() LEXER->popCharStream(LEXER) -#define SETTEXT(str) LEXSTATE->text = str -#define SKIP() LEXSTATE->token = &(TOKSOURCE->skipToken) -#define USER1 LEXSTATE->user1 -#define USER2 LEXSTATE->user2 -#define USER3 LEXSTATE->user3 -#define CUSTOM LEXSTATE->custom -#define RULEMEMO LEXSTATE->ruleMemo -#define DBG RECOGNIZER->debugger - -/* If we have been told we can rely on the standard 8 bit or UTF16 input - * stream, then we can define our macros to use the direct pointers - * in the input object, which is much faster than indirect calls. This - * is really only significant to lexers with a lot of fragment rules (which - * do not place LA(1) in a temporary at the moment) and even then - * only if there is a lot of input (order of say 1M or so). - */ -#if defined(ANTLR3_INLINE_INPUT_8BIT) || defined(ANTLR3_INLINE_INPUT_UTF16) - -# ifdef ANTLR3_INLINE_INPUT_8BIT - -/* 8 bit character set */ - -# define NEXTCHAR ((pANTLR3_UINT8)(INPUT->nextChar)) -# define DATAP ((pANTLR3_UINT8)(INPUT->data)) - -# else - -# define NEXTCHAR ((pANTLR3_UINT16)(INPUT->nextChar)) -# define DATAP ((pANTLR3_UINT16)(INPUT->data)) - -# endif - -# define LA(n) ((NEXTCHAR + n) > (DATAP + INPUT->sizeBuf) ? ANTLR3_CHARSTREAM_EOF : (ANTLR3_UCHAR)(*(NEXTCHAR + n - 1))) -# define CONSUME() \ -{ \ - if (NEXTCHAR < (DATAP + INPUT->sizeBuf)) \ - { \ - INPUT->charPositionInLine++; \ - if ((ANTLR3_UCHAR)(*NEXTCHAR) == INPUT->newlineChar) \ - { \ - INPUT->line++; \ - INPUT->charPositionInLine = 0; \ - INPUT->currentLine = (void *)(NEXTCHAR + 1); \ - } \ - INPUT->nextChar = (void *)(NEXTCHAR + 1); \ - } \ -} - -#else - -// Pick up the input character by calling the input stream implementation. -// -#define CONSUME() INPUT->istream->consume(INPUT->istream) -#define LA(n) INPUT->istream->_LA(INPUT->istream, n) - -#endif - -#define TOKTEXT(tok, txt) tok, (pANTLR3_UINT8)txt - -/* The 4 tokens defined below may well clash with your own #defines or token types. If so - * then for the present you must use different names for your defines as these are hard coded - * in the code generator. It would be better not to use such names internally, and maybe - * we can change this in a forthcoming release. I deliberately do not #undef these - * here as this will at least give you a redefined error somewhere if they clash. - */ -#define UP ANTLR3_TOKEN_UP -#define DOWN ANTLR3_TOKEN_DOWN -#define EOR ANTLR3_TOKEN_EOR -#define INVALID ANTLR3_TOKEN_INVALID - - -/* ============================================================================= - * Functions to create and destroy scopes. First come the rule scopes, followed - * by the global declared scopes. - */ - - - -/* ============================================================================= */ - -/* ============================================================================= - * Start of recognizer - */ - -/* Forward declare the locally static matching functions we have generated and any predicate functions. - */ -static ANTLR3_INLINE - void - mCOMMA (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mGREATER_EQUAL (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mGUARD (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mMAXIMUM (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mMINIMUM (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mMULT (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mNEWLINE (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mPLUS (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mQUESTION_MARK (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mSUB (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mT__19 (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mT__20 (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mT__21 (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mT__22 (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mNUMBER (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mVARIABLE (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mWHITESPACE (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mDIGIT (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mLETTER (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mTokens (pEquationSystemLexer ctx); -static void EquationSystemLexerFree(pEquationSystemLexer ctx); - -/* ========================================================================= - * Lexer matching rules end. - * ========================================================================= - */ - - - -static void -EquationSystemLexerFree (pEquationSystemLexer ctx) -{ - LEXER->free(LEXER); - - ANTLR3_FREE(ctx); -} - -static void -EquationSystemLexerReset (pEquationSystemLexer ctx) -{ - RECOGNIZER->reset(RECOGNIZER); -} - -/** \brief Name of the grammar file that generated this code - */ -static const char fileName[] = "EquationSystem.g"; - -/** \brief Return the name of the grammar file that generated this code. - */ -static const char * getGrammarFileName() -{ - return fileName; -} - -/** \brief Create a new lexer called EquationSystemLexer - * - * \param[in] instream Pointer to an initialized input stream - * \return - * - Success pEquationSystemLexer initialized for the lex start - * - Fail NULL - */ -ANTLR3_API pEquationSystemLexer EquationSystemLexerNew -( -pANTLR3_INPUT_STREAM - instream) -{ - // See if we can create a new lexer with the standard constructor - // - return EquationSystemLexerNewSSD(instream, NULL); -} - -/** \brief Create a new lexer called EquationSystemLexer - * - * \param[in] instream Pointer to an initialized input stream - * \param[state] state Previously created shared recognizer stat - * \return - * - Success pEquationSystemLexer initialized for the lex start - * - Fail NULL - */ -ANTLR3_API pEquationSystemLexer EquationSystemLexerNewSSD -(pANTLR3_INPUT_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state) -{ - pEquationSystemLexer ctx; // Context structure we will build and return - - ctx = (pEquationSystemLexer) ANTLR3_CALLOC(1, sizeof(EquationSystemLexer)); - - if (ctx == NULL) - { - // Failed to allocate memory for lexer context - return NULL; - } - - /* ------------------------------------------------------------------- - * Memory for basic structure is allocated, now to fill in - * in base ANTLR3 structures. We initialize the function pointers - * for the standard ANTLR3 lexer function set, but upon return - * from here, the programmer may set the pointers to provide custom - * implementations of each function. - * - * We don't use the macros defined in EquationSystemLexer.h here so you can get a sense - * of what goes where. - */ - - /* Create a base lexer, using the supplied input stream - */ - ctx->pLexer = antlr3LexerNewStream(ANTLR3_SIZE_HINT, instream, state); - - /* Check that we allocated the memory correctly - */ - if (ctx->pLexer == NULL) - { - ANTLR3_FREE(ctx); - return NULL; - } - /* Install the implementation of our EquationSystemLexer interface - */ - ctx->mCOMMA = mCOMMA; - ctx->mGREATER_EQUAL = mGREATER_EQUAL; - ctx->mGUARD = mGUARD; - ctx->mMAXIMUM = mMAXIMUM; - ctx->mMINIMUM = mMINIMUM; - ctx->mMULT = mMULT; - ctx->mNEWLINE = mNEWLINE; - ctx->mPLUS = mPLUS; - ctx->mQUESTION_MARK = mQUESTION_MARK; - ctx->mSUB = mSUB; - ctx->mT__19 = mT__19; - ctx->mT__20 = mT__20; - ctx->mT__21 = mT__21; - ctx->mT__22 = mT__22; - ctx->mNUMBER = mNUMBER; - ctx->mVARIABLE = mVARIABLE; - ctx->mWHITESPACE = mWHITESPACE; - ctx->mDIGIT = mDIGIT; - ctx->mLETTER = mLETTER; - ctx->mTokens = mTokens; - - /** When the nextToken() call is made to this lexer's pANTLR3_TOKEN_SOURCE - * it will call mTokens() in this generated code, and will pass it the ctx - * pointer of this lexer, not the context of the base lexer, so store that now. - */ - ctx->pLexer->ctx = ctx; - - /**Install the token matching function - */ - ctx->pLexer->mTokens = (void (*) (void *))(mTokens); - - ctx->getGrammarFileName = getGrammarFileName; - ctx->free = EquationSystemLexerFree; - ctx->reset = EquationSystemLexerReset; - - - /* Return the newly built lexer to the caller - */ - return ctx; -} -/* ========================================================================= - * Functions to match the lexer grammar defined tokens from the input stream - */ - -// Comes from: 7:7: ( ';' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start COMMA - * - * Looks to match the characters the constitute the token COMMA - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mCOMMA(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = COMMA; - - - // EquationSystem.g:7:7: ( ';' ) - // EquationSystem.g:7:9: ';' - { - MATCHC(';'); - if (HASEXCEPTION()) - { - goto ruleCOMMAEx; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleCOMMAEx; /* Prevent compiler warnings */ - ruleCOMMAEx: ; - -} -// $ANTLR end COMMA - -// Comes from: 8:15: ( '>=' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start GREATER_EQUAL - * - * Looks to match the characters the constitute the token GREATER_EQUAL - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mGREATER_EQUAL(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = GREATER_EQUAL; - - - // EquationSystem.g:8:15: ( '>=' ) - // EquationSystem.g:8:17: '>=' - { - MATCHS(lit_1); - if (HASEXCEPTION()) - { - goto ruleGREATER_EQUALEx; - } - - - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleGREATER_EQUALEx; /* Prevent compiler warnings */ - ruleGREATER_EQUALEx: ; - -} -// $ANTLR end GREATER_EQUAL - -// Comes from: 9:7: ( 'guard' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start GUARD - * - * Looks to match the characters the constitute the token GUARD - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mGUARD(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = GUARD; - - - // EquationSystem.g:9:7: ( 'guard' ) - // EquationSystem.g:9:9: 'guard' - { - MATCHS(lit_2); - if (HASEXCEPTION()) - { - goto ruleGUARDEx; - } - - - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleGUARDEx; /* Prevent compiler warnings */ - ruleGUARDEx: ; - -} -// $ANTLR end GUARD - -// Comes from: 10:9: ( 'max' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start MAXIMUM - * - * Looks to match the characters the constitute the token MAXIMUM - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mMAXIMUM(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = MAXIMUM; - - - // EquationSystem.g:10:9: ( 'max' ) - // EquationSystem.g:10:11: 'max' - { - MATCHS(lit_3); - if (HASEXCEPTION()) - { - goto ruleMAXIMUMEx; - } - - - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleMAXIMUMEx; /* Prevent compiler warnings */ - ruleMAXIMUMEx: ; - -} -// $ANTLR end MAXIMUM - -// Comes from: 11:9: ( 'min' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start MINIMUM - * - * Looks to match the characters the constitute the token MINIMUM - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mMINIMUM(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = MINIMUM; - - - // EquationSystem.g:11:9: ( 'min' ) - // EquationSystem.g:11:11: 'min' - { - MATCHS(lit_4); - if (HASEXCEPTION()) - { - goto ruleMINIMUMEx; - } - - - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleMINIMUMEx; /* Prevent compiler warnings */ - ruleMINIMUMEx: ; - -} -// $ANTLR end MINIMUM - -// Comes from: 12:6: ( '*' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start MULT - * - * Looks to match the characters the constitute the token MULT - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mMULT(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = MULT; - - - // EquationSystem.g:12:6: ( '*' ) - // EquationSystem.g:12:8: '*' - { - MATCHC('*'); - if (HASEXCEPTION()) - { - goto ruleMULTEx; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleMULTEx; /* Prevent compiler warnings */ - ruleMULTEx: ; - -} -// $ANTLR end MULT - -// Comes from: 13:9: ( '\\n' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start NEWLINE - * - * Looks to match the characters the constitute the token NEWLINE - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mNEWLINE(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = NEWLINE; - - - // EquationSystem.g:13:9: ( '\\n' ) - // EquationSystem.g:13:11: '\\n' - { - MATCHC('\n'); - if (HASEXCEPTION()) - { - goto ruleNEWLINEEx; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleNEWLINEEx; /* Prevent compiler warnings */ - ruleNEWLINEEx: ; - -} -// $ANTLR end NEWLINE - -// Comes from: 14:6: ( '+' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start PLUS - * - * Looks to match the characters the constitute the token PLUS - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mPLUS(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = PLUS; - - - // EquationSystem.g:14:6: ( '+' ) - // EquationSystem.g:14:8: '+' - { - MATCHC('+'); - if (HASEXCEPTION()) - { - goto rulePLUSEx; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto rulePLUSEx; /* Prevent compiler warnings */ - rulePLUSEx: ; - -} -// $ANTLR end PLUS - -// Comes from: 15:15: ( '?' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start QUESTION_MARK - * - * Looks to match the characters the constitute the token QUESTION_MARK - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mQUESTION_MARK(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = QUESTION_MARK; - - - // EquationSystem.g:15:15: ( '?' ) - // EquationSystem.g:15:17: '?' - { - MATCHC('?'); - if (HASEXCEPTION()) - { - goto ruleQUESTION_MARKEx; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleQUESTION_MARKEx; /* Prevent compiler warnings */ - ruleQUESTION_MARKEx: ; - -} -// $ANTLR end QUESTION_MARK - -// Comes from: 16:5: ( '-' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start SUB - * - * Looks to match the characters the constitute the token SUB - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mSUB(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = SUB; - - - // EquationSystem.g:16:5: ( '-' ) - // EquationSystem.g:16:7: '-' - { - MATCHC('-'); - if (HASEXCEPTION()) - { - goto ruleSUBEx; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleSUBEx; /* Prevent compiler warnings */ - ruleSUBEx: ; - -} -// $ANTLR end SUB - -// Comes from: 17:7: ( '(' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start T__19 - * - * Looks to match the characters the constitute the token T__19 - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mT__19(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = T__19; - - - // EquationSystem.g:17:7: ( '(' ) - // EquationSystem.g:17:9: '(' - { - MATCHC('('); - if (HASEXCEPTION()) - { - goto ruleT__19Ex; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleT__19Ex; /* Prevent compiler warnings */ - ruleT__19Ex: ; - -} -// $ANTLR end T__19 - -// Comes from: 18:7: ( ')' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start T__20 - * - * Looks to match the characters the constitute the token T__20 - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mT__20(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = T__20; - - - // EquationSystem.g:18:7: ( ')' ) - // EquationSystem.g:18:9: ')' - { - MATCHC(')'); - if (HASEXCEPTION()) - { - goto ruleT__20Ex; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleT__20Ex; /* Prevent compiler warnings */ - ruleT__20Ex: ; - -} -// $ANTLR end T__20 - -// Comes from: 19:7: ( ',' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start T__21 - * - * Looks to match the characters the constitute the token T__21 - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mT__21(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = T__21; - - - // EquationSystem.g:19:7: ( ',' ) - // EquationSystem.g:19:9: ',' - { - MATCHC(','); - if (HASEXCEPTION()) - { - goto ruleT__21Ex; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleT__21Ex; /* Prevent compiler warnings */ - ruleT__21Ex: ; - -} -// $ANTLR end T__21 - -// Comes from: 20:7: ( '=' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start T__22 - * - * Looks to match the characters the constitute the token T__22 - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mT__22(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = T__22; - - - // EquationSystem.g:20:7: ( '=' ) - // EquationSystem.g:20:9: '=' - { - MATCHC('='); - if (HASEXCEPTION()) - { - goto ruleT__22Ex; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleT__22Ex; /* Prevent compiler warnings */ - ruleT__22Ex: ; - -} -// $ANTLR end T__22 - -// Comes from: 36:8: ( ( DIGIT )+ ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start NUMBER - * - * Looks to match the characters the constitute the token NUMBER - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mNUMBER(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = NUMBER; - - - // EquationSystem.g:36:8: ( ( DIGIT )+ ) - // EquationSystem.g:36:10: ( DIGIT )+ - { - // EquationSystem.g:36:10: ( DIGIT )+ - { - int cnt1=0; - - for (;;) - { - int alt1=2; - switch ( LA(1) ) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - alt1=1; - } - break; - - } - - switch (alt1) - { - case 1: - // EquationSystem.g: - { - if ( ((LA(1) >= '0') && (LA(1) <= '9')) ) - { - CONSUME(); - } - else - { - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - - LRECOVER(); - goto ruleNUMBEREx; - } - - - } - break; - - default: - - if ( cnt1 >= 1 ) - { - goto loop1; - } - /* mismatchedSetEx() - */ - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; - - - goto ruleNUMBEREx; - } - cnt1++; - } - loop1: ; /* Jump to here if this rule does not match */ - } - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleNUMBEREx; /* Prevent compiler warnings */ - ruleNUMBEREx: ; - -} -// $ANTLR end NUMBER - -// Comes from: 37:9: ( ( LETTER ) ( LETTER | DIGIT )* ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start VARIABLE - * - * Looks to match the characters the constitute the token VARIABLE - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mVARIABLE(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = VARIABLE; - - - // EquationSystem.g:37:9: ( ( LETTER ) ( LETTER | DIGIT )* ) - // EquationSystem.g:37:11: ( LETTER ) ( LETTER | DIGIT )* - { - if ( ((LA(1) >= 'a') && (LA(1) <= 'z')) ) - { - CONSUME(); - } - else - { - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - - LRECOVER(); - goto ruleVARIABLEEx; - } - - - // EquationSystem.g:37:20: ( LETTER | DIGIT )* - - for (;;) - { - int alt2=2; - switch ( LA(1) ) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - { - alt2=1; - } - break; - - } - - switch (alt2) - { - case 1: - // EquationSystem.g: - { - if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) ) - { - CONSUME(); - } - else - { - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - - LRECOVER(); - goto ruleVARIABLEEx; - } - - - } - break; - - default: - goto loop2; /* break out of the loop */ - break; - } - } - loop2: ; /* Jump out to here if this rule does not match */ - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleVARIABLEEx; /* Prevent compiler warnings */ - ruleVARIABLEEx: ; - -} -// $ANTLR end VARIABLE - -// Comes from: 38:12: ( ( '\\t' | ' ' | '\\u000C' )+ ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start WHITESPACE - * - * Looks to match the characters the constitute the token WHITESPACE - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mWHITESPACE(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = WHITESPACE; - - - // EquationSystem.g:38:12: ( ( '\\t' | ' ' | '\\u000C' )+ ) - // EquationSystem.g:38:14: ( '\\t' | ' ' | '\\u000C' )+ - { - // EquationSystem.g:38:14: ( '\\t' | ' ' | '\\u000C' )+ - { - int cnt3=0; - - for (;;) - { - int alt3=2; - switch ( LA(1) ) - { - case '\t': - case '\f': - case ' ': - { - alt3=1; - } - break; - - } - - switch (alt3) - { - case 1: - // EquationSystem.g: - { - if ( LA(1) == '\t' || LA(1) == '\f' || LA(1) == ' ' ) - { - CONSUME(); - } - else - { - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - - LRECOVER(); - goto ruleWHITESPACEEx; - } - - - } - break; - - default: - - if ( cnt3 >= 1 ) - { - goto loop3; - } - /* mismatchedSetEx() - */ - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; - - - goto ruleWHITESPACEEx; - } - cnt3++; - } - loop3: ; /* Jump to here if this rule does not match */ - } - - { - - LEXSTATE->channel = HIDDEN; - - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleWHITESPACEEx; /* Prevent compiler warnings */ - ruleWHITESPACEEx: ; - -} -// $ANTLR end WHITESPACE - -// Comes from: 45:7: ( '0' .. '9' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start DIGIT - * - * Looks to match the characters the constitute the token DIGIT - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mDIGIT(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - - // EquationSystem.g:45:7: ( '0' .. '9' ) - // EquationSystem.g: - { - if ( ((LA(1) >= '0') && (LA(1) <= '9')) ) - { - CONSUME(); - } - else - { - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - - LRECOVER(); - goto ruleDIGITEx; - } - - - } - - - // This is where rules clean up and exit - // - goto ruleDIGITEx; /* Prevent compiler warnings */ - ruleDIGITEx: ; - -} -// $ANTLR end DIGIT - -// Comes from: 47:7: ( 'a' .. 'z' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start LETTER - * - * Looks to match the characters the constitute the token LETTER - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mLETTER(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - - // EquationSystem.g:47:7: ( 'a' .. 'z' ) - // EquationSystem.g: - { - if ( ((LA(1) >= 'a') && (LA(1) <= 'z')) ) - { - CONSUME(); - } - else - { - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - - LRECOVER(); - goto ruleLETTEREx; - } - - - } - - - // This is where rules clean up and exit - // - goto ruleLETTEREx; /* Prevent compiler warnings */ - ruleLETTEREx: ; - -} -// $ANTLR end LETTER - -/** This is the entry point in to the lexer from an object that - * wants to generate the next token, such as a pCOMMON_TOKEN_STREAM - */ -static void -mTokens(pEquationSystemLexer ctx) -{ - { - // EquationSystem.g:1:8: ( COMMA | GREATER_EQUAL | GUARD | MAXIMUM | MINIMUM | MULT | NEWLINE | PLUS | QUESTION_MARK | SUB | T__19 | T__20 | T__21 | T__22 | NUMBER | VARIABLE | WHITESPACE ) - - ANTLR3_UINT32 alt4; - - alt4=17; - - switch ( LA(1) ) - { - case ';': - { - alt4=1; - } - break; - case '>': - { - alt4=2; - } - break; - case 'g': - { - switch ( LA(2) ) - { - case 'u': - { - switch ( LA(3) ) - { - case 'a': - { - switch ( LA(4) ) - { - case 'r': - { - switch ( LA(5) ) - { - case 'd': - { - switch ( LA(6) ) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - { - alt4=16; - } - break; - - default: - alt4=3; - } - - } - break; - - default: - alt4=16; - } - - } - break; - - default: - alt4=16; - } - - } - break; - - default: - alt4=16; - } - - } - break; - - default: - alt4=16; - } - - } - break; - case 'm': - { - switch ( LA(2) ) - { - case 'a': - { - switch ( LA(3) ) - { - case 'x': - { - switch ( LA(4) ) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - { - alt4=16; - } - break; - - default: - alt4=4; - } - - } - break; - - default: - alt4=16; - } - - } - break; - case 'i': - { - switch ( LA(3) ) - { - case 'n': - { - switch ( LA(4) ) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - { - alt4=16; - } - break; - - default: - alt4=5; - } - - } - break; - - default: - alt4=16; - } - - } - break; - - default: - alt4=16; - } - - } - break; - case '*': - { - alt4=6; - } - break; - case '\n': - { - alt4=7; - } - break; - case '+': - { - alt4=8; - } - break; - case '?': - { - alt4=9; - } - break; - case '-': - { - alt4=10; - } - break; - case '(': - { - alt4=11; - } - break; - case ')': - { - alt4=12; - } - break; - case ',': - { - alt4=13; - } - break; - case '=': - { - alt4=14; - } - break; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - alt4=15; - } - break; - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - { - alt4=16; - } - break; - case '\t': - case '\f': - case ' ': - { - alt4=17; - } - break; - - default: - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; - EXCEPTION->message = (void *)""; - EXCEPTION->decisionNum = 4; - EXCEPTION->state = 0; - - - goto ruleTokensEx; - - } - - switch (alt4) - { - case 1: - // EquationSystem.g:1:10: COMMA - { - /* 1:10: COMMA */ - mCOMMA(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 2: - // EquationSystem.g:1:16: GREATER_EQUAL - { - /* 1:16: GREATER_EQUAL */ - mGREATER_EQUAL(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 3: - // EquationSystem.g:1:30: GUARD - { - /* 1:30: GUARD */ - mGUARD(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 4: - // EquationSystem.g:1:36: MAXIMUM - { - /* 1:36: MAXIMUM */ - mMAXIMUM(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 5: - // EquationSystem.g:1:44: MINIMUM - { - /* 1:44: MINIMUM */ - mMINIMUM(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 6: - // EquationSystem.g:1:52: MULT - { - /* 1:52: MULT */ - mMULT(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 7: - // EquationSystem.g:1:57: NEWLINE - { - /* 1:57: NEWLINE */ - mNEWLINE(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 8: - // EquationSystem.g:1:65: PLUS - { - /* 1:65: PLUS */ - mPLUS(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 9: - // EquationSystem.g:1:70: QUESTION_MARK - { - /* 1:70: QUESTION_MARK */ - mQUESTION_MARK(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 10: - // EquationSystem.g:1:84: SUB - { - /* 1:84: SUB */ - mSUB(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 11: - // EquationSystem.g:1:88: T__19 - { - /* 1:88: T__19 */ - mT__19(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 12: - // EquationSystem.g:1:94: T__20 - { - /* 1:94: T__20 */ - mT__20(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 13: - // EquationSystem.g:1:100: T__21 - { - /* 1:100: T__21 */ - mT__21(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 14: - // EquationSystem.g:1:106: T__22 - { - /* 1:106: T__22 */ - mT__22(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 15: - // EquationSystem.g:1:112: NUMBER - { - /* 1:112: NUMBER */ - mNUMBER(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 16: - // EquationSystem.g:1:119: VARIABLE - { - /* 1:119: VARIABLE */ - mVARIABLE(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 17: - // EquationSystem.g:1:128: WHITESPACE - { - /* 1:128: WHITESPACE */ - mWHITESPACE(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - - } - } - - - goto ruleTokensEx; /* Prevent compiler warnings */ -ruleTokensEx: ; -} - -/* ========================================================================= - * Lexer matching rules end. - * ========================================================================= - */ -/* End of Lexer code - * ================================================ - * ================================================ - */ - - -/* End of code - * ============================================================================= - */ diff --git a/impl/EquationSystemLexer.h b/impl/EquationSystemLexer.h deleted file mode 100644 index eed522f..0000000 --- a/impl/EquationSystemLexer.h +++ /dev/null @@ -1,313 +0,0 @@ -/** \file - * This C header file was generated by $ANTLR version 3.4 - * - * - From the grammar source file : EquationSystem.g - * - On : 2012-07-09 19:58:46 - * - for the lexer : EquationSystemLexerLexer - * - * Editing it, at least manually, is not wise. - * - * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. - * - * - * The lexer -EquationSystemLexer - -has the callable functions (rules) shown below, - * which will invoke the code for the associated rule in the source grammar - * assuming that the input stream is pointing to a token/text stream that could begin - * this rule. - * - * For instance if you call the first (topmost) rule in a parser grammar, you will - * get the results of a full parse, but calling a rule half way through the grammar will - * allow you to pass part of a full token stream to the parser, such as for syntax checking - * in editors and so on. - * - * The parser entry points are called indirectly (by function pointer to function) via - * a parser context typedef pEquationSystemLexer, which is returned from a call to EquationSystemLexerNew(). - * - * As this is a generated lexer, it is unlikely you will call it 'manually'. However - * the methods are provided anyway. - * - * The methods in pEquationSystemLexer are as follows: - * - * - - void - pEquationSystemLexer->COMMA(pEquationSystemLexer) - * - - void - pEquationSystemLexer->GREATER_EQUAL(pEquationSystemLexer) - * - - void - pEquationSystemLexer->GUARD(pEquationSystemLexer) - * - - void - pEquationSystemLexer->MAXIMUM(pEquationSystemLexer) - * - - void - pEquationSystemLexer->MINIMUM(pEquationSystemLexer) - * - - void - pEquationSystemLexer->MULT(pEquationSystemLexer) - * - - void - pEquationSystemLexer->NEWLINE(pEquationSystemLexer) - * - - void - pEquationSystemLexer->PLUS(pEquationSystemLexer) - * - - void - pEquationSystemLexer->QUESTION_MARK(pEquationSystemLexer) - * - - void - pEquationSystemLexer->SUB(pEquationSystemLexer) - * - - void - pEquationSystemLexer->T__19(pEquationSystemLexer) - * - - void - pEquationSystemLexer->T__20(pEquationSystemLexer) - * - - void - pEquationSystemLexer->T__21(pEquationSystemLexer) - * - - void - pEquationSystemLexer->T__22(pEquationSystemLexer) - * - - void - pEquationSystemLexer->NUMBER(pEquationSystemLexer) - * - - void - pEquationSystemLexer->VARIABLE(pEquationSystemLexer) - * - - void - pEquationSystemLexer->WHITESPACE(pEquationSystemLexer) - * - - void - pEquationSystemLexer->DIGIT(pEquationSystemLexer) - * - - void - pEquationSystemLexer->LETTER(pEquationSystemLexer) - * - - void - pEquationSystemLexer->Tokens(pEquationSystemLexer) - * - * The return type for any particular rule is of course determined by the source - * grammar file. - */ -// [The "BSD license"] -// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC -// http://www.temporal-wave.com -// http://www.linkedin.com/in/jimidle -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#ifndef _EquationSystemLexer_H -#define _EquationSystemLexer_H -/* ============================================================================= - * Standard antlr3 C runtime definitions - */ -#include - -/* End of standard antlr 3 runtime definitions - * ============================================================================= - */ - -#ifdef __cplusplus -extern "C" { -#endif - -// Forward declare the context typedef so that we can use it before it is -// properly defined. Delegators and delegates (from import statements) are -// interdependent and their context structures contain pointers to each other -// C only allows such things to be declared if you pre-declare the typedef. -// -typedef struct EquationSystemLexer_Ctx_struct EquationSystemLexer, * pEquationSystemLexer; - - - -#ifdef ANTLR3_WINDOWS -// Disable: Unreferenced parameter, - Rules with parameters that are not used -// constant conditional, - ANTLR realizes that a prediction is always true (synpred usually) -// initialized but unused variable - tree rewrite variables declared but not needed -// Unreferenced local variable - lexer rule declares but does not always use _type -// potentially unitialized variable used - retval always returned from a rule -// unreferenced local function has been removed - susually getTokenNames or freeScope, they can go without warnigns -// -// These are only really displayed at warning level /W4 but that is the code ideal I am aiming at -// and the codegen must generate some of these warnings by necessity, apart from 4100, which is -// usually generated when a parser rule is given a parameter that it does not use. Mostly though -// this is a matter of orthogonality hence I disable that one. -// -#pragma warning( disable : 4100 ) -#pragma warning( disable : 4101 ) -#pragma warning( disable : 4127 ) -#pragma warning( disable : 4189 ) -#pragma warning( disable : 4505 ) -#pragma warning( disable : 4701 ) -#endif - -/** Context tracking structure for -EquationSystemLexer - - */ -struct EquationSystemLexer_Ctx_struct -{ - /** Built in ANTLR3 context tracker contains all the generic elements - * required for context tracking. - */ - pANTLR3_LEXER pLexer; - - void - (*mCOMMA) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mGREATER_EQUAL) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mGUARD) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mMAXIMUM) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mMINIMUM) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mMULT) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mNEWLINE) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mPLUS) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mQUESTION_MARK) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mSUB) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mT__19) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mT__20) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mT__21) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mT__22) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mNUMBER) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mVARIABLE) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mWHITESPACE) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mDIGIT) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mLETTER) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mTokens) (struct EquationSystemLexer_Ctx_struct * ctx); - const char * (*getGrammarFileName)(); - void (*reset) (struct EquationSystemLexer_Ctx_struct * ctx); - void (*free) (struct EquationSystemLexer_Ctx_struct * ctx); -}; - -// Function protoypes for the constructor functions that external translation units -// such as delegators and delegates may wish to call. -// -ANTLR3_API pEquationSystemLexer EquationSystemLexerNew ( -pANTLR3_INPUT_STREAM - instream); -ANTLR3_API pEquationSystemLexer EquationSystemLexerNewSSD ( -pANTLR3_INPUT_STREAM - instream, pANTLR3_RECOGNIZER_SHARED_STATE state); - -/** Symbolic definitions of all the tokens that the -lexer - will work with. - * \{ - * - * Antlr will define EOF, but we can't use that as it it is too common in - * in C header files and that would be confusing. There is no way to filter this out at the moment - * so we just undef it here for now. That isn't the value we get back from C recognizers - * anyway. We are looking for ANTLR3_TOKEN_EOF. - */ -#ifdef EOF -#undef EOF -#endif -#ifdef Tokens -#undef Tokens -#endif -#define EOF -1 -#define T__19 19 -#define T__20 20 -#define T__21 21 -#define T__22 22 -#define COMMA 4 -#define DIGIT 5 -#define GREATER_EQUAL 6 -#define GUARD 7 -#define LETTER 8 -#define MAXIMUM 9 -#define MINIMUM 10 -#define MULT 11 -#define NEWLINE 12 -#define NUMBER 13 -#define PLUS 14 -#define QUESTION_MARK 15 -#define SUB 16 -#define VARIABLE 17 -#define WHITESPACE 18 -#ifdef EOF -#undef EOF -#define EOF ANTLR3_TOKEN_EOF -#endif - -#ifndef TOKENSOURCE -#define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource -#endif - -/* End of token definitions for EquationSystemLexer - * ============================================================================= - */ -/** } */ - -#ifdef __cplusplus -} -#endif - -#endif - -/* END - Note:Keep extra line feed to satisfy UNIX systems */ diff --git a/impl/EquationSystemLexer.o b/impl/EquationSystemLexer.o deleted file mode 100644 index a0acfea..0000000 Binary files a/impl/EquationSystemLexer.o and /dev/null differ diff --git a/impl/EquationSystemParser.c b/impl/EquationSystemParser.c deleted file mode 100644 index eefccfb..0000000 --- a/impl/EquationSystemParser.c +++ /dev/null @@ -1,2396 +0,0 @@ -/** \file - * This C source file was generated by $ANTLR version 3.4 - * - * - From the grammar source file : EquationSystem.g - * - On : 2012-07-09 19:58:45 - * - for the parser : EquationSystemParserParser - * - * Editing it, at least manually, is not wise. - * - * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. - * - * -*/ -// [The "BSD license"] -// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC -// http://www.temporal-wave.com -// http://www.linkedin.com/in/jimidle -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* ----------------------------------------- - * Include the ANTLR3 generated header file. - */ -#include "EquationSystemParser.h" -/* ----------------------------------------- */ - - - - - -/* MACROS that hide the C interface implementations from the - * generated code, which makes it a little more understandable to the human eye. - * I am very much against using C pre-processor macros for function calls and bits - * of code as you cannot see what is happening when single stepping in debuggers - * and so on. The exception (in my book at least) is for generated code, where you are - * not maintaining it, but may wish to read and understand it. If you single step it, you know that input() - * hides some indirect calls, but is always referring to the input stream. This is - * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig - * the runtime interfaces without changing the generated code too often, without - * confusing the reader of the generated output, who may not wish to know the gory - * details of the interface inheritance. - */ - -#define CTX ctx - -/* Aids in accessing scopes for grammar programmers - */ -#undef SCOPE_TYPE -#undef SCOPE_STACK -#undef SCOPE_TOP -#define SCOPE_TYPE(scope) pEquationSystemParser_##scope##_SCOPE -#define SCOPE_STACK(scope) pEquationSystemParser_##scope##Stack -#define SCOPE_TOP(scope) ctx->pEquationSystemParser_##scope##Top -#define SCOPE_SIZE(scope) ctx->pEquationSystemParser_##scope##Stack_limit -#define SCOPE_INSTANCE(scope, i) (ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i)) - -/* Macros for accessing things in the parser - */ - -#undef PARSER -#undef RECOGNIZER -#undef HAVEPARSEDRULE -#undef MEMOIZE -#undef INPUT -#undef STRSTREAM -#undef HASEXCEPTION -#undef EXCEPTION -#undef MATCHT -#undef MATCHANYT -#undef FOLLOWSTACK -#undef FOLLOWPUSH -#undef FOLLOWPOP -#undef PRECOVER -#undef PREPORTERROR -#undef LA -#undef LT -#undef CONSTRUCTEX -#undef CONSUME -#undef MARK -#undef REWIND -#undef REWINDLAST -#undef PERRORRECOVERY -#undef HASFAILED -#undef FAILEDFLAG -#undef RECOVERFROMMISMATCHEDSET -#undef RECOVERFROMMISMATCHEDELEMENT -#undef INDEX -#undef ADAPTOR -#undef SEEK -#undef RULEMEMO -#undef DBG - -#define PARSER ctx->pParser -#define RECOGNIZER PARSER->rec -#define PSRSTATE RECOGNIZER->state -#define HAVEPARSEDRULE(r) RECOGNIZER->alreadyParsedRule(RECOGNIZER, r) -#define MEMOIZE(ri,si) RECOGNIZER->memoize(RECOGNIZER, ri, si) -#define INPUT PARSER->tstream -#define STRSTREAM INPUT -#define ISTREAM INPUT->istream -#define INDEX() ISTREAM->index(INPUT->istream) -#define HASEXCEPTION() (PSRSTATE->error == ANTLR3_TRUE) -#define EXCEPTION PSRSTATE->exception -#define MATCHT(t, fs) RECOGNIZER->match(RECOGNIZER, t, fs) -#define MATCHANYT() RECOGNIZER->matchAny(RECOGNIZER) -#define FOLLOWSTACK PSRSTATE->following -#ifdef SKIP_FOLLOW_SETS -#define FOLLOWPUSH(x) -#define FOLLOWPOP() -#else -#define FOLLOWPUSH(x) FOLLOWSTACK->push(FOLLOWSTACK, ((void *)(&(x))), NULL) -#define FOLLOWPOP() FOLLOWSTACK->pop(FOLLOWSTACK) -#endif -#define PRECOVER() RECOGNIZER->recover(RECOGNIZER) -#define PREPORTERROR() RECOGNIZER->reportError(RECOGNIZER) -#define LA(n) INPUT->istream->_LA(ISTREAM, n) -#define LT(n) INPUT->_LT(INPUT, n) -#define CONSTRUCTEX() RECOGNIZER->exConstruct(RECOGNIZER) -#define CONSUME() ISTREAM->consume(ISTREAM) -#define MARK() ISTREAM->mark(ISTREAM) -#define REWIND(m) ISTREAM->rewind(ISTREAM, m) -#define REWINDLAST() ISTREAM->rewindLast(ISTREAM) -#define SEEK(n) ISTREAM->seek(ISTREAM, n) -#define PERRORRECOVERY PSRSTATE->errorRecovery -#define FAILEDFLAG PSRSTATE->failed -#define HASFAILED() (FAILEDFLAG == ANTLR3_TRUE) -#define BACKTRACKING PSRSTATE->backtracking -#define RECOVERFROMMISMATCHEDSET(s) RECOGNIZER->recoverFromMismatchedSet(RECOGNIZER, s) -#define RECOVERFROMMISMATCHEDELEMENT(e) RECOGNIZER->recoverFromMismatchedElement(RECOGNIZER, s) -#define ADAPTOR ctx->adaptor -#define RULEMEMO PSRSTATE->ruleMemo -#define DBG RECOGNIZER->debugger - - -#define TOKTEXT(tok, txt) tok, (pANTLR3_UINT8)txt - -/* The 4 tokens defined below may well clash with your own #defines or token types. If so - * then for the present you must use different names for your defines as these are hard coded - * in the code generator. It would be better not to use such names internally, and maybe - * we can change this in a forthcoming release. I deliberately do not #undef these - * here as this will at least give you a redefined error somewhere if they clash. - */ -#define UP ANTLR3_TOKEN_UP -#define DOWN ANTLR3_TOKEN_DOWN -#define EOR ANTLR3_TOKEN_EOR -#define INVALID ANTLR3_TOKEN_INVALID - - -/* ============================================================================= - * Functions to create and destroy scopes. First come the rule scopes, followed - * by the global declared scopes. - */ - - - -/* ============================================================================= */ - -/* ============================================================================= - * Start of recognizer - */ - - -/** \brief Table of all token names in symbolic order, mainly used for - * error reporting. - */ -pANTLR3_UINT8 EquationSystemParserTokenNames[19+4] - = { - (pANTLR3_UINT8) "", /* String to print to indicate an invalid token */ - (pANTLR3_UINT8) "", - (pANTLR3_UINT8) "", - (pANTLR3_UINT8) "", - (pANTLR3_UINT8) "COMMA", - (pANTLR3_UINT8) "DIGIT", - (pANTLR3_UINT8) "GREATER_EQUAL", - (pANTLR3_UINT8) "GUARD", - (pANTLR3_UINT8) "LETTER", - (pANTLR3_UINT8) "MAXIMUM", - (pANTLR3_UINT8) "MINIMUM", - (pANTLR3_UINT8) "MULT", - (pANTLR3_UINT8) "NEWLINE", - (pANTLR3_UINT8) "NUMBER", - (pANTLR3_UINT8) "PLUS", - (pANTLR3_UINT8) "QUESTION_MARK", - (pANTLR3_UINT8) "SUB", - (pANTLR3_UINT8) "VARIABLE", - (pANTLR3_UINT8) "WHITESPACE", - (pANTLR3_UINT8) "'('", - (pANTLR3_UINT8) "')'", - (pANTLR3_UINT8) "','", - (pANTLR3_UINT8) "'='" - }; - - - -// Forward declare the locally static matching functions we have generated. -// -static - EquationSystemParser_equation_system_return - equation_system (pEquationSystemParser ctx); -static - EquationSystemParser_equation_return - equation (pEquationSystemParser ctx); -static - EquationSystemParser_maxExpr_return - maxExpr (pEquationSystemParser ctx); -static - EquationSystemParser_minExpr_return - minExpr (pEquationSystemParser ctx); -static - EquationSystemParser_expr_return - expr (pEquationSystemParser ctx); -static - EquationSystemParser_term_return - term (pEquationSystemParser ctx); -static - ANTLR3_BOOLEAN - synpred8_EquationSystem (pEquationSystemParser ctx); -static - ANTLR3_BOOLEAN - synpred12_EquationSystem (pEquationSystemParser ctx); -static void EquationSystemParserFree(pEquationSystemParser ctx); -static void EquationSystemParserReset (pEquationSystemParser ctx); - -/* For use in tree output where we are accumulating rule labels via label += ruleRef - * we need a function that knows how to free a return scope when the list is destroyed. - * We cannot just use ANTLR3_FREE because in debug tracking mode, this is a macro. - */ -static void ANTLR3_CDECL freeScope(void * scope) -{ - ANTLR3_FREE(scope); -} - -/** \brief Name of the grammar file that generated this code - */ -static const char fileName[] = "EquationSystem.g"; - -/** \brief Return the name of the grammar file that generated this code. - */ -static const char * getGrammarFileName() -{ - return fileName; -} -/** \brief Create a new EquationSystemParser parser and return a context for it. - * - * \param[in] instream Pointer to an input stream interface. - * - * \return Pointer to new parser context upon success. - */ -ANTLR3_API pEquationSystemParser -EquationSystemParserNew (pANTLR3_COMMON_TOKEN_STREAM instream) -{ - // See if we can create a new parser with the standard constructor - // - return EquationSystemParserNewSSD(instream, NULL); -} - -/** \brief Create a new EquationSystemParser parser and return a context for it. - * - * \param[in] instream Pointer to an input stream interface. - * - * \return Pointer to new parser context upon success. - */ -ANTLR3_API pEquationSystemParser -EquationSystemParserNewSSD (pANTLR3_COMMON_TOKEN_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state) -{ - pEquationSystemParser ctx; /* Context structure we will build and return */ - - ctx = (pEquationSystemParser) ANTLR3_CALLOC(1, sizeof(EquationSystemParser)); - - if (ctx == NULL) - { - // Failed to allocate memory for parser context - // - return NULL; - } - - /* ------------------------------------------------------------------- - * Memory for basic structure is allocated, now to fill in - * the base ANTLR3 structures. We initialize the function pointers - * for the standard ANTLR3 parser function set, but upon return - * from here, the programmer may set the pointers to provide custom - * implementations of each function. - * - * We don't use the macros defined in EquationSystemParser.h here, in order that you can get a sense - * of what goes where. - */ - - /* Create a base parser/recognizer, using the supplied token stream - */ - ctx->pParser = antlr3ParserNewStream(ANTLR3_SIZE_HINT, instream->tstream, state); - /* Install the implementation of our EquationSystemParser interface - */ - ctx->equation_system = equation_system; - ctx->equation = equation; - ctx->maxExpr = maxExpr; - ctx->minExpr = minExpr; - ctx->expr = expr; - ctx->term = term; - ctx->synpred8_EquationSystem = synpred8_EquationSystem; - ctx->synpred12_EquationSystem = synpred12_EquationSystem; - ctx->free = EquationSystemParserFree; - ctx->reset = EquationSystemParserReset; - ctx->getGrammarFileName = getGrammarFileName; - - /* Install the scope pushing methods. - */ -ADAPTOR = ANTLR3_TREE_ADAPTORNew(instream->tstream->tokenSource->strFactory); - -ctx->vectors = antlr3VectorFactoryNew(0); - /* Install the token table - */ - PSRSTATE->tokenNames = EquationSystemParserTokenNames; - - - /* Return the newly built parser to the caller - */ - return ctx; -} - -static void -EquationSystemParserReset (pEquationSystemParser ctx) -{ - RECOGNIZER->reset(RECOGNIZER); -} - -/** Free the parser resources - */ - static void - EquationSystemParserFree(pEquationSystemParser ctx) - { - /* Free any scope memory - */ - -ctx->vectors->close(ctx->vectors); -/* We created the adaptor so we must free it - */ -ADAPTOR->free(ADAPTOR); - // Free this parser - // - ctx->pParser->free(ctx->pParser); - - - ANTLR3_FREE(ctx); - - /* Everything is released, so we can return - */ - return; - } - -/** Return token names used by this -parser - - * - * The returned pointer is used as an index into the token names table (using the token - * number as the index). - * - * \return Pointer to first char * in the table. - */ -static pANTLR3_UINT8 *getTokenNames() -{ - return EquationSystemParserTokenNames; -} - - -/* Declare the bitsets - */ -/** Bitset defining follow set for error recovery in rule state: FOLLOW_equation_in_equation_system141 */ -static ANTLR3_BITWORD FOLLOW_equation_in_equation_system141_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001002) }; -static ANTLR3_BITSET_LIST FOLLOW_equation_in_equation_system141 = { FOLLOW_equation_in_equation_system141_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_NEWLINE_in_equation_system145 */ -static ANTLR3_BITWORD FOLLOW_NEWLINE_in_equation_system145_bits[] = { ANTLR3_UINT64_LIT(0x0000000000021000) }; -static ANTLR3_BITSET_LIST FOLLOW_NEWLINE_in_equation_system145 = { FOLLOW_NEWLINE_in_equation_system145_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_equation_in_equation_system150 */ -static ANTLR3_BITWORD FOLLOW_equation_in_equation_system150_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001002) }; -static ANTLR3_BITSET_LIST FOLLOW_equation_in_equation_system150 = { FOLLOW_equation_in_equation_system150_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_NEWLINE_in_equation_system157 */ -static ANTLR3_BITWORD FOLLOW_NEWLINE_in_equation_system157_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001002) }; -static ANTLR3_BITSET_LIST FOLLOW_NEWLINE_in_equation_system157 = { FOLLOW_NEWLINE_in_equation_system157_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_VARIABLE_in_equation168 */ -static ANTLR3_BITWORD FOLLOW_VARIABLE_in_equation168_bits[] = { ANTLR3_UINT64_LIT(0x0000000000400000) }; -static ANTLR3_BITSET_LIST FOLLOW_VARIABLE_in_equation168 = { FOLLOW_VARIABLE_in_equation168_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_22_in_equation170 */ -static ANTLR3_BITWORD FOLLOW_22_in_equation170_bits[] = { ANTLR3_UINT64_LIT(0x00000000000A2600) }; -static ANTLR3_BITSET_LIST FOLLOW_22_in_equation170 = { FOLLOW_22_in_equation170_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_maxExpr_in_equation173 */ -static ANTLR3_BITWORD FOLLOW_maxExpr_in_equation173_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_maxExpr_in_equation173 = { FOLLOW_maxExpr_in_equation173_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_MAXIMUM_in_maxExpr182 */ -static ANTLR3_BITWORD FOLLOW_MAXIMUM_in_maxExpr182_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; -static ANTLR3_BITSET_LIST FOLLOW_MAXIMUM_in_maxExpr182 = { FOLLOW_MAXIMUM_in_maxExpr182_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_19_in_maxExpr185 */ -static ANTLR3_BITWORD FOLLOW_19_in_maxExpr185_bits[] = { ANTLR3_UINT64_LIT(0x00000000000A2400) }; -static ANTLR3_BITSET_LIST FOLLOW_19_in_maxExpr185 = { FOLLOW_19_in_maxExpr185_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_minExpr_in_maxExpr188 */ -static ANTLR3_BITWORD FOLLOW_minExpr_in_maxExpr188_bits[] = { ANTLR3_UINT64_LIT(0x0000000000300000) }; -static ANTLR3_BITSET_LIST FOLLOW_minExpr_in_maxExpr188 = { FOLLOW_minExpr_in_maxExpr188_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_21_in_maxExpr192 */ -static ANTLR3_BITWORD FOLLOW_21_in_maxExpr192_bits[] = { ANTLR3_UINT64_LIT(0x00000000000A2400) }; -static ANTLR3_BITSET_LIST FOLLOW_21_in_maxExpr192 = { FOLLOW_21_in_maxExpr192_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_minExpr_in_maxExpr195 */ -static ANTLR3_BITWORD FOLLOW_minExpr_in_maxExpr195_bits[] = { ANTLR3_UINT64_LIT(0x0000000000300000) }; -static ANTLR3_BITSET_LIST FOLLOW_minExpr_in_maxExpr195 = { FOLLOW_minExpr_in_maxExpr195_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_20_in_maxExpr200 */ -static ANTLR3_BITWORD FOLLOW_20_in_maxExpr200_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_20_in_maxExpr200 = { FOLLOW_20_in_maxExpr200_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_minExpr_in_maxExpr205 */ -static ANTLR3_BITWORD FOLLOW_minExpr_in_maxExpr205_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_minExpr_in_maxExpr205 = { FOLLOW_minExpr_in_maxExpr205_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINIMUM_in_minExpr213 */ -static ANTLR3_BITWORD FOLLOW_MINIMUM_in_minExpr213_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; -static ANTLR3_BITSET_LIST FOLLOW_MINIMUM_in_minExpr213 = { FOLLOW_MINIMUM_in_minExpr213_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_19_in_minExpr216 */ -static ANTLR3_BITWORD FOLLOW_19_in_minExpr216_bits[] = { ANTLR3_UINT64_LIT(0x00000000000A2600) }; -static ANTLR3_BITSET_LIST FOLLOW_19_in_minExpr216 = { FOLLOW_19_in_minExpr216_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_maxExpr_in_minExpr219 */ -static ANTLR3_BITWORD FOLLOW_maxExpr_in_minExpr219_bits[] = { ANTLR3_UINT64_LIT(0x0000000000300000) }; -static ANTLR3_BITSET_LIST FOLLOW_maxExpr_in_minExpr219 = { FOLLOW_maxExpr_in_minExpr219_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_21_in_minExpr223 */ -static ANTLR3_BITWORD FOLLOW_21_in_minExpr223_bits[] = { ANTLR3_UINT64_LIT(0x00000000000A2600) }; -static ANTLR3_BITSET_LIST FOLLOW_21_in_minExpr223 = { FOLLOW_21_in_minExpr223_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_maxExpr_in_minExpr226 */ -static ANTLR3_BITWORD FOLLOW_maxExpr_in_minExpr226_bits[] = { ANTLR3_UINT64_LIT(0x0000000000300000) }; -static ANTLR3_BITSET_LIST FOLLOW_maxExpr_in_minExpr226 = { FOLLOW_maxExpr_in_minExpr226_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_20_in_minExpr231 */ -static ANTLR3_BITWORD FOLLOW_20_in_minExpr231_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_20_in_minExpr231 = { FOLLOW_20_in_minExpr231_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_minExpr236 */ -static ANTLR3_BITWORD FOLLOW_expr_in_minExpr236_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_minExpr236 = { FOLLOW_expr_in_minExpr236_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_19_in_expr245 */ -static ANTLR3_BITWORD FOLLOW_19_in_expr245_bits[] = { ANTLR3_UINT64_LIT(0x00000000000A2000) }; -static ANTLR3_BITSET_LIST FOLLOW_19_in_expr245 = { FOLLOW_19_in_expr245_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_expr247 */ -static ANTLR3_BITWORD FOLLOW_expr_in_expr247_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000040) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_expr247 = { FOLLOW_expr_in_expr247_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_GREATER_EQUAL_in_expr249 */ -static ANTLR3_BITWORD FOLLOW_GREATER_EQUAL_in_expr249_bits[] = { ANTLR3_UINT64_LIT(0x00000000000A2000) }; -static ANTLR3_BITSET_LIST FOLLOW_GREATER_EQUAL_in_expr249 = { FOLLOW_GREATER_EQUAL_in_expr249_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_expr251 */ -static ANTLR3_BITWORD FOLLOW_expr_in_expr251_bits[] = { ANTLR3_UINT64_LIT(0x0000000000008000) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_expr251 = { FOLLOW_expr_in_expr251_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_QUESTION_MARK_in_expr253 */ -static ANTLR3_BITWORD FOLLOW_QUESTION_MARK_in_expr253_bits[] = { ANTLR3_UINT64_LIT(0x00000000000A2000) }; -static ANTLR3_BITSET_LIST FOLLOW_QUESTION_MARK_in_expr253 = { FOLLOW_QUESTION_MARK_in_expr253_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_expr255 */ -static ANTLR3_BITWORD FOLLOW_expr_in_expr255_bits[] = { ANTLR3_UINT64_LIT(0x0000000000100000) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_expr255 = { FOLLOW_expr_in_expr255_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_20_in_expr257 */ -static ANTLR3_BITWORD FOLLOW_20_in_expr257_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_20_in_expr257 = { FOLLOW_20_in_expr257_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_expr278 */ -static ANTLR3_BITWORD FOLLOW_term_in_expr278_bits[] = { ANTLR3_UINT64_LIT(0x0000000000014812) }; -static ANTLR3_BITSET_LIST FOLLOW_term_in_expr278 = { FOLLOW_term_in_expr278_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_expr282 */ -static ANTLR3_BITWORD FOLLOW_set_in_expr282_bits[] = { ANTLR3_UINT64_LIT(0x00000000000A2000) }; -static ANTLR3_BITSET_LIST FOLLOW_set_in_expr282 = { FOLLOW_set_in_expr282_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_expr299 */ -static ANTLR3_BITWORD FOLLOW_expr_in_expr299_bits[] = { ANTLR3_UINT64_LIT(0x0000000000014812) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_expr299 = { FOLLOW_expr_in_expr299_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMBER_in_term311 */ -static ANTLR3_BITWORD FOLLOW_NUMBER_in_term311_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_NUMBER_in_term311 = { FOLLOW_NUMBER_in_term311_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_VARIABLE_in_term320 */ -static ANTLR3_BITWORD FOLLOW_VARIABLE_in_term320_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_VARIABLE_in_term320 = { FOLLOW_VARIABLE_in_term320_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_19_in_term329 */ -static ANTLR3_BITWORD FOLLOW_19_in_term329_bits[] = { ANTLR3_UINT64_LIT(0x00000000000A2000) }; -static ANTLR3_BITSET_LIST FOLLOW_19_in_term329 = { FOLLOW_19_in_term329_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_term332 */ -static ANTLR3_BITWORD FOLLOW_expr_in_term332_bits[] = { ANTLR3_UINT64_LIT(0x0000000000100000) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_term332 = { FOLLOW_expr_in_term332_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_20_in_term334 */ -static ANTLR3_BITWORD FOLLOW_20_in_term334_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_20_in_term334 = { FOLLOW_20_in_term334_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_19_in_synpred8_EquationSystem245 */ -static ANTLR3_BITWORD FOLLOW_19_in_synpred8_EquationSystem245_bits[] = { ANTLR3_UINT64_LIT(0x00000000000A2000) }; -static ANTLR3_BITSET_LIST FOLLOW_19_in_synpred8_EquationSystem245 = { FOLLOW_19_in_synpred8_EquationSystem245_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_synpred8_EquationSystem247 */ -static ANTLR3_BITWORD FOLLOW_expr_in_synpred8_EquationSystem247_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000040) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_synpred8_EquationSystem247 = { FOLLOW_expr_in_synpred8_EquationSystem247_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_GREATER_EQUAL_in_synpred8_EquationSystem249 */ -static ANTLR3_BITWORD FOLLOW_GREATER_EQUAL_in_synpred8_EquationSystem249_bits[] = { ANTLR3_UINT64_LIT(0x00000000000A2000) }; -static ANTLR3_BITSET_LIST FOLLOW_GREATER_EQUAL_in_synpred8_EquationSystem249 = { FOLLOW_GREATER_EQUAL_in_synpred8_EquationSystem249_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_synpred8_EquationSystem251 */ -static ANTLR3_BITWORD FOLLOW_expr_in_synpred8_EquationSystem251_bits[] = { ANTLR3_UINT64_LIT(0x0000000000008000) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_synpred8_EquationSystem251 = { FOLLOW_expr_in_synpred8_EquationSystem251_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_QUESTION_MARK_in_synpred8_EquationSystem253 */ -static ANTLR3_BITWORD FOLLOW_QUESTION_MARK_in_synpred8_EquationSystem253_bits[] = { ANTLR3_UINT64_LIT(0x00000000000A2000) }; -static ANTLR3_BITSET_LIST FOLLOW_QUESTION_MARK_in_synpred8_EquationSystem253 = { FOLLOW_QUESTION_MARK_in_synpred8_EquationSystem253_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_synpred8_EquationSystem255 */ -static ANTLR3_BITWORD FOLLOW_expr_in_synpred8_EquationSystem255_bits[] = { ANTLR3_UINT64_LIT(0x0000000000100000) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_synpred8_EquationSystem255 = { FOLLOW_expr_in_synpred8_EquationSystem255_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_20_in_synpred8_EquationSystem257 */ -static ANTLR3_BITWORD FOLLOW_20_in_synpred8_EquationSystem257_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_20_in_synpred8_EquationSystem257 = { FOLLOW_20_in_synpred8_EquationSystem257_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_synpred12_EquationSystem282 */ -static ANTLR3_BITWORD FOLLOW_set_in_synpred12_EquationSystem282_bits[] = { ANTLR3_UINT64_LIT(0x00000000000A2000) }; -static ANTLR3_BITSET_LIST FOLLOW_set_in_synpred12_EquationSystem282 = { FOLLOW_set_in_synpred12_EquationSystem282_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_synpred12_EquationSystem299 */ -static ANTLR3_BITWORD FOLLOW_expr_in_synpred12_EquationSystem299_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_synpred12_EquationSystem299 = { FOLLOW_expr_in_synpred12_EquationSystem299_bits, 1 }; - - - -/* ========================================================================= - * DFA tables for the parser - */ -/** Static dfa state tables for Cyclic dfa: - * ()* loopback of 22:28: ( ( NEWLINE !)+ equation )* - */ -static const ANTLR3_INT32 dfa2_eot[4] = - { - -1, -1, -1, -1 - }; -static const ANTLR3_INT32 dfa2_eof[4] = - { - 2, 2, -1, -1 - }; -static const ANTLR3_INT32 dfa2_min[4] = - { - 12, 12, -1, -1 - }; -static const ANTLR3_INT32 dfa2_max[4] = - { - 12, 17, -1, -1 - }; -static const ANTLR3_INT32 dfa2_accept[4] = - { - -1, -1, 2, 1 - }; -static const ANTLR3_INT32 dfa2_special[4] = - { - -1, -1, -1, -1 - }; - -/** Used when there is no transition table entry for a particular state */ -#define dfa2_T_empty NULL - -static const ANTLR3_INT32 dfa2_T0[] = - { - 1, -1, -1, -1, -1, 3 - }; - -static const ANTLR3_INT32 dfa2_T1[] = - { - 1 - }; - - -/* Transition tables are a table of sub tables, with some tables - * reused for efficiency. - */ -static const ANTLR3_INT32 * const dfa2_transitions[] = -{ - dfa2_T1, dfa2_T0, NULL, NULL -}; - - -/* Declare tracking structure for Cyclic DFA 2 - */ -static -ANTLR3_CYCLIC_DFA cdfa2 - = { - 2, /* Decision number of this dfa */ - /* Which decision this represents: */ - (const pANTLR3_UCHAR)"()* loopback of 22:28: ( ( NEWLINE !)+ equation )*", - (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ - - antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ - antlr3dfapredict, /* DFA simulator function is in the runtime */ - dfa2_eot, /* EOT table */ - dfa2_eof, /* EOF table */ - dfa2_min, /* Minimum tokens for each state */ - dfa2_max, /* Maximum tokens for each state */ - dfa2_accept, /* Accept table */ - dfa2_special, /* Special transition states */ - dfa2_transitions /* Table of transition tables */ - - }; -/* End of Cyclic DFA 2 - * --------------------- - */ -/* ========================================================================= - * End of DFA tables for the parser - */ - -/* ============================================== - * Parsing rules - */ -/** - * $ANTLR start equation_system - * EquationSystem.g:22:1: equation_system : equation ( ( NEWLINE !)+ equation )* ( NEWLINE !)* ; - */ -static EquationSystemParser_equation_system_return -equation_system(pEquationSystemParser ctx) -{ - EquationSystemParser_equation_system_return retval; - - - pANTLR3_BASE_TREE root_0; - - pANTLR3_COMMON_TOKEN NEWLINE2; - pANTLR3_COMMON_TOKEN NEWLINE4; - EquationSystemParser_equation_return equation1; - #undef RETURN_TYPE_equation1 - #define RETURN_TYPE_equation1 EquationSystemParser_equation_return - - EquationSystemParser_equation_return equation3; - #undef RETURN_TYPE_equation3 - #define RETURN_TYPE_equation3 EquationSystemParser_equation_return - - pANTLR3_BASE_TREE NEWLINE2_tree; - pANTLR3_BASE_TREE NEWLINE4_tree; - - /* Initialize rule variables - */ - - root_0 = NULL; - - NEWLINE2 = NULL; - NEWLINE4 = NULL; - equation1.tree = NULL; - - equation3.tree = NULL; - retval.start = LT(1); retval.stop = retval.start; - - - NEWLINE2_tree = NULL; - NEWLINE4_tree = NULL; - - - retval.tree = NULL; - - { - // EquationSystem.g:22:17: ( equation ( ( NEWLINE !)+ equation )* ( NEWLINE !)* ) - // EquationSystem.g:22:19: equation ( ( NEWLINE !)+ equation )* ( NEWLINE !)* - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - FOLLOWPUSH(FOLLOW_equation_in_equation_system141); - equation1=equation(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleequation_systemEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, equation1.tree); - - // EquationSystem.g:22:28: ( ( NEWLINE !)+ equation )* - - for (;;) - { - int alt2=2; - alt2 = cdfa2.predict(ctx, RECOGNIZER, ISTREAM, &cdfa2); - if (HASEXCEPTION()) - { - goto ruleequation_systemEx; - } - if (HASFAILED()) - { - return retval; - } - - switch (alt2) - { - case 1: - // EquationSystem.g:22:30: ( NEWLINE !)+ equation - { - // EquationSystem.g:22:37: ( NEWLINE !)+ - { - int cnt1=0; - - for (;;) - { - int alt1=2; - switch ( LA(1) ) - { - case NEWLINE: - { - alt1=1; - } - break; - - } - - switch (alt1) - { - case 1: - // EquationSystem.g:22:37: NEWLINE ! - { - NEWLINE2 = (pANTLR3_COMMON_TOKEN) MATCHT(NEWLINE, &FOLLOW_NEWLINE_in_equation_system145); - if (HASEXCEPTION()) - { - goto ruleequation_systemEx; - } - if (HASFAILED()) - { - return retval; - } - - - } - break; - - default: - - if ( cnt1 >= 1 ) - { - goto loop1; - } - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return retval; - } - - /* mismatchedSetEx() - */ - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; - - - goto ruleequation_systemEx; - } - cnt1++; - } - loop1: ; /* Jump to here if this rule does not match */ - } - - FOLLOWPUSH(FOLLOW_equation_in_equation_system150); - equation3=equation(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleequation_systemEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, equation3.tree); - - } - break; - - default: - goto loop2; /* break out of the loop */ - break; - } - } - loop2: ; /* Jump out to here if this rule does not match */ - - - // EquationSystem.g:22:54: ( NEWLINE !)* - - for (;;) - { - int alt3=2; - switch ( LA(1) ) - { - case NEWLINE: - { - alt3=1; - } - break; - - } - - switch (alt3) - { - case 1: - // EquationSystem.g:22:55: NEWLINE ! - { - NEWLINE4 = (pANTLR3_COMMON_TOKEN) MATCHT(NEWLINE, &FOLLOW_NEWLINE_in_equation_system157); - if (HASEXCEPTION()) - { - goto ruleequation_systemEx; - } - if (HASFAILED()) - { - return retval; - } - - - } - break; - - default: - goto loop3; /* break out of the loop */ - break; - } - } - loop3: ; /* Jump out to here if this rule does not match */ - - - } - - } - - // This is where rules clean up and exit - // - goto ruleequation_systemEx; /* Prevent compiler warnings */ - ruleequation_systemEx: ; - retval.stop = LT(-1); - - - if ( BACKTRACKING==0 ) - { - - retval.stop = LT(-1); - - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); - ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); - } - - - if (HASEXCEPTION()) - { - PREPORTERROR(); - PRECOVER(); - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION)); - } - return retval; -} -/* $ANTLR end equation_system */ - -/** - * $ANTLR start equation - * EquationSystem.g:23:1: equation : VARIABLE '=' ! maxExpr ; - */ -static EquationSystemParser_equation_return -equation(pEquationSystemParser ctx) -{ - EquationSystemParser_equation_return retval; - - - pANTLR3_BASE_TREE root_0; - - pANTLR3_COMMON_TOKEN VARIABLE5; - pANTLR3_COMMON_TOKEN char_literal6; - EquationSystemParser_maxExpr_return maxExpr7; - #undef RETURN_TYPE_maxExpr7 - #define RETURN_TYPE_maxExpr7 EquationSystemParser_maxExpr_return - - pANTLR3_BASE_TREE VARIABLE5_tree; - pANTLR3_BASE_TREE char_literal6_tree; - - /* Initialize rule variables - */ - - root_0 = NULL; - - VARIABLE5 = NULL; - char_literal6 = NULL; - maxExpr7.tree = NULL; - retval.start = LT(1); retval.stop = retval.start; - - - VARIABLE5_tree = NULL; - char_literal6_tree = NULL; - - - retval.tree = NULL; - - { - // EquationSystem.g:23:10: ( VARIABLE '=' ! maxExpr ) - // EquationSystem.g:23:12: VARIABLE '=' ! maxExpr - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - VARIABLE5 = (pANTLR3_COMMON_TOKEN) MATCHT(VARIABLE, &FOLLOW_VARIABLE_in_equation168); - if (HASEXCEPTION()) - { - goto ruleequationEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { - VARIABLE5_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, VARIABLE5)); - ADAPTOR->addChild(ADAPTOR, root_0, VARIABLE5_tree); - } - - char_literal6 = (pANTLR3_COMMON_TOKEN) MATCHT(22, &FOLLOW_22_in_equation170); - if (HASEXCEPTION()) - { - goto ruleequationEx; - } - if (HASFAILED()) - { - return retval; - } - - - FOLLOWPUSH(FOLLOW_maxExpr_in_equation173); - maxExpr7=maxExpr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleequationEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, maxExpr7.tree); - - } - - } - - // This is where rules clean up and exit - // - goto ruleequationEx; /* Prevent compiler warnings */ - ruleequationEx: ; - retval.stop = LT(-1); - - - if ( BACKTRACKING==0 ) - { - - retval.stop = LT(-1); - - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); - ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); - } - - - if (HASEXCEPTION()) - { - PREPORTERROR(); - PRECOVER(); - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION)); - } - return retval; -} -/* $ANTLR end equation */ - -/** - * $ANTLR start maxExpr - * EquationSystem.g:25:1: maxExpr : ( MAXIMUM ^ '(' ! minExpr ( ',' ! minExpr )* ')' !| minExpr ); - */ -static EquationSystemParser_maxExpr_return -maxExpr(pEquationSystemParser ctx) -{ - EquationSystemParser_maxExpr_return retval; - - - pANTLR3_BASE_TREE root_0; - - pANTLR3_COMMON_TOKEN MAXIMUM8; - pANTLR3_COMMON_TOKEN char_literal9; - pANTLR3_COMMON_TOKEN char_literal11; - pANTLR3_COMMON_TOKEN char_literal13; - EquationSystemParser_minExpr_return minExpr10; - #undef RETURN_TYPE_minExpr10 - #define RETURN_TYPE_minExpr10 EquationSystemParser_minExpr_return - - EquationSystemParser_minExpr_return minExpr12; - #undef RETURN_TYPE_minExpr12 - #define RETURN_TYPE_minExpr12 EquationSystemParser_minExpr_return - - EquationSystemParser_minExpr_return minExpr14; - #undef RETURN_TYPE_minExpr14 - #define RETURN_TYPE_minExpr14 EquationSystemParser_minExpr_return - - pANTLR3_BASE_TREE MAXIMUM8_tree; - pANTLR3_BASE_TREE char_literal9_tree; - pANTLR3_BASE_TREE char_literal11_tree; - pANTLR3_BASE_TREE char_literal13_tree; - - /* Initialize rule variables - */ - - root_0 = NULL; - - MAXIMUM8 = NULL; - char_literal9 = NULL; - char_literal11 = NULL; - char_literal13 = NULL; - minExpr10.tree = NULL; - - minExpr12.tree = NULL; - - minExpr14.tree = NULL; - retval.start = LT(1); retval.stop = retval.start; - - - MAXIMUM8_tree = NULL; - char_literal9_tree = NULL; - char_literal11_tree = NULL; - char_literal13_tree = NULL; - - - retval.tree = NULL; - - { - { - // EquationSystem.g:25:9: ( MAXIMUM ^ '(' ! minExpr ( ',' ! minExpr )* ')' !| minExpr ) - - ANTLR3_UINT32 alt5; - - alt5=2; - - switch ( LA(1) ) - { - case MAXIMUM: - { - alt5=1; - } - break; - case MINIMUM: - case NUMBER: - case VARIABLE: - case 19: - { - alt5=2; - } - break; - - default: - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return retval; - } - - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; - EXCEPTION->message = (void *)""; - EXCEPTION->decisionNum = 5; - EXCEPTION->state = 0; - - - goto rulemaxExprEx; - - } - - switch (alt5) - { - case 1: - // EquationSystem.g:25:11: MAXIMUM ^ '(' ! minExpr ( ',' ! minExpr )* ')' ! - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - MAXIMUM8 = (pANTLR3_COMMON_TOKEN) MATCHT(MAXIMUM, &FOLLOW_MAXIMUM_in_maxExpr182); - if (HASEXCEPTION()) - { - goto rulemaxExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { - MAXIMUM8_tree = - (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, MAXIMUM8)) - ; - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, MAXIMUM8_tree, root_0)); - } - - char_literal9 = (pANTLR3_COMMON_TOKEN) MATCHT(19, &FOLLOW_19_in_maxExpr185); - if (HASEXCEPTION()) - { - goto rulemaxExprEx; - } - if (HASFAILED()) - { - return retval; - } - - - FOLLOWPUSH(FOLLOW_minExpr_in_maxExpr188); - minExpr10=minExpr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto rulemaxExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, minExpr10.tree); - - // EquationSystem.g:25:33: ( ',' ! minExpr )* - - for (;;) - { - int alt4=2; - switch ( LA(1) ) - { - case 21: - { - alt4=1; - } - break; - - } - - switch (alt4) - { - case 1: - // EquationSystem.g:25:35: ',' ! minExpr - { - char_literal11 = (pANTLR3_COMMON_TOKEN) MATCHT(21, &FOLLOW_21_in_maxExpr192); - if (HASEXCEPTION()) - { - goto rulemaxExprEx; - } - if (HASFAILED()) - { - return retval; - } - - - FOLLOWPUSH(FOLLOW_minExpr_in_maxExpr195); - minExpr12=minExpr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto rulemaxExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, minExpr12.tree); - - } - break; - - default: - goto loop4; /* break out of the loop */ - break; - } - } - loop4: ; /* Jump out to here if this rule does not match */ - - - char_literal13 = (pANTLR3_COMMON_TOKEN) MATCHT(20, &FOLLOW_20_in_maxExpr200); - if (HASEXCEPTION()) - { - goto rulemaxExprEx; - } - if (HASFAILED()) - { - return retval; - } - - - } - break; - case 2: - // EquationSystem.g:25:58: minExpr - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - FOLLOWPUSH(FOLLOW_minExpr_in_maxExpr205); - minExpr14=minExpr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto rulemaxExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, minExpr14.tree); - - } - break; - - } - } - } - - // This is where rules clean up and exit - // - goto rulemaxExprEx; /* Prevent compiler warnings */ - rulemaxExprEx: ; - retval.stop = LT(-1); - - - if ( BACKTRACKING==0 ) - { - - retval.stop = LT(-1); - - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); - ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); - } - - - if (HASEXCEPTION()) - { - PREPORTERROR(); - PRECOVER(); - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION)); - } - return retval; -} -/* $ANTLR end maxExpr */ - -/** - * $ANTLR start minExpr - * EquationSystem.g:26:1: minExpr : ( MINIMUM ^ '(' ! maxExpr ( ',' ! maxExpr )* ')' !| expr ); - */ -static EquationSystemParser_minExpr_return -minExpr(pEquationSystemParser ctx) -{ - EquationSystemParser_minExpr_return retval; - - - pANTLR3_BASE_TREE root_0; - - pANTLR3_COMMON_TOKEN MINIMUM15; - pANTLR3_COMMON_TOKEN char_literal16; - pANTLR3_COMMON_TOKEN char_literal18; - pANTLR3_COMMON_TOKEN char_literal20; - EquationSystemParser_maxExpr_return maxExpr17; - #undef RETURN_TYPE_maxExpr17 - #define RETURN_TYPE_maxExpr17 EquationSystemParser_maxExpr_return - - EquationSystemParser_maxExpr_return maxExpr19; - #undef RETURN_TYPE_maxExpr19 - #define RETURN_TYPE_maxExpr19 EquationSystemParser_maxExpr_return - - EquationSystemParser_expr_return expr21; - #undef RETURN_TYPE_expr21 - #define RETURN_TYPE_expr21 EquationSystemParser_expr_return - - pANTLR3_BASE_TREE MINIMUM15_tree; - pANTLR3_BASE_TREE char_literal16_tree; - pANTLR3_BASE_TREE char_literal18_tree; - pANTLR3_BASE_TREE char_literal20_tree; - - /* Initialize rule variables - */ - - root_0 = NULL; - - MINIMUM15 = NULL; - char_literal16 = NULL; - char_literal18 = NULL; - char_literal20 = NULL; - maxExpr17.tree = NULL; - - maxExpr19.tree = NULL; - - expr21.tree = NULL; - retval.start = LT(1); retval.stop = retval.start; - - - MINIMUM15_tree = NULL; - char_literal16_tree = NULL; - char_literal18_tree = NULL; - char_literal20_tree = NULL; - - - retval.tree = NULL; - - { - { - // EquationSystem.g:26:9: ( MINIMUM ^ '(' ! maxExpr ( ',' ! maxExpr )* ')' !| expr ) - - ANTLR3_UINT32 alt7; - - alt7=2; - - switch ( LA(1) ) - { - case MINIMUM: - { - alt7=1; - } - break; - case NUMBER: - case VARIABLE: - case 19: - { - alt7=2; - } - break; - - default: - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return retval; - } - - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; - EXCEPTION->message = (void *)""; - EXCEPTION->decisionNum = 7; - EXCEPTION->state = 0; - - - goto ruleminExprEx; - - } - - switch (alt7) - { - case 1: - // EquationSystem.g:26:11: MINIMUM ^ '(' ! maxExpr ( ',' ! maxExpr )* ')' ! - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - MINIMUM15 = (pANTLR3_COMMON_TOKEN) MATCHT(MINIMUM, &FOLLOW_MINIMUM_in_minExpr213); - if (HASEXCEPTION()) - { - goto ruleminExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { - MINIMUM15_tree = - (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, MINIMUM15)) - ; - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, MINIMUM15_tree, root_0)); - } - - char_literal16 = (pANTLR3_COMMON_TOKEN) MATCHT(19, &FOLLOW_19_in_minExpr216); - if (HASEXCEPTION()) - { - goto ruleminExprEx; - } - if (HASFAILED()) - { - return retval; - } - - - FOLLOWPUSH(FOLLOW_maxExpr_in_minExpr219); - maxExpr17=maxExpr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleminExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, maxExpr17.tree); - - // EquationSystem.g:26:33: ( ',' ! maxExpr )* - - for (;;) - { - int alt6=2; - switch ( LA(1) ) - { - case 21: - { - alt6=1; - } - break; - - } - - switch (alt6) - { - case 1: - // EquationSystem.g:26:35: ',' ! maxExpr - { - char_literal18 = (pANTLR3_COMMON_TOKEN) MATCHT(21, &FOLLOW_21_in_minExpr223); - if (HASEXCEPTION()) - { - goto ruleminExprEx; - } - if (HASFAILED()) - { - return retval; - } - - - FOLLOWPUSH(FOLLOW_maxExpr_in_minExpr226); - maxExpr19=maxExpr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleminExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, maxExpr19.tree); - - } - break; - - default: - goto loop6; /* break out of the loop */ - break; - } - } - loop6: ; /* Jump out to here if this rule does not match */ - - - char_literal20 = (pANTLR3_COMMON_TOKEN) MATCHT(20, &FOLLOW_20_in_minExpr231); - if (HASEXCEPTION()) - { - goto ruleminExprEx; - } - if (HASFAILED()) - { - return retval; - } - - - } - break; - case 2: - // EquationSystem.g:26:58: expr - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - FOLLOWPUSH(FOLLOW_expr_in_minExpr236); - expr21=expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleminExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, expr21.tree); - - } - break; - - } - } - } - - // This is where rules clean up and exit - // - goto ruleminExprEx; /* Prevent compiler warnings */ - ruleminExprEx: ; - retval.stop = LT(-1); - - - if ( BACKTRACKING==0 ) - { - - retval.stop = LT(-1); - - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); - ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); - } - - - if (HASEXCEPTION()) - { - PREPORTERROR(); - PRECOVER(); - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION)); - } - return retval; -} -/* $ANTLR end minExpr */ - -/** - * $ANTLR start expr - * EquationSystem.g:28:1: expr : ( '(' expr GREATER_EQUAL expr QUESTION_MARK expr ')' -> ^( GUARD expr expr expr ) | term ( ( PLUS | MULT | SUB | COMMA ) ^ expr )* ); - */ -static EquationSystemParser_expr_return -expr(pEquationSystemParser ctx) -{ - EquationSystemParser_expr_return retval; - - - pANTLR3_BASE_TREE root_0; - - pANTLR3_COMMON_TOKEN char_literal22; - pANTLR3_COMMON_TOKEN GREATER_EQUAL24; - pANTLR3_COMMON_TOKEN QUESTION_MARK26; - pANTLR3_COMMON_TOKEN char_literal28; - pANTLR3_COMMON_TOKEN set30; - EquationSystemParser_expr_return expr23; - #undef RETURN_TYPE_expr23 - #define RETURN_TYPE_expr23 EquationSystemParser_expr_return - - EquationSystemParser_expr_return expr25; - #undef RETURN_TYPE_expr25 - #define RETURN_TYPE_expr25 EquationSystemParser_expr_return - - EquationSystemParser_expr_return expr27; - #undef RETURN_TYPE_expr27 - #define RETURN_TYPE_expr27 EquationSystemParser_expr_return - - EquationSystemParser_term_return term29; - #undef RETURN_TYPE_term29 - #define RETURN_TYPE_term29 EquationSystemParser_term_return - - EquationSystemParser_expr_return expr31; - #undef RETURN_TYPE_expr31 - #define RETURN_TYPE_expr31 EquationSystemParser_expr_return - - pANTLR3_BASE_TREE char_literal22_tree; - pANTLR3_BASE_TREE GREATER_EQUAL24_tree; - pANTLR3_BASE_TREE QUESTION_MARK26_tree; - pANTLR3_BASE_TREE char_literal28_tree; - pANTLR3_BASE_TREE set30_tree; - pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_20; - pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_19; - pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_GREATER_EQUAL; - pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_QUESTION_MARK; - pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_expr; - /* Initialize rule variables - */ - - root_0 = NULL; - - char_literal22 = NULL; - GREATER_EQUAL24 = NULL; - QUESTION_MARK26 = NULL; - char_literal28 = NULL; - set30 = NULL; - expr23.tree = NULL; - - expr25.tree = NULL; - - expr27.tree = NULL; - - term29.tree = NULL; - - expr31.tree = NULL; - retval.start = LT(1); retval.stop = retval.start; - - - char_literal22_tree = NULL; - GREATER_EQUAL24_tree = NULL; - QUESTION_MARK26_tree = NULL; - char_literal28_tree = NULL; - set30_tree = NULL; - - stream_20 = NULL; - #define CREATE_stream_20 if (stream_20 == NULL) {stream_20 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 20"); } - stream_19 = NULL; - #define CREATE_stream_19 if (stream_19 == NULL) {stream_19 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 19"); } - stream_GREATER_EQUAL = NULL; - #define CREATE_stream_GREATER_EQUAL if (stream_GREATER_EQUAL == NULL) {stream_GREATER_EQUAL = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token GREATER_EQUAL"); } - stream_QUESTION_MARK = NULL; - #define CREATE_stream_QUESTION_MARK if (stream_QUESTION_MARK == NULL) {stream_QUESTION_MARK = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token QUESTION_MARK"); } - stream_expr = NULL; - #define CREATE_stream_expr if (stream_expr == NULL) {stream_expr = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule expr"); } - - retval.tree = NULL; - - { - { - // EquationSystem.g:28:6: ( '(' expr GREATER_EQUAL expr QUESTION_MARK expr ')' -> ^( GUARD expr expr expr ) | term ( ( PLUS | MULT | SUB | COMMA ) ^ expr )* ) - - ANTLR3_UINT32 alt9; - - alt9=2; - - switch ( LA(1) ) - { - case 19: - { - { - int LA9_1 = LA(2); - if ( (synpred8_EquationSystem(ctx))) - { - alt9=1; - } - else if ( (ANTLR3_TRUE)) - { - alt9=2; - } - else - { - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return retval; - } - - - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; - EXCEPTION->message = (void *)""; - EXCEPTION->decisionNum = 9; - EXCEPTION->state = 1; - - - goto ruleexprEx; - - } - } - } - break; - case NUMBER: - case VARIABLE: - { - alt9=2; - } - break; - - default: - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return retval; - } - - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; - EXCEPTION->message = (void *)""; - EXCEPTION->decisionNum = 9; - EXCEPTION->state = 0; - - - goto ruleexprEx; - - } - - switch (alt9) - { - case 1: - // EquationSystem.g:28:8: '(' expr GREATER_EQUAL expr QUESTION_MARK expr ')' - { - char_literal22 = (pANTLR3_COMMON_TOKEN) MATCHT(19, &FOLLOW_19_in_expr245); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { CREATE_stream_19; stream_19->add(stream_19, char_literal22, NULL); } - - - FOLLOWPUSH(FOLLOW_expr_in_expr247); - expr23=expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { CREATE_stream_expr; stream_expr->add(stream_expr, expr23.tree, NULL); } - - GREATER_EQUAL24 = (pANTLR3_COMMON_TOKEN) MATCHT(GREATER_EQUAL, &FOLLOW_GREATER_EQUAL_in_expr249); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { CREATE_stream_GREATER_EQUAL; stream_GREATER_EQUAL->add(stream_GREATER_EQUAL, GREATER_EQUAL24, NULL); } - - - FOLLOWPUSH(FOLLOW_expr_in_expr251); - expr25=expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { CREATE_stream_expr; stream_expr->add(stream_expr, expr25.tree, NULL); } - - QUESTION_MARK26 = (pANTLR3_COMMON_TOKEN) MATCHT(QUESTION_MARK, &FOLLOW_QUESTION_MARK_in_expr253); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { CREATE_stream_QUESTION_MARK; stream_QUESTION_MARK->add(stream_QUESTION_MARK, QUESTION_MARK26, NULL); } - - - FOLLOWPUSH(FOLLOW_expr_in_expr255); - expr27=expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { CREATE_stream_expr; stream_expr->add(stream_expr, expr27.tree, NULL); } - - char_literal28 = (pANTLR3_COMMON_TOKEN) MATCHT(20, &FOLLOW_20_in_expr257); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { CREATE_stream_20; stream_20->add(stream_20, char_literal28, NULL); } - - - /* AST REWRITE - * elements : expr, expr, expr - * token labels : - * rule labels : retval - * token list labels : - * rule list labels : - */ - if ( BACKTRACKING==0 ) - - { - pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval; - - stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL); - - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - retval.tree = root_0; - // 28:59: -> ^( GUARD expr expr expr ) - { - // EquationSystem.g:28:62: ^( GUARD expr expr expr ) - { - pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, - (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, GUARD, (pANTLR3_UINT8)"GUARD") - , root_1)); - - ADAPTOR->addChild(ADAPTOR, root_1, stream_expr == NULL ? NULL : stream_expr->nextTree(stream_expr)); - - ADAPTOR->addChild(ADAPTOR, root_1, stream_expr == NULL ? NULL : stream_expr->nextTree(stream_expr)); - - ADAPTOR->addChild(ADAPTOR, root_1, stream_expr == NULL ? NULL : stream_expr->nextTree(stream_expr)); - - ADAPTOR->addChild(ADAPTOR, root_0, root_1); - } - - } - - - retval.tree = root_0; // set result root - if (stream_retval != NULL) stream_retval->free(stream_retval); - - - } - } - break; - case 2: - // EquationSystem.g:29:8: term ( ( PLUS | MULT | SUB | COMMA ) ^ expr )* - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - FOLLOWPUSH(FOLLOW_term_in_expr278); - term29=term(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, term29.tree); - - // EquationSystem.g:29:13: ( ( PLUS | MULT | SUB | COMMA ) ^ expr )* - - for (;;) - { - int alt8=2; - switch ( LA(1) ) - { - case COMMA: - case MULT: - case PLUS: - case SUB: - { - { - /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState) - */ - int LA8_2 = LA(2); - if ( (synpred12_EquationSystem(ctx))) - { - alt8=1; - } - - } - } - break; - - } - - switch (alt8) - { - case 1: - // EquationSystem.g:29:15: ( PLUS | MULT | SUB | COMMA ) ^ expr - { - set30=(pANTLR3_COMMON_TOKEN)LT(1); - - set30=(pANTLR3_COMMON_TOKEN)LT(1); - - if ( LA(1) == COMMA || LA(1) == MULT || LA(1) == PLUS || LA(1) == SUB ) - { - CONSUME(); - if ( BACKTRACKING==0 ) root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, - (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set30)) - , root_0)); - PERRORRECOVERY=ANTLR3_FALSE; - FAILEDFLAG=ANTLR3_FALSE; - - } - else - { - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return retval; - } - - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - EXCEPTION->expectingSet = NULL; - - goto ruleexprEx; - } - - - FOLLOWPUSH(FOLLOW_expr_in_expr299); - expr31=expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, expr31.tree); - - } - break; - - default: - goto loop8; /* break out of the loop */ - break; - } - } - loop8: ; /* Jump out to here if this rule does not match */ - - - } - break; - - } - } - } - - // This is where rules clean up and exit - // - goto ruleexprEx; /* Prevent compiler warnings */ - ruleexprEx: ; - retval.stop = LT(-1); - - - if ( BACKTRACKING==0 ) - { - - retval.stop = LT(-1); - - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); - ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); - if (stream_20 != NULL) stream_20->free(stream_20); - if (stream_19 != NULL) stream_19->free(stream_19); - if (stream_GREATER_EQUAL != NULL) stream_GREATER_EQUAL->free(stream_GREATER_EQUAL); - if (stream_QUESTION_MARK != NULL) stream_QUESTION_MARK->free(stream_QUESTION_MARK); - if (stream_expr != NULL) stream_expr->free(stream_expr); - } - - - if (HASEXCEPTION()) - { - PREPORTERROR(); - PRECOVER(); - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION)); - } - return retval; -} -/* $ANTLR end expr */ - -/** - * $ANTLR start term - * EquationSystem.g:31:1: term : ( NUMBER | VARIABLE | '(' ! expr ')' !); - */ -static EquationSystemParser_term_return -term(pEquationSystemParser ctx) -{ - EquationSystemParser_term_return retval; - - - pANTLR3_BASE_TREE root_0; - - pANTLR3_COMMON_TOKEN NUMBER32; - pANTLR3_COMMON_TOKEN VARIABLE33; - pANTLR3_COMMON_TOKEN char_literal34; - pANTLR3_COMMON_TOKEN char_literal36; - EquationSystemParser_expr_return expr35; - #undef RETURN_TYPE_expr35 - #define RETURN_TYPE_expr35 EquationSystemParser_expr_return - - pANTLR3_BASE_TREE NUMBER32_tree; - pANTLR3_BASE_TREE VARIABLE33_tree; - pANTLR3_BASE_TREE char_literal34_tree; - pANTLR3_BASE_TREE char_literal36_tree; - - /* Initialize rule variables - */ - - root_0 = NULL; - - NUMBER32 = NULL; - VARIABLE33 = NULL; - char_literal34 = NULL; - char_literal36 = NULL; - expr35.tree = NULL; - retval.start = LT(1); retval.stop = retval.start; - - - NUMBER32_tree = NULL; - VARIABLE33_tree = NULL; - char_literal34_tree = NULL; - char_literal36_tree = NULL; - - - retval.tree = NULL; - - { - { - // EquationSystem.g:31:6: ( NUMBER | VARIABLE | '(' ! expr ')' !) - - ANTLR3_UINT32 alt10; - - alt10=3; - - switch ( LA(1) ) - { - case NUMBER: - { - alt10=1; - } - break; - case VARIABLE: - { - alt10=2; - } - break; - case 19: - { - alt10=3; - } - break; - - default: - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return retval; - } - - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; - EXCEPTION->message = (void *)""; - EXCEPTION->decisionNum = 10; - EXCEPTION->state = 0; - - - goto ruletermEx; - - } - - switch (alt10) - { - case 1: - // EquationSystem.g:31:8: NUMBER - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - NUMBER32 = (pANTLR3_COMMON_TOKEN) MATCHT(NUMBER, &FOLLOW_NUMBER_in_term311); - if (HASEXCEPTION()) - { - goto ruletermEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { - NUMBER32_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, NUMBER32)); - ADAPTOR->addChild(ADAPTOR, root_0, NUMBER32_tree); - } - - } - break; - case 2: - // EquationSystem.g:32:8: VARIABLE - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - VARIABLE33 = (pANTLR3_COMMON_TOKEN) MATCHT(VARIABLE, &FOLLOW_VARIABLE_in_term320); - if (HASEXCEPTION()) - { - goto ruletermEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { - VARIABLE33_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, VARIABLE33)); - ADAPTOR->addChild(ADAPTOR, root_0, VARIABLE33_tree); - } - - } - break; - case 3: - // EquationSystem.g:33:8: '(' ! expr ')' ! - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - char_literal34 = (pANTLR3_COMMON_TOKEN) MATCHT(19, &FOLLOW_19_in_term329); - if (HASEXCEPTION()) - { - goto ruletermEx; - } - if (HASFAILED()) - { - return retval; - } - - - FOLLOWPUSH(FOLLOW_expr_in_term332); - expr35=expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruletermEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, expr35.tree); - - char_literal36 = (pANTLR3_COMMON_TOKEN) MATCHT(20, &FOLLOW_20_in_term334); - if (HASEXCEPTION()) - { - goto ruletermEx; - } - if (HASFAILED()) - { - return retval; - } - - - } - break; - - } - } - } - - // This is where rules clean up and exit - // - goto ruletermEx; /* Prevent compiler warnings */ - ruletermEx: ; - retval.stop = LT(-1); - - - if ( BACKTRACKING==0 ) - { - - retval.stop = LT(-1); - - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); - ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); - } - - - if (HASEXCEPTION()) - { - PREPORTERROR(); - PRECOVER(); - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION)); - } - return retval; -} -/* $ANTLR end term */ - -// $ANTLR start synpred8_EquationSystem -static void synpred8_EquationSystem_fragment(pEquationSystemParser ctx ) -{ - // EquationSystem.g:28:8: ( '(' expr GREATER_EQUAL expr QUESTION_MARK expr ')' ) - // EquationSystem.g:28:8: '(' expr GREATER_EQUAL expr QUESTION_MARK expr ')' - { - MATCHT(19, &FOLLOW_19_in_synpred8_EquationSystem245); - if (HASEXCEPTION()) - { - goto rulesynpred8_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - FOLLOWPUSH(FOLLOW_expr_in_synpred8_EquationSystem247); - expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto rulesynpred8_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - MATCHT(GREATER_EQUAL, &FOLLOW_GREATER_EQUAL_in_synpred8_EquationSystem249); - if (HASEXCEPTION()) - { - goto rulesynpred8_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - FOLLOWPUSH(FOLLOW_expr_in_synpred8_EquationSystem251); - expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto rulesynpred8_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - MATCHT(QUESTION_MARK, &FOLLOW_QUESTION_MARK_in_synpred8_EquationSystem253); - if (HASEXCEPTION()) - { - goto rulesynpred8_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - FOLLOWPUSH(FOLLOW_expr_in_synpred8_EquationSystem255); - expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto rulesynpred8_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - MATCHT(20, &FOLLOW_20_in_synpred8_EquationSystem257); - if (HASEXCEPTION()) - { - goto rulesynpred8_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - } - -// This is where rules clean up and exit -// -goto rulesynpred8_EquationSystemEx; /* Prevent compiler warnings */ -rulesynpred8_EquationSystemEx: ; - -} -// $ANTLR end synpred8_EquationSystem - -// $ANTLR start synpred12_EquationSystem -static void synpred12_EquationSystem_fragment(pEquationSystemParser ctx ) -{ - // EquationSystem.g:29:15: ( ( PLUS | MULT | SUB | COMMA ) expr ) - // EquationSystem.g:29:15: ( PLUS | MULT | SUB | COMMA ) expr - { - if ( LA(1) == COMMA || LA(1) == MULT || LA(1) == PLUS || LA(1) == SUB ) - { - CONSUME(); - PERRORRECOVERY=ANTLR3_FALSE; - FAILEDFLAG=ANTLR3_FALSE; - - } - else - { - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return ; - } - - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - EXCEPTION->expectingSet = NULL; - - goto rulesynpred12_EquationSystemEx; - } - - - FOLLOWPUSH(FOLLOW_expr_in_synpred12_EquationSystem299); - expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto rulesynpred12_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - } - -// This is where rules clean up and exit -// -goto rulesynpred12_EquationSystemEx; /* Prevent compiler warnings */ -rulesynpred12_EquationSystemEx: ; - -} -// $ANTLR end synpred12_EquationSystem -/* End of parsing rules - * ============================================== - */ - -/* ============================================== - * Syntactic predicates - */ -static ANTLR3_BOOLEAN synpred12_EquationSystem(pEquationSystemParser ctx) -{ - ANTLR3_MARKER start; - ANTLR3_BOOLEAN success; - - BACKTRACKING++; - start = MARK(); - synpred12_EquationSystem_fragment(ctx); // can never throw exception - success = !(FAILEDFLAG); - REWIND(start); - BACKTRACKING--; - FAILEDFLAG = ANTLR3_FALSE; - return success; -} -static ANTLR3_BOOLEAN synpred8_EquationSystem(pEquationSystemParser ctx) -{ - ANTLR3_MARKER start; - ANTLR3_BOOLEAN success; - - BACKTRACKING++; - start = MARK(); - synpred8_EquationSystem_fragment(ctx); // can never throw exception - success = !(FAILEDFLAG); - REWIND(start); - BACKTRACKING--; - FAILEDFLAG = ANTLR3_FALSE; - return success; -} - -/* End of syntactic predicates - * ============================================== - */ - - - - - - -/* End of code - * ============================================================================= - */ diff --git a/impl/EquationSystemParser.h b/impl/EquationSystemParser.h deleted file mode 100644 index 2efd482..0000000 --- a/impl/EquationSystemParser.h +++ /dev/null @@ -1,324 +0,0 @@ -/** \file - * This C header file was generated by $ANTLR version 3.4 - * - * - From the grammar source file : EquationSystem.g - * - On : 2012-07-09 19:58:45 - * - for the parser : EquationSystemParserParser - * - * Editing it, at least manually, is not wise. - * - * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. - * - * - * The parser -EquationSystemParser - -has the callable functions (rules) shown below, - * which will invoke the code for the associated rule in the source grammar - * assuming that the input stream is pointing to a token/text stream that could begin - * this rule. - * - * For instance if you call the first (topmost) rule in a parser grammar, you will - * get the results of a full parse, but calling a rule half way through the grammar will - * allow you to pass part of a full token stream to the parser, such as for syntax checking - * in editors and so on. - * - * The parser entry points are called indirectly (by function pointer to function) via - * a parser context typedef pEquationSystemParser, which is returned from a call to EquationSystemParserNew(). - * - * The methods in pEquationSystemParser are as follows: - * - * - - EquationSystemParser_equation_system_return - pEquationSystemParser->equation_system(pEquationSystemParser) - * - - EquationSystemParser_equation_return - pEquationSystemParser->equation(pEquationSystemParser) - * - - EquationSystemParser_maxExpr_return - pEquationSystemParser->maxExpr(pEquationSystemParser) - * - - EquationSystemParser_minExpr_return - pEquationSystemParser->minExpr(pEquationSystemParser) - * - - EquationSystemParser_expr_return - pEquationSystemParser->expr(pEquationSystemParser) - * - - EquationSystemParser_term_return - pEquationSystemParser->term(pEquationSystemParser) - * - * - * - * The return type for any particular rule is of course determined by the source - * grammar file. - */ -// [The "BSD license"] -// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC -// http://www.temporal-wave.com -// http://www.linkedin.com/in/jimidle -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#ifndef _EquationSystemParser_H -#define _EquationSystemParser_H -/* ============================================================================= - * Standard antlr3 C runtime definitions - */ -#include - -/* End of standard antlr 3 runtime definitions - * ============================================================================= - */ - -#ifdef __cplusplus -extern "C" { -#endif - -// Forward declare the context typedef so that we can use it before it is -// properly defined. Delegators and delegates (from import statements) are -// interdependent and their context structures contain pointers to each other -// C only allows such things to be declared if you pre-declare the typedef. -// -typedef struct EquationSystemParser_Ctx_struct EquationSystemParser, * pEquationSystemParser; - - - -#ifdef ANTLR3_WINDOWS -// Disable: Unreferenced parameter, - Rules with parameters that are not used -// constant conditional, - ANTLR realizes that a prediction is always true (synpred usually) -// initialized but unused variable - tree rewrite variables declared but not needed -// Unreferenced local variable - lexer rule declares but does not always use _type -// potentially unitialized variable used - retval always returned from a rule -// unreferenced local function has been removed - susually getTokenNames or freeScope, they can go without warnigns -// -// These are only really displayed at warning level /W4 but that is the code ideal I am aiming at -// and the codegen must generate some of these warnings by necessity, apart from 4100, which is -// usually generated when a parser rule is given a parameter that it does not use. Mostly though -// this is a matter of orthogonality hence I disable that one. -// -#pragma warning( disable : 4100 ) -#pragma warning( disable : 4101 ) -#pragma warning( disable : 4127 ) -#pragma warning( disable : 4189 ) -#pragma warning( disable : 4505 ) -#pragma warning( disable : 4701 ) -#endif - -/* ======================== - * BACKTRACKING IS ENABLED - * ======================== - */ - -typedef struct EquationSystemParser_equation_system_return_struct -{ - /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees - */ - pANTLR3_COMMON_TOKEN start; - pANTLR3_COMMON_TOKEN stop; - pANTLR3_BASE_TREE tree; - -} - EquationSystemParser_equation_system_return; - - - -typedef struct EquationSystemParser_equation_return_struct -{ - /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees - */ - pANTLR3_COMMON_TOKEN start; - pANTLR3_COMMON_TOKEN stop; - pANTLR3_BASE_TREE tree; - -} - EquationSystemParser_equation_return; - - - -typedef struct EquationSystemParser_maxExpr_return_struct -{ - /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees - */ - pANTLR3_COMMON_TOKEN start; - pANTLR3_COMMON_TOKEN stop; - pANTLR3_BASE_TREE tree; - -} - EquationSystemParser_maxExpr_return; - - - -typedef struct EquationSystemParser_minExpr_return_struct -{ - /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees - */ - pANTLR3_COMMON_TOKEN start; - pANTLR3_COMMON_TOKEN stop; - pANTLR3_BASE_TREE tree; - -} - EquationSystemParser_minExpr_return; - - - -typedef struct EquationSystemParser_expr_return_struct -{ - /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees - */ - pANTLR3_COMMON_TOKEN start; - pANTLR3_COMMON_TOKEN stop; - pANTLR3_BASE_TREE tree; - -} - EquationSystemParser_expr_return; - - - -typedef struct EquationSystemParser_term_return_struct -{ - /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees - */ - pANTLR3_COMMON_TOKEN start; - pANTLR3_COMMON_TOKEN stop; - pANTLR3_BASE_TREE tree; - -} - EquationSystemParser_term_return; - - - - -/** Context tracking structure for -EquationSystemParser - - */ -struct EquationSystemParser_Ctx_struct -{ - /** Built in ANTLR3 context tracker contains all the generic elements - * required for context tracking. - */ - pANTLR3_PARSER pParser; - - EquationSystemParser_equation_system_return - (*equation_system) (struct EquationSystemParser_Ctx_struct * ctx); - - EquationSystemParser_equation_return - (*equation) (struct EquationSystemParser_Ctx_struct * ctx); - - EquationSystemParser_maxExpr_return - (*maxExpr) (struct EquationSystemParser_Ctx_struct * ctx); - - EquationSystemParser_minExpr_return - (*minExpr) (struct EquationSystemParser_Ctx_struct * ctx); - - EquationSystemParser_expr_return - (*expr) (struct EquationSystemParser_Ctx_struct * ctx); - - EquationSystemParser_term_return - (*term) (struct EquationSystemParser_Ctx_struct * ctx); - - ANTLR3_BOOLEAN - (*synpred8_EquationSystem) (struct EquationSystemParser_Ctx_struct * ctx); - - ANTLR3_BOOLEAN - (*synpred12_EquationSystem) (struct EquationSystemParser_Ctx_struct * ctx); - // Delegated rules - - const char * (*getGrammarFileName)(); - void (*reset) (struct EquationSystemParser_Ctx_struct * ctx); - void (*free) (struct EquationSystemParser_Ctx_struct * ctx); -/* @headerFile.members() */ -pANTLR3_BASE_TREE_ADAPTOR adaptor; -pANTLR3_VECTOR_FACTORY vectors; -/* End @headerFile.members() */ -}; - -// Function protoypes for the constructor functions that external translation units -// such as delegators and delegates may wish to call. -// -ANTLR3_API pEquationSystemParser EquationSystemParserNew ( -pANTLR3_COMMON_TOKEN_STREAM - instream); -ANTLR3_API pEquationSystemParser EquationSystemParserNewSSD ( -pANTLR3_COMMON_TOKEN_STREAM - instream, pANTLR3_RECOGNIZER_SHARED_STATE state); - -/** Symbolic definitions of all the tokens that the -parser - will work with. - * \{ - * - * Antlr will define EOF, but we can't use that as it it is too common in - * in C header files and that would be confusing. There is no way to filter this out at the moment - * so we just undef it here for now. That isn't the value we get back from C recognizers - * anyway. We are looking for ANTLR3_TOKEN_EOF. - */ -#ifdef EOF -#undef EOF -#endif -#ifdef Tokens -#undef Tokens -#endif -#define EOF -1 -#define T__19 19 -#define T__20 20 -#define T__21 21 -#define T__22 22 -#define COMMA 4 -#define DIGIT 5 -#define GREATER_EQUAL 6 -#define GUARD 7 -#define LETTER 8 -#define MAXIMUM 9 -#define MINIMUM 10 -#define MULT 11 -#define NEWLINE 12 -#define NUMBER 13 -#define PLUS 14 -#define QUESTION_MARK 15 -#define SUB 16 -#define VARIABLE 17 -#define WHITESPACE 18 -#ifdef EOF -#undef EOF -#define EOF ANTLR3_TOKEN_EOF -#endif - -#ifndef TOKENSOURCE -#define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource -#endif - -/* End of token definitions for EquationSystemParser - * ============================================================================= - */ -/** } */ - -#ifdef __cplusplus -} -#endif - -#endif - -/* END - Note:Keep extra line feed to satisfy UNIX systems */ diff --git a/impl/EquationSystemParser.o b/impl/EquationSystemParser.o deleted file mode 100644 index cf6da29..0000000 Binary files a/impl/EquationSystemParser.o and /dev/null differ diff --git a/impl/Expression.hpp b/impl/Expression.hpp index 63f732d..eedaa52 100644 --- a/impl/Expression.hpp +++ b/impl/Expression.hpp @@ -45,7 +45,7 @@ struct Constant : public Expression { } void print(std::ostream& cout) const { - cout << _value << "!c"; + cout << _value; } private: @@ -69,7 +69,7 @@ struct Variable : public Expression { } void print(std::ostream& cout) const { - cout << _name << "!v"; + cout << _name; } private: diff --git a/impl/FixpointAlgorithm.hpp b/impl/FixpointAlgorithm.hpp deleted file mode 100644 index bb08e72..0000000 --- a/impl/FixpointAlgorithm.hpp +++ /dev/null @@ -1,169 +0,0 @@ -#ifndef FIXPOINT_ALGORITHM_HPP -#define FIXPOINT_ALGORITHM_HPP - -#include "IdSet.hpp" -#include "IdMap.hpp" -#include "VariableAssignment.hpp" -#include "EquationSystem.hpp" -#include "MaxStrategy.hpp" - -template -struct FixpointAlgorithm { - virtual ~FixpointAlgorithm() { } - virtual void maxFixpoint( - const EquationSystem& system, - const MaxStrategy& strat, - StableVariableAssignment& rho, - IdSet >& changedIn, - IdSet >& changedOut - ) = 0; -}; - -template -struct NaiveFixpointAlgorithm : public FixpointAlgorithm { - NaiveFixpointAlgorithm(const EquationSystem& system) - : _system(system) { } - virtual void maxFixpoint( - const EquationSystem& system, - const MaxStrategy& strat, - StableVariableAssignment& rhoOut, - IdSet >&, - IdSet >& - ) { - VariableAssignment* rho = NULL; - VariableAssignment* result = system.assignment(infinity()); - do { - delete rho; - rho = result; - result = _system.eval(*rho, strat); - } while (!_system.equalAssignments(*rho, *result)); - delete rho; - - for (unsigned int i = 0, length = system.variableCount(); i < length; ++i) { - Variable var = system.variable(i); - rhoOut[var] = (*result)[var]; - } - } - private: - const EquationSystem& _system; -}; - -template -struct SmartFixpointAlgorithm : public FixpointAlgorithm { - SmartFixpointAlgorithm(const EquationSystem& system) - : _system(system), - _influence(system.variableCount(), IdSet >(system.variableCount())){ - } - - struct DynamicVariableAssignment : public VariableAssignment { - DynamicVariableAssignment( - const EquationSystem& system, - const MaxStrategy& strat, - IdMap,IdSet > >& influence, - StableVariableAssignment& rho, - IdSet >& stable, - IdSet >& changed - ) : _system(system), - _strategy(strat), - _values(rho), - _stable(stable), - _changed(changed), - _influence(influence) { } - - const Domain& operator[](const Variable& var) const { - solve(var); - return _values[var]; - } - - private: - - void solve(const Variable& x) const { - if (!_stable.contains(x)) { - _stable.insert(x); - - Domain val = _system[x]->eval(DependencyAssignment(*this, x), _strategy); - - if (val != _values[x]) { - IdSet > oldInfluence = _influence[x]; - _influence[x].clear(); - _values[x] = val; - _changed.insert(x); - - _stable.filter(oldInfluence); - - for (typename IdSet >::iterator it = oldInfluence.begin(); - it != oldInfluence.end(); - ++it) { - solve(_system.variable(*it)); - } - _influence[x] = oldInfluence; - } - } - } - - struct DependencyAssignment : public VariableAssignment { - DependencyAssignment(const DynamicVariableAssignment& assignment, const Variable& var) - : _assignment(assignment), _var(var) { } - const Domain& operator[](const Variable& x) const { - const Domain& result = _assignment[x]; - _assignment._influence[x].insert(_var); - return result; - } - private: - const DynamicVariableAssignment& _assignment; - const Variable& _var; - }; - - const EquationSystem& _system; - const MaxStrategy& _strategy; - StableVariableAssignment& _values; - IdSet >& _stable; - IdSet >& _changed; - IdMap,IdSet > >& _influence; - }; - - void invalidate(const IdSet >& set, IdSet >& changed, StableVariableAssignment& rho) const { - for (typename IdSet >::iterator it = set.begin(), - end = set.end(); - it != end; - ++it) { - Variable& var = _system.variable(*it); - if (!changed.contains(var)) { - rho[var] = infinity(); - changed.insert(var); - invalidate(_influence[var], changed, rho); - } - } - } - - virtual void maxFixpoint( - const EquationSystem& system, - const MaxStrategy& strat, - StableVariableAssignment& rhoOut, - IdSet >& changedIn, - IdSet >& changedOut - ) { - for (typename IdSet >::iterator it = changedIn.begin(), - end = changedIn.end(); - it != end; - ++it) { - //std::cout << *it << " "; - Variable& var = _system.variable(*it); - rhoOut[var] = infinity(); - invalidate(_influence[var], changedIn, rhoOut); - } - - changedIn.invert(); - DynamicVariableAssignment rho(system, strat, _influence, rhoOut, changedIn, changedOut); - for (unsigned int i = 0, length = system.variableCount(); i < length; ++i) { - rho[system.variable(i)]; - } - /*std::cout << _influence << std::endl; - std::cout << std::endl;*/ - } - private: - const EquationSystem& _system; - IdMap,IdSet > > _influence; -}; - -#endif diff --git a/impl/ImprovementOperator.hpp b/impl/ImprovementOperator.hpp index 78c9ac5..a435b6e 100644 --- a/impl/ImprovementOperator.hpp +++ b/impl/ImprovementOperator.hpp @@ -68,121 +68,4 @@ struct RepeatedImprovementOperator : public ImprovementOperator { const ImprovementOperator& _subImprovement; }; - - -#include "VariableAssignment.hpp" - -template -struct DynamicMaxStrategy : public MaxStrategy { - DynamicMaxStrategy( - const EquationSystem& system - ) : _system(system), - _rho(NULL), - _values(system), - _stable(system.maxExpressionCount()), - _influence(system.maxExpressionCount(), - IdSet>(system.maxExpressionCount())), - _var_influence(system.variableCount(), - IdSet>(system.maxExpressionCount())) - {} - - void setRho(DynamicVariableAssignment& rho) { - _rho = ρ - } - - unsigned int get(const MaxExpression& e) const { - solve(e); - return _values.get(e); - } - - void invalidate(const Variable& v) const { - log::strategy << "invalidating " << v << " - " << *_system[v] << std::endl; - log::strategy << "\t" << _var_influence[v] << std::endl; - _stable.filter(_var_influence[v]); - - for (auto it = _var_influence[v].begin(); - it != _var_influence[v].end(); - ++it) { - solve(_system.maxExpression(*it)); - } - } - -private: - void solve(const MaxExpression& x) const { - if (!_stable.contains(x)) { - _stable.insert(x); - - unsigned int val = x.bestStrategy(DependencyAssignment(*this, *_rho, x), - DependencyStrategy(*this, x)); - - if (val != _values.get(x)) { - log::strategy << "Updating strategy for " << x - << " to " << val << std::endl; - - auto oldInfluence = _influence[x]; - _influence[x].clear(); - _values.set(x, val); - - _rho->invalidate(*_system.varFromExpr(x)); - - _stable.filter(oldInfluence); - - for (auto it = oldInfluence.begin(); - it != oldInfluence.end(); - ++it) { - solve(_system.maxExpression(*it)); - } - } else { - log::strategy << x << " did not change" << std::endl; - } - } else { - log::strategy << x << " is stable" << std::endl; - } - } - - struct DependencyAssignment : public VariableAssignment{ - DependencyAssignment(const DynamicMaxStrategy& strat, - VariableAssignment& rho, - const MaxExpression& expr) - : _strat(strat), - _rho(rho), - _expr(expr) { - } - const Domain& operator[](const Variable& var) const { - _strat._var_influence[var].insert(_expr); - return _rho[var]; - } - private: - const DynamicMaxStrategy& _strat; - VariableAssignment& _rho; - const MaxExpression& _expr; - }; - - struct DependencyStrategy : public MaxStrategy { - DependencyStrategy(const DynamicMaxStrategy& strat, const MaxExpression& expr) - : _strat(strat), - _expr(expr) { - } - unsigned int get(const MaxExpression& e) const { - _strat.solve(e); - if (&_expr != &e) { - _strat._influence[e].insert(_expr); - } - return _strat._values.get(e); - } - private: - const DynamicMaxStrategy& _strat; - const MaxExpression& _expr; - }; - -private: - const EquationSystem& _system; - mutable DynamicVariableAssignment* _rho; - mutable ConcreteMaxStrategy _values; - mutable IdSet> _stable; - mutable IdMap,IdSet>> _influence; - mutable IdMap,IdSet>> _var_influence; -}; - - #endif diff --git a/impl/MaxStrategy.hpp b/impl/MaxStrategy.hpp index 21a6420..8f40c99 100644 --- a/impl/MaxStrategy.hpp +++ b/impl/MaxStrategy.hpp @@ -12,42 +12,126 @@ struct MaxStrategy { virtual unsigned int get(const MaxExpression& e) const = 0; }; +#include "VariableAssignment.hpp" + +template +struct DynamicVariableAssignment; + template -struct ConcreteMaxStrategy : public MaxStrategy { - ConcreteMaxStrategy(const EquationSystem& system) - : _system(system), - _strategy(system.maxExpressionCount(), 0) { +struct DynamicMaxStrategy : public MaxStrategy { + DynamicMaxStrategy( + const EquationSystem& system + ) : _system(system), + _rho(NULL), + _values(system.maxExpressionCount(), 0), + _stable(system.maxExpressionCount()), + _influence(system.maxExpressionCount(), + IdSet>(system.maxExpressionCount())), + _var_influence(system.variableCount(), + IdSet>(system.maxExpressionCount())) + {} + + void setRho(DynamicVariableAssignment& rho) { + _rho = ρ } unsigned int get(const MaxExpression& e) const { - return _strategy[e]; + solve(e); + return _values[e]; } - unsigned int set(const MaxExpression& e, unsigned int i) { - _strategy[e] = i; - return i; + + void invalidate(const Variable& v) const { + log::strategy << "\tInvalidating " << v << " - " << *_system[v] << std::endl; + _stable.filter(_var_influence[v]); + + for (auto it = _var_influence[v].begin(); + it != _var_influence[v].end(); + ++it) { + solve(_system.maxExpression(*it)); + } } - void print(std::ostream& cout) const { - for (unsigned int i = 0, length = _system.maxExpressionCount(); - i < length; - ++i) { - auto expr = _system.maxExpression(i); - unsigned int subExpression = get(expr); - cout << expr - << " --[" << subExpression << "]-> " - << *expr.arguments()[subExpression] << std::endl; +private: + void solve(const MaxExpression& x) const { + if (!_stable.contains(x)) { + _stable.insert(x); + log::strategy << "\tStabilise " << x << std::endl; + + unsigned int val = x.bestStrategy(DependencyAssignment(*this, *_rho, x), + DependencyStrategy(*this, x)); + + if (val != _values[x]) { + log::strategy << x << " => " << *x.arguments()[val] << std::endl; + + auto oldInfluence = _influence[x]; + _influence[x].clear(); + _values[x] = val; + + _rho->invalidate(*_system.varFromExpr(x)); + + _stable.filter(oldInfluence); + + for (auto it = oldInfluence.begin(); + it != oldInfluence.end(); + ++it) { + solve(_system.maxExpression(*it)); + } + } else { + log::strategy << "\t" << x << " did not change" << std::endl; + } + } else { + log::strategy << "\t" << x << " is stable" << std::endl; } } + struct DependencyAssignment : public VariableAssignment{ + DependencyAssignment(const DynamicMaxStrategy& strat, + VariableAssignment& rho, + const MaxExpression& expr) + : _strat(strat), + _rho(rho), + _expr(expr) { + } + const Domain& operator[](const Variable& var) const { + _strat._var_influence[var].insert(_expr); + return _rho[var]; + } + private: + const DynamicMaxStrategy& _strat; + VariableAssignment& _rho; + const MaxExpression& _expr; + }; + + struct DependencyStrategy : public MaxStrategy { + DependencyStrategy(const DynamicMaxStrategy& strat, const MaxExpression& expr) + : _strat(strat), + _expr(expr) { + } + unsigned int get(const MaxExpression& e) const { + _strat.solve(e); + if (&_expr != &e) { + _strat._influence[e].insert(_expr); + } + return _strat._values[e]; + } private: + const DynamicMaxStrategy& _strat; + const MaxExpression& _expr; + }; + +private: const EquationSystem& _system; - IdMap,unsigned int> _strategy; + mutable DynamicVariableAssignment* _rho; + mutable IdMap,unsigned int> _values; + mutable IdSet> _stable; + mutable IdMap,IdSet>> _influence; + mutable IdMap,IdSet>> _var_influence; }; -template -std::ostream& operator<<(std::ostream& cout, const ConcreteMaxStrategy& strat) { +/*template +std::ostream& operator<<(std::ostream& cout, const MaxStrategy& strat) { strat.print(cout); return cout; -} +}*/ #endif diff --git a/impl/VariableAssignment.hpp b/impl/VariableAssignment.hpp index f41dab3..ead7c67 100644 --- a/impl/VariableAssignment.hpp +++ b/impl/VariableAssignment.hpp @@ -10,22 +10,6 @@ struct VariableAssignment { virtual const Domain& operator[](const Variable&) const = 0; }; -template -struct StableVariableAssignment -: public VariableAssignment, public IdMap, Domain> { - StableVariableAssignment(unsigned int length) - : IdMap,Domain>(length, -infinity()) { } - StableVariableAssignment(unsigned int length, const Domain& value) - : IdMap,Domain>(length, value) { } - - const Domain& operator[](const Variable& var) const { - return IdMap,Domain>::operator[](var); - } - Domain& operator[](const Variable& var) { - return IdMap,Domain>::operator[](var); - } -}; - #include "EquationSystem.hpp" template @@ -50,7 +34,7 @@ struct DynamicVariableAssignment : public VariableAssignment { } void invalidate(const Variable& x) const { - log::fixpoint << "invalidating " << x << std::endl; + log::fixpoint << "\tInvalidating " << x << std::endl; _stable.remove(x); _values[x] = infinity(); } @@ -58,53 +42,53 @@ struct DynamicVariableAssignment : public VariableAssignment { private: void solve(const Variable& x) const { - if (!_stable.contains(x)) { - _stable.insert(x); - - Domain val = _system[x]->eval(DependencyAssignment(*this, x), - _strategy); - - if (val != _values[x]) { - log::fixpoint << "Updating value for " << x - << " to " << val << std::endl; - - auto oldInfluence = _influence[x]; - _influence[x].clear(); - _values[x] = val; - - _strategy.invalidate(x); - - _stable.filter(oldInfluence); - - for (auto it = oldInfluence.begin(); - it != oldInfluence.end(); - ++it) { - solve(_system.variable(*it)); - } - } else { - log::fixpoint << x << " did not change" << std::endl; + if (!_stable.contains(x)) { + _stable.insert(x); + log::fixpoint << "\tStabilise " << x << std::endl; + + Domain val = _system[x]->eval(DependencyAssignment(*this, x), + _strategy); + + if (val != _values[x]) { + log::fixpoint << x << " = " << val << std::endl; + + auto oldInfluence = _influence[x]; + _influence[x].clear(); + _values[x] = val; + + _strategy.invalidate(x); + + _stable.filter(oldInfluence); + + for (auto it = oldInfluence.begin(); + it != oldInfluence.end(); + ++it) { + solve(_system.variable(*it)); } } else { - log::fixpoint << x << " is stable" << std::endl; + log::fixpoint << "\t" << x << " did not change" << std::endl; } + } else { + log::fixpoint << "\t" << x << " is stable" << std::endl; } + } + + struct DependencyAssignment : public VariableAssignment { + DependencyAssignment(const DynamicVariableAssignment& assignment, const Variable& var) + : _assignment(assignment), _var(var) { } + const Domain& operator[](const Variable& x) const { + const Domain& result = _assignment[x]; + _assignment._influence[x].insert(_var); + return result; + } + private: + const DynamicVariableAssignment& _assignment; + const Variable& _var; + }; - struct DependencyAssignment : public VariableAssignment { - DependencyAssignment(const DynamicVariableAssignment& assignment, const Variable& var) - : _assignment(assignment), _var(var) { } - const Domain& operator[](const Variable& x) const { - const Domain& result = _assignment[x]; - _assignment._influence[x].insert(_var); - return result; - } - private: - const DynamicVariableAssignment& _assignment; - const Variable& _var; - }; - const EquationSystem& _system; const DynamicMaxStrategy& _strategy; - mutable StableVariableAssignment _values; + mutable IdMap, Domain> _values; mutable IdSet > _stable; mutable IdMap,IdSet > > _influence; }; diff --git a/impl/main.cpp b/impl/main.cpp index 374d21f..6a786bd 100644 --- a/impl/main.cpp +++ b/impl/main.cpp @@ -7,8 +7,6 @@ #include "Operator.hpp" #include "EquationSystem.hpp" #include "MaxStrategy.hpp" -#include "ImprovementOperator.hpp" -#include "FixpointAlgorithm.hpp" extern "C" { #include "parser/EquationSystemParser.h" @@ -38,7 +36,7 @@ Expression& treeToExpression(pANTLR3_BASE_TREE node, EquationSystem& syste } // anything that's not a constant/variable - std::vector*> args; + vector*> args; pANTLR3_BASE_TREE childNode; for (unsigned int i = 0; i < num; ++i) { childNode = (pANTLR3_BASE_TREE) node->getChild(node, i); @@ -97,14 +95,6 @@ void treeToSystem(pANTLR3_BASE_TREE node, EquationSystem& system) { typedef Complete ZBar; int main (int argc, char* argv[]) { - if (argc <= 3) { - cerr << "Usage: " << argv[0] << " filename fixpoint strategy [log]" << endl - << " fixpoint: naive | smart" << endl - << " strategy: naive | repeat | smart" << endl - << " log: section[,section[,section[...]]]" << endl; - exit(1); - } - map loggers; loggers["info"] = &log::info; loggers["trace"] = &log::trace; @@ -112,13 +102,25 @@ int main (int argc, char* argv[]) { loggers["fixpoint"] = &log::fixpoint; loggers["debug"] = &log::debug; - if (argc > 3) { - char* arg = argv[4]; - char* str = strtok(arg, ","); - do { - if (str && loggers[str]) - loggers[str]->enabled(true); - } while ((str = strtok(NULL, ",")) != NULL); + set variables; + if (argc > 2) { + int i = 2; + while (argv[i] != NULL) { + if (string(argv[i]) == "-v") { + ++i; + if (i < argc) { + char* arg = argv[i]; + char* str = strtok(arg, ","); + do { + if (str && loggers[str]) + loggers[str]->enabled(true); + } while ((str = strtok(NULL, ",")) != NULL); + } + } else { + variables.insert(argv[i]); + } + ++i; + } } auto input = antlr3FileStreamNew((pANTLR3_UINT8)argv[1], ANTLR3_ENC_8BIT); @@ -131,67 +133,24 @@ int main (int argc, char* argv[]) { EquationSystem system; treeToSystem(ret.tree, system); - /* - // PARSE ARGUMENTS - fixpoint - FixpointAlgorithm* algorithm = NULL; - if (!strcmp(argv[2], "naive")) { - algorithm = new NaiveFixpointAlgorithm(system); - log::info << "Naive fixpoint" << endl; - } else if (!strcmp(argv[2], "smart")) { - algorithm = new SmartFixpointAlgorithm(system); - log::info << "Smart fixpoint" << endl; - } else { - cerr << "Unknown fixpoint algorithm." << endl; - } - - // PARSE ARGUMENTS - strat improvement - ImprovementOperator* naiveImprovement = new NaiveImprovementOperator(); - ImprovementOperator* improvement = NULL; - if (!strcmp(argv[3], "repeat")) { - improvement = new RepeatedImprovementOperator(*naiveImprovement); - log::info << "Repeated strategy improvement" << endl; - } else if (!strcmp(argv[3], "naive")) { - improvement = naiveImprovement; - log::info << "Naive strategy improvement" << endl; - } else if (!strcmp(argv[3], "smart")) { - improvement = new SmartImprovementOperator(system); - log::info << "Smart strategy improvement" << endl; - } else { - cerr << "Unknown strategy improvement algorithm." << endl; - } - if (!improvement || !algorithm) { - exit(1); - } - */ - - log::debug << system << std::endl; + log::debug << system << endl; system.indexMaxExpressions(); // make reverse-lookup O(1) instead of O(n) - /*StableVariableAssignment result(system.variableCount(), infinity()); - ConcreteMaxStrategy strategy(system); - IdSet> s1(system.variableCount()); - IdSet> s2(system.variableCount()); - bool changed = false; - s2.clear(); - s2.invert(); - do { - s1.clear(); - algorithm->maxFixpoint(system, strategy, result, s2, s1); - - log::debug << result << std::endl; - - s2.clear(); - changed = improvement->improve(system, strategy, result, s1, s2); - log::debug << "Changed: " << (changed ? "true" : "false") << std::endl; - } while(changed);*/ - - - DynamicMaxStrategy strategy(system); - DynamicVariableAssignment rho(system, strategy); + + DynamicMaxStrategy strategy(system); + DynamicVariableAssignment rho(system, strategy); strategy.setRho(rho); - for (unsigned int i = 0, size = system.variableCount(); i < size; ++i) { - Variable& var = system.variable(i); - cout << var.name() << " = " << rho[var] << endl; + if (variables.size() > 0) { + for (unsigned int i = 0, size = system.variableCount(); i < size; ++i) { + Variable& var = system.variable(i); + if (variables.find(var.name()) != variables.end()) + cout << var.name() << " = " << rho[var] << endl; + } + } else { + for (unsigned int i = 0, size = system.variableCount(); i < size; ++i) { + Variable& var = system.variable(i); + cout << var.name() << " = " << rho[var] << endl; + } } parser -> free(parser); diff --git a/impl/parser/EquationSystem.tokens b/impl/parser/EquationSystem.tokens deleted file mode 100644 index c706036..0000000 --- a/impl/parser/EquationSystem.tokens +++ /dev/null @@ -1,33 +0,0 @@ -T__19=19 -T__20=20 -T__21=21 -T__22=22 -COMMA=4 -DIGIT=5 -GREATER_EQUAL=6 -GUARD=7 -LETTER=8 -MAXIMUM=9 -MINIMUM=10 -MULT=11 -NEWLINE=12 -NUMBER=13 -PLUS=14 -QUESTION_MARK=15 -SUB=16 -VARIABLE=17 -WHITESPACE=18 -'('=19 -')'=20 -'*'=11 -'+'=14 -','=21 -'-'=16 -';'=4 -'='=22 -'>='=6 -'?'=15 -'\n'=12 -'guard'=7 -'max'=9 -'min'=10 diff --git a/impl/parser/EquationSystemLexer.c b/impl/parser/EquationSystemLexer.c deleted file mode 100644 index dc8b451..0000000 --- a/impl/parser/EquationSystemLexer.c +++ /dev/null @@ -1,2087 +0,0 @@ -/** \file - * This C source file was generated by $ANTLR version 3.4 - * - * - From the grammar source file : EquationSystem.g - * - On : 2012-07-12 15:47:53 - * - for the lexer : EquationSystemLexerLexer - * - * Editing it, at least manually, is not wise. - * - * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. - * - * -*/ -// [The "BSD license"] -// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC -// http://www.temporal-wave.com -// http://www.linkedin.com/in/jimidle -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* ----------------------------------------- - * Include the ANTLR3 generated header file. - */ -#include "EquationSystemLexer.h" -/* ----------------------------------------- */ - - -/** String literals used by EquationSystemLexer that we must do things like MATCHS() with. - * C will normally just lay down 8 bit characters, and you can use L"xxx" to - * get wchar_t, but wchar_t is 16 bits on Windows, which is not UTF32 and so - * we perform this little trick of defining the literals as arrays of UINT32 - * and passing in the address of these. - */ -static ANTLR3_UCHAR lit_1[] = { 0x3E, 0x3D, ANTLR3_STRING_TERMINATOR}; -static ANTLR3_UCHAR lit_2[] = { 0x67, 0x75, 0x61, 0x72, 0x64, ANTLR3_STRING_TERMINATOR}; -static ANTLR3_UCHAR lit_3[] = { 0x6D, 0x61, 0x78, ANTLR3_STRING_TERMINATOR}; -static ANTLR3_UCHAR lit_4[] = { 0x6D, 0x69, 0x6E, ANTLR3_STRING_TERMINATOR}; - - - - - -/* MACROS that hide the C interface implementations from the - * generated code, which makes it a little more understandable to the human eye. - * I am very much against using C pre-processor macros for function calls and bits - * of code as you cannot see what is happening when single stepping in debuggers - * and so on. The exception (in my book at least) is for generated code, where you are - * not maintaining it, but may wish to read and understand it. If you single step it, you know that input() - * hides some indirect calls, but is always referring to the input stream. This is - * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig - * the runtime interfaces without changing the generated code too often, without - * confusing the reader of the generated output, who may not wish to know the gory - * details of the interface inheritance. - */ - -#define CTX ctx - -/* Aids in accessing scopes for grammar programmers - */ -#undef SCOPE_TYPE -#undef SCOPE_STACK -#undef SCOPE_TOP -#define SCOPE_TYPE(scope) pEquationSystemLexer_##scope##_SCOPE -#define SCOPE_STACK(scope) pEquationSystemLexer_##scope##Stack -#define SCOPE_TOP(scope) ctx->pEquationSystemLexer_##scope##Top -#define SCOPE_SIZE(scope) ctx->pEquationSystemLexer_##scope##Stack_limit -#define SCOPE_INSTANCE(scope, i) (ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i)) - - -/* Macros for accessing things in a lexer - */ -#undef LEXER -#undef RECOGNIZER -#undef RULEMEMO -#undef GETCHARINDEX -#undef GETLINE -#undef GETCHARPOSITIONINLINE -#undef EMIT -#undef EMITNEW -#undef MATCHC -#undef MATCHS -#undef MATCHRANGE -#undef LTOKEN -#undef HASFAILED -#undef FAILEDFLAG -#undef INPUT -#undef STRSTREAM -#undef LA -#undef HASEXCEPTION -#undef EXCEPTION -#undef CONSTRUCTEX -#undef CONSUME -#undef LRECOVER -#undef MARK -#undef REWIND -#undef REWINDLAST -#undef BACKTRACKING -#undef MATCHANY -#undef MEMOIZE -#undef HAVEPARSEDRULE -#undef GETTEXT -#undef INDEX -#undef SEEK -#undef PUSHSTREAM -#undef POPSTREAM -#undef SETTEXT -#undef SETTEXT8 - -#define LEXER ctx->pLexer -#define RECOGNIZER LEXER->rec -#define LEXSTATE RECOGNIZER->state -#define TOKSOURCE LEXSTATE->tokSource -#define GETCHARINDEX() LEXER->getCharIndex(LEXER) -#define GETLINE() LEXER->getLine(LEXER) -#define GETTEXT() LEXER->getText(LEXER) -#define GETCHARPOSITIONINLINE() LEXER->getCharPositionInLine(LEXER) -#define EMIT() LEXSTATE->type = _type; LEXER->emit(LEXER) -#define EMITNEW(t) LEXER->emitNew(LEXER, t) -#define MATCHC(c) LEXER->matchc(LEXER, c) -#define MATCHS(s) LEXER->matchs(LEXER, s) -#define MATCHRANGE(c1,c2) LEXER->matchRange(LEXER, c1, c2) -#define MATCHANY() LEXER->matchAny(LEXER) -#define LTOKEN LEXSTATE->token -#define HASFAILED() (LEXSTATE->failed == ANTLR3_TRUE) -#define BACKTRACKING LEXSTATE->backtracking -#define FAILEDFLAG LEXSTATE->failed -#define INPUT LEXER->input -#define STRSTREAM INPUT -#define ISTREAM INPUT->istream -#define INDEX() ISTREAM->index(ISTREAM) -#define SEEK(n) ISTREAM->seek(ISTREAM, n) -#define EOF_TOKEN &(LEXSTATE->tokSource->eofToken) -#define HASEXCEPTION() (LEXSTATE->error == ANTLR3_TRUE) -#define EXCEPTION LEXSTATE->exception -#define CONSTRUCTEX() RECOGNIZER->exConstruct(RECOGNIZER) -#define LRECOVER() LEXER->recover(LEXER) -#define MARK() ISTREAM->mark(ISTREAM) -#define REWIND(m) ISTREAM->rewind(ISTREAM, m) -#define REWINDLAST() ISTREAM->rewindLast(ISTREAM) -#define MEMOIZE(ri,si) RECOGNIZER->memoize(RECOGNIZER, ri, si) -#define HAVEPARSEDRULE(r) RECOGNIZER->alreadyParsedRule(RECOGNIZER, r) -#define PUSHSTREAM(str) LEXER->pushCharStream(LEXER, str) -#define POPSTREAM() LEXER->popCharStream(LEXER) -#define SETTEXT(str) LEXSTATE->text = str -#define SKIP() LEXSTATE->token = &(TOKSOURCE->skipToken) -#define USER1 LEXSTATE->user1 -#define USER2 LEXSTATE->user2 -#define USER3 LEXSTATE->user3 -#define CUSTOM LEXSTATE->custom -#define RULEMEMO LEXSTATE->ruleMemo -#define DBG RECOGNIZER->debugger - -/* If we have been told we can rely on the standard 8 bit or UTF16 input - * stream, then we can define our macros to use the direct pointers - * in the input object, which is much faster than indirect calls. This - * is really only significant to lexers with a lot of fragment rules (which - * do not place LA(1) in a temporary at the moment) and even then - * only if there is a lot of input (order of say 1M or so). - */ -#if defined(ANTLR3_INLINE_INPUT_8BIT) || defined(ANTLR3_INLINE_INPUT_UTF16) - -# ifdef ANTLR3_INLINE_INPUT_8BIT - -/* 8 bit character set */ - -# define NEXTCHAR ((pANTLR3_UINT8)(INPUT->nextChar)) -# define DATAP ((pANTLR3_UINT8)(INPUT->data)) - -# else - -# define NEXTCHAR ((pANTLR3_UINT16)(INPUT->nextChar)) -# define DATAP ((pANTLR3_UINT16)(INPUT->data)) - -# endif - -# define LA(n) ((NEXTCHAR + n) > (DATAP + INPUT->sizeBuf) ? ANTLR3_CHARSTREAM_EOF : (ANTLR3_UCHAR)(*(NEXTCHAR + n - 1))) -# define CONSUME() \ -{ \ - if (NEXTCHAR < (DATAP + INPUT->sizeBuf)) \ - { \ - INPUT->charPositionInLine++; \ - if ((ANTLR3_UCHAR)(*NEXTCHAR) == INPUT->newlineChar) \ - { \ - INPUT->line++; \ - INPUT->charPositionInLine = 0; \ - INPUT->currentLine = (void *)(NEXTCHAR + 1); \ - } \ - INPUT->nextChar = (void *)(NEXTCHAR + 1); \ - } \ -} - -#else - -// Pick up the input character by calling the input stream implementation. -// -#define CONSUME() INPUT->istream->consume(INPUT->istream) -#define LA(n) INPUT->istream->_LA(INPUT->istream, n) - -#endif - -#define TOKTEXT(tok, txt) tok, (pANTLR3_UINT8)txt - -/* The 4 tokens defined below may well clash with your own #defines or token types. If so - * then for the present you must use different names for your defines as these are hard coded - * in the code generator. It would be better not to use such names internally, and maybe - * we can change this in a forthcoming release. I deliberately do not #undef these - * here as this will at least give you a redefined error somewhere if they clash. - */ -#define UP ANTLR3_TOKEN_UP -#define DOWN ANTLR3_TOKEN_DOWN -#define EOR ANTLR3_TOKEN_EOR -#define INVALID ANTLR3_TOKEN_INVALID - - -/* ============================================================================= - * Functions to create and destroy scopes. First come the rule scopes, followed - * by the global declared scopes. - */ - - - -/* ============================================================================= */ - -/* ============================================================================= - * Start of recognizer - */ - -/* Forward declare the locally static matching functions we have generated and any predicate functions. - */ -static ANTLR3_INLINE - void - mCOMMA (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mGREATER_EQUAL (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mGUARD (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mMAXIMUM (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mMINIMUM (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mMULT (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mNEWLINE (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mPLUS (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mQUESTION_MARK (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mSUB (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mT__19 (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mT__20 (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mT__21 (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mT__22 (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mNUMBER (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mVARIABLE (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mWHITESPACE (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mDIGIT (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mLETTER (pEquationSystemLexer ctx); -static ANTLR3_INLINE - void - mTokens (pEquationSystemLexer ctx); -static void EquationSystemLexerFree(pEquationSystemLexer ctx); - -/* ========================================================================= - * Lexer matching rules end. - * ========================================================================= - */ - - - -static void -EquationSystemLexerFree (pEquationSystemLexer ctx) -{ - LEXER->free(LEXER); - - ANTLR3_FREE(ctx); -} - -static void -EquationSystemLexerReset (pEquationSystemLexer ctx) -{ - RECOGNIZER->reset(RECOGNIZER); -} - -/** \brief Name of the grammar file that generated this code - */ -static const char fileName[] = "EquationSystem.g"; - -/** \brief Return the name of the grammar file that generated this code. - */ -static const char * getGrammarFileName() -{ - return fileName; -} - -/** \brief Create a new lexer called EquationSystemLexer - * - * \param[in] instream Pointer to an initialized input stream - * \return - * - Success pEquationSystemLexer initialized for the lex start - * - Fail NULL - */ -ANTLR3_API pEquationSystemLexer EquationSystemLexerNew -( -pANTLR3_INPUT_STREAM - instream) -{ - // See if we can create a new lexer with the standard constructor - // - return EquationSystemLexerNewSSD(instream, NULL); -} - -/** \brief Create a new lexer called EquationSystemLexer - * - * \param[in] instream Pointer to an initialized input stream - * \param[state] state Previously created shared recognizer stat - * \return - * - Success pEquationSystemLexer initialized for the lex start - * - Fail NULL - */ -ANTLR3_API pEquationSystemLexer EquationSystemLexerNewSSD -(pANTLR3_INPUT_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state) -{ - pEquationSystemLexer ctx; // Context structure we will build and return - - ctx = (pEquationSystemLexer) ANTLR3_CALLOC(1, sizeof(EquationSystemLexer)); - - if (ctx == NULL) - { - // Failed to allocate memory for lexer context - return NULL; - } - - /* ------------------------------------------------------------------- - * Memory for basic structure is allocated, now to fill in - * in base ANTLR3 structures. We initialize the function pointers - * for the standard ANTLR3 lexer function set, but upon return - * from here, the programmer may set the pointers to provide custom - * implementations of each function. - * - * We don't use the macros defined in EquationSystemLexer.h here so you can get a sense - * of what goes where. - */ - - /* Create a base lexer, using the supplied input stream - */ - ctx->pLexer = antlr3LexerNewStream(ANTLR3_SIZE_HINT, instream, state); - - /* Check that we allocated the memory correctly - */ - if (ctx->pLexer == NULL) - { - ANTLR3_FREE(ctx); - return NULL; - } - /* Install the implementation of our EquationSystemLexer interface - */ - ctx->mCOMMA = mCOMMA; - ctx->mGREATER_EQUAL = mGREATER_EQUAL; - ctx->mGUARD = mGUARD; - ctx->mMAXIMUM = mMAXIMUM; - ctx->mMINIMUM = mMINIMUM; - ctx->mMULT = mMULT; - ctx->mNEWLINE = mNEWLINE; - ctx->mPLUS = mPLUS; - ctx->mQUESTION_MARK = mQUESTION_MARK; - ctx->mSUB = mSUB; - ctx->mT__19 = mT__19; - ctx->mT__20 = mT__20; - ctx->mT__21 = mT__21; - ctx->mT__22 = mT__22; - ctx->mNUMBER = mNUMBER; - ctx->mVARIABLE = mVARIABLE; - ctx->mWHITESPACE = mWHITESPACE; - ctx->mDIGIT = mDIGIT; - ctx->mLETTER = mLETTER; - ctx->mTokens = mTokens; - - /** When the nextToken() call is made to this lexer's pANTLR3_TOKEN_SOURCE - * it will call mTokens() in this generated code, and will pass it the ctx - * pointer of this lexer, not the context of the base lexer, so store that now. - */ - ctx->pLexer->ctx = ctx; - - /**Install the token matching function - */ - ctx->pLexer->mTokens = (void (*) (void *))(mTokens); - - ctx->getGrammarFileName = getGrammarFileName; - ctx->free = EquationSystemLexerFree; - ctx->reset = EquationSystemLexerReset; - - - /* Return the newly built lexer to the caller - */ - return ctx; -} -/* ========================================================================= - * Functions to match the lexer grammar defined tokens from the input stream - */ - -// Comes from: 7:7: ( ';' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start COMMA - * - * Looks to match the characters the constitute the token COMMA - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mCOMMA(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = COMMA; - - - // EquationSystem.g:7:7: ( ';' ) - // EquationSystem.g:7:9: ';' - { - MATCHC(';'); - if (HASEXCEPTION()) - { - goto ruleCOMMAEx; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleCOMMAEx; /* Prevent compiler warnings */ - ruleCOMMAEx: ; - -} -// $ANTLR end COMMA - -// Comes from: 8:15: ( '>=' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start GREATER_EQUAL - * - * Looks to match the characters the constitute the token GREATER_EQUAL - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mGREATER_EQUAL(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = GREATER_EQUAL; - - - // EquationSystem.g:8:15: ( '>=' ) - // EquationSystem.g:8:17: '>=' - { - MATCHS(lit_1); - if (HASEXCEPTION()) - { - goto ruleGREATER_EQUALEx; - } - - - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleGREATER_EQUALEx; /* Prevent compiler warnings */ - ruleGREATER_EQUALEx: ; - -} -// $ANTLR end GREATER_EQUAL - -// Comes from: 9:7: ( 'guard' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start GUARD - * - * Looks to match the characters the constitute the token GUARD - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mGUARD(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = GUARD; - - - // EquationSystem.g:9:7: ( 'guard' ) - // EquationSystem.g:9:9: 'guard' - { - MATCHS(lit_2); - if (HASEXCEPTION()) - { - goto ruleGUARDEx; - } - - - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleGUARDEx; /* Prevent compiler warnings */ - ruleGUARDEx: ; - -} -// $ANTLR end GUARD - -// Comes from: 10:9: ( 'max' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start MAXIMUM - * - * Looks to match the characters the constitute the token MAXIMUM - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mMAXIMUM(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = MAXIMUM; - - - // EquationSystem.g:10:9: ( 'max' ) - // EquationSystem.g:10:11: 'max' - { - MATCHS(lit_3); - if (HASEXCEPTION()) - { - goto ruleMAXIMUMEx; - } - - - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleMAXIMUMEx; /* Prevent compiler warnings */ - ruleMAXIMUMEx: ; - -} -// $ANTLR end MAXIMUM - -// Comes from: 11:9: ( 'min' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start MINIMUM - * - * Looks to match the characters the constitute the token MINIMUM - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mMINIMUM(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = MINIMUM; - - - // EquationSystem.g:11:9: ( 'min' ) - // EquationSystem.g:11:11: 'min' - { - MATCHS(lit_4); - if (HASEXCEPTION()) - { - goto ruleMINIMUMEx; - } - - - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleMINIMUMEx; /* Prevent compiler warnings */ - ruleMINIMUMEx: ; - -} -// $ANTLR end MINIMUM - -// Comes from: 12:6: ( '*' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start MULT - * - * Looks to match the characters the constitute the token MULT - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mMULT(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = MULT; - - - // EquationSystem.g:12:6: ( '*' ) - // EquationSystem.g:12:8: '*' - { - MATCHC('*'); - if (HASEXCEPTION()) - { - goto ruleMULTEx; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleMULTEx; /* Prevent compiler warnings */ - ruleMULTEx: ; - -} -// $ANTLR end MULT - -// Comes from: 13:9: ( '\\n' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start NEWLINE - * - * Looks to match the characters the constitute the token NEWLINE - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mNEWLINE(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = NEWLINE; - - - // EquationSystem.g:13:9: ( '\\n' ) - // EquationSystem.g:13:11: '\\n' - { - MATCHC('\n'); - if (HASEXCEPTION()) - { - goto ruleNEWLINEEx; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleNEWLINEEx; /* Prevent compiler warnings */ - ruleNEWLINEEx: ; - -} -// $ANTLR end NEWLINE - -// Comes from: 14:6: ( '+' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start PLUS - * - * Looks to match the characters the constitute the token PLUS - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mPLUS(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = PLUS; - - - // EquationSystem.g:14:6: ( '+' ) - // EquationSystem.g:14:8: '+' - { - MATCHC('+'); - if (HASEXCEPTION()) - { - goto rulePLUSEx; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto rulePLUSEx; /* Prevent compiler warnings */ - rulePLUSEx: ; - -} -// $ANTLR end PLUS - -// Comes from: 15:15: ( '?' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start QUESTION_MARK - * - * Looks to match the characters the constitute the token QUESTION_MARK - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mQUESTION_MARK(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = QUESTION_MARK; - - - // EquationSystem.g:15:15: ( '?' ) - // EquationSystem.g:15:17: '?' - { - MATCHC('?'); - if (HASEXCEPTION()) - { - goto ruleQUESTION_MARKEx; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleQUESTION_MARKEx; /* Prevent compiler warnings */ - ruleQUESTION_MARKEx: ; - -} -// $ANTLR end QUESTION_MARK - -// Comes from: 16:5: ( '-' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start SUB - * - * Looks to match the characters the constitute the token SUB - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mSUB(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = SUB; - - - // EquationSystem.g:16:5: ( '-' ) - // EquationSystem.g:16:7: '-' - { - MATCHC('-'); - if (HASEXCEPTION()) - { - goto ruleSUBEx; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleSUBEx; /* Prevent compiler warnings */ - ruleSUBEx: ; - -} -// $ANTLR end SUB - -// Comes from: 17:7: ( '(' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start T__19 - * - * Looks to match the characters the constitute the token T__19 - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mT__19(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = T__19; - - - // EquationSystem.g:17:7: ( '(' ) - // EquationSystem.g:17:9: '(' - { - MATCHC('('); - if (HASEXCEPTION()) - { - goto ruleT__19Ex; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleT__19Ex; /* Prevent compiler warnings */ - ruleT__19Ex: ; - -} -// $ANTLR end T__19 - -// Comes from: 18:7: ( ')' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start T__20 - * - * Looks to match the characters the constitute the token T__20 - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mT__20(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = T__20; - - - // EquationSystem.g:18:7: ( ')' ) - // EquationSystem.g:18:9: ')' - { - MATCHC(')'); - if (HASEXCEPTION()) - { - goto ruleT__20Ex; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleT__20Ex; /* Prevent compiler warnings */ - ruleT__20Ex: ; - -} -// $ANTLR end T__20 - -// Comes from: 19:7: ( ',' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start T__21 - * - * Looks to match the characters the constitute the token T__21 - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mT__21(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = T__21; - - - // EquationSystem.g:19:7: ( ',' ) - // EquationSystem.g:19:9: ',' - { - MATCHC(','); - if (HASEXCEPTION()) - { - goto ruleT__21Ex; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleT__21Ex; /* Prevent compiler warnings */ - ruleT__21Ex: ; - -} -// $ANTLR end T__21 - -// Comes from: 20:7: ( '=' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start T__22 - * - * Looks to match the characters the constitute the token T__22 - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mT__22(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = T__22; - - - // EquationSystem.g:20:7: ( '=' ) - // EquationSystem.g:20:9: '=' - { - MATCHC('='); - if (HASEXCEPTION()) - { - goto ruleT__22Ex; - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleT__22Ex; /* Prevent compiler warnings */ - ruleT__22Ex: ; - -} -// $ANTLR end T__22 - -// Comes from: 37:8: ( ( DIGIT )+ ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start NUMBER - * - * Looks to match the characters the constitute the token NUMBER - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mNUMBER(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = NUMBER; - - - // EquationSystem.g:37:8: ( ( DIGIT )+ ) - // EquationSystem.g:37:10: ( DIGIT )+ - { - // EquationSystem.g:37:10: ( DIGIT )+ - { - int cnt1=0; - - for (;;) - { - int alt1=2; - switch ( LA(1) ) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - alt1=1; - } - break; - - } - - switch (alt1) - { - case 1: - // EquationSystem.g: - { - if ( ((LA(1) >= '0') && (LA(1) <= '9')) ) - { - CONSUME(); - } - else - { - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - - LRECOVER(); - goto ruleNUMBEREx; - } - - - } - break; - - default: - - if ( cnt1 >= 1 ) - { - goto loop1; - } - /* mismatchedSetEx() - */ - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; - - - goto ruleNUMBEREx; - } - cnt1++; - } - loop1: ; /* Jump to here if this rule does not match */ - } - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleNUMBEREx; /* Prevent compiler warnings */ - ruleNUMBEREx: ; - -} -// $ANTLR end NUMBER - -// Comes from: 38:9: ( ( LETTER ) ( LETTER | DIGIT )* ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start VARIABLE - * - * Looks to match the characters the constitute the token VARIABLE - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mVARIABLE(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = VARIABLE; - - - // EquationSystem.g:38:9: ( ( LETTER ) ( LETTER | DIGIT )* ) - // EquationSystem.g:38:11: ( LETTER ) ( LETTER | DIGIT )* - { - if ( ((LA(1) >= 'a') && (LA(1) <= 'z')) ) - { - CONSUME(); - } - else - { - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - - LRECOVER(); - goto ruleVARIABLEEx; - } - - - // EquationSystem.g:38:20: ( LETTER | DIGIT )* - - for (;;) - { - int alt2=2; - switch ( LA(1) ) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - { - alt2=1; - } - break; - - } - - switch (alt2) - { - case 1: - // EquationSystem.g: - { - if ( ((LA(1) >= '0') && (LA(1) <= '9')) || ((LA(1) >= 'a') && (LA(1) <= 'z')) ) - { - CONSUME(); - } - else - { - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - - LRECOVER(); - goto ruleVARIABLEEx; - } - - - } - break; - - default: - goto loop2; /* break out of the loop */ - break; - } - } - loop2: ; /* Jump out to here if this rule does not match */ - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleVARIABLEEx; /* Prevent compiler warnings */ - ruleVARIABLEEx: ; - -} -// $ANTLR end VARIABLE - -// Comes from: 39:12: ( ( '\\t' | ' ' | '\\u000C' )+ ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start WHITESPACE - * - * Looks to match the characters the constitute the token WHITESPACE - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mWHITESPACE(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - _type = WHITESPACE; - - - // EquationSystem.g:39:12: ( ( '\\t' | ' ' | '\\u000C' )+ ) - // EquationSystem.g:39:14: ( '\\t' | ' ' | '\\u000C' )+ - { - // EquationSystem.g:39:14: ( '\\t' | ' ' | '\\u000C' )+ - { - int cnt3=0; - - for (;;) - { - int alt3=2; - switch ( LA(1) ) - { - case '\t': - case '\f': - case ' ': - { - alt3=1; - } - break; - - } - - switch (alt3) - { - case 1: - // EquationSystem.g: - { - if ( LA(1) == '\t' || LA(1) == '\f' || LA(1) == ' ' ) - { - CONSUME(); - } - else - { - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - - LRECOVER(); - goto ruleWHITESPACEEx; - } - - - } - break; - - default: - - if ( cnt3 >= 1 ) - { - goto loop3; - } - /* mismatchedSetEx() - */ - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; - - - goto ruleWHITESPACEEx; - } - cnt3++; - } - loop3: ; /* Jump to here if this rule does not match */ - } - - { - - LEXSTATE->channel = HIDDEN; - - } - - - } - - LEXSTATE->type = _type; - // This is where rules clean up and exit - // - goto ruleWHITESPACEEx; /* Prevent compiler warnings */ - ruleWHITESPACEEx: ; - -} -// $ANTLR end WHITESPACE - -// Comes from: 46:7: ( '0' .. '9' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start DIGIT - * - * Looks to match the characters the constitute the token DIGIT - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mDIGIT(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - - // EquationSystem.g:46:7: ( '0' .. '9' ) - // EquationSystem.g: - { - if ( ((LA(1) >= '0') && (LA(1) <= '9')) ) - { - CONSUME(); - } - else - { - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - - LRECOVER(); - goto ruleDIGITEx; - } - - - } - - - // This is where rules clean up and exit - // - goto ruleDIGITEx; /* Prevent compiler warnings */ - ruleDIGITEx: ; - -} -// $ANTLR end DIGIT - -// Comes from: 48:7: ( 'a' .. 'z' ) -/** \brief Lexer rule generated by ANTLR3 - * - * $ANTLR start LETTER - * - * Looks to match the characters the constitute the token LETTER - * from the attached input stream. - * - * - * \remark - * - lexer->error == ANTLR3_TRUE if an exception was thrown. - */ -static ANTLR3_INLINE -void mLETTER(pEquationSystemLexer ctx) -{ - ANTLR3_UINT32 _type; - - - // EquationSystem.g:48:7: ( 'a' .. 'z' ) - // EquationSystem.g: - { - if ( ((LA(1) >= 'a') && (LA(1) <= 'z')) ) - { - CONSUME(); - } - else - { - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - - LRECOVER(); - goto ruleLETTEREx; - } - - - } - - - // This is where rules clean up and exit - // - goto ruleLETTEREx; /* Prevent compiler warnings */ - ruleLETTEREx: ; - -} -// $ANTLR end LETTER - -/** This is the entry point in to the lexer from an object that - * wants to generate the next token, such as a pCOMMON_TOKEN_STREAM - */ -static void -mTokens(pEquationSystemLexer ctx) -{ - { - // EquationSystem.g:1:8: ( COMMA | GREATER_EQUAL | GUARD | MAXIMUM | MINIMUM | MULT | NEWLINE | PLUS | QUESTION_MARK | SUB | T__19 | T__20 | T__21 | T__22 | NUMBER | VARIABLE | WHITESPACE ) - - ANTLR3_UINT32 alt4; - - alt4=17; - - switch ( LA(1) ) - { - case ';': - { - alt4=1; - } - break; - case '>': - { - alt4=2; - } - break; - case 'g': - { - switch ( LA(2) ) - { - case 'u': - { - switch ( LA(3) ) - { - case 'a': - { - switch ( LA(4) ) - { - case 'r': - { - switch ( LA(5) ) - { - case 'd': - { - switch ( LA(6) ) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - { - alt4=16; - } - break; - - default: - alt4=3; - } - - } - break; - - default: - alt4=16; - } - - } - break; - - default: - alt4=16; - } - - } - break; - - default: - alt4=16; - } - - } - break; - - default: - alt4=16; - } - - } - break; - case 'm': - { - switch ( LA(2) ) - { - case 'a': - { - switch ( LA(3) ) - { - case 'x': - { - switch ( LA(4) ) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - { - alt4=16; - } - break; - - default: - alt4=4; - } - - } - break; - - default: - alt4=16; - } - - } - break; - case 'i': - { - switch ( LA(3) ) - { - case 'n': - { - switch ( LA(4) ) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - { - alt4=16; - } - break; - - default: - alt4=5; - } - - } - break; - - default: - alt4=16; - } - - } - break; - - default: - alt4=16; - } - - } - break; - case '*': - { - alt4=6; - } - break; - case '\n': - { - alt4=7; - } - break; - case '+': - { - alt4=8; - } - break; - case '?': - { - alt4=9; - } - break; - case '-': - { - alt4=10; - } - break; - case '(': - { - alt4=11; - } - break; - case ')': - { - alt4=12; - } - break; - case ',': - { - alt4=13; - } - break; - case '=': - { - alt4=14; - } - break; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - alt4=15; - } - break; - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - { - alt4=16; - } - break; - case '\t': - case '\f': - case ' ': - { - alt4=17; - } - break; - - default: - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; - EXCEPTION->message = (void *)""; - EXCEPTION->decisionNum = 4; - EXCEPTION->state = 0; - - - goto ruleTokensEx; - - } - - switch (alt4) - { - case 1: - // EquationSystem.g:1:10: COMMA - { - /* 1:10: COMMA */ - mCOMMA(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 2: - // EquationSystem.g:1:16: GREATER_EQUAL - { - /* 1:16: GREATER_EQUAL */ - mGREATER_EQUAL(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 3: - // EquationSystem.g:1:30: GUARD - { - /* 1:30: GUARD */ - mGUARD(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 4: - // EquationSystem.g:1:36: MAXIMUM - { - /* 1:36: MAXIMUM */ - mMAXIMUM(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 5: - // EquationSystem.g:1:44: MINIMUM - { - /* 1:44: MINIMUM */ - mMINIMUM(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 6: - // EquationSystem.g:1:52: MULT - { - /* 1:52: MULT */ - mMULT(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 7: - // EquationSystem.g:1:57: NEWLINE - { - /* 1:57: NEWLINE */ - mNEWLINE(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 8: - // EquationSystem.g:1:65: PLUS - { - /* 1:65: PLUS */ - mPLUS(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 9: - // EquationSystem.g:1:70: QUESTION_MARK - { - /* 1:70: QUESTION_MARK */ - mQUESTION_MARK(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 10: - // EquationSystem.g:1:84: SUB - { - /* 1:84: SUB */ - mSUB(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 11: - // EquationSystem.g:1:88: T__19 - { - /* 1:88: T__19 */ - mT__19(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 12: - // EquationSystem.g:1:94: T__20 - { - /* 1:94: T__20 */ - mT__20(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 13: - // EquationSystem.g:1:100: T__21 - { - /* 1:100: T__21 */ - mT__21(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 14: - // EquationSystem.g:1:106: T__22 - { - /* 1:106: T__22 */ - mT__22(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 15: - // EquationSystem.g:1:112: NUMBER - { - /* 1:112: NUMBER */ - mNUMBER(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 16: - // EquationSystem.g:1:119: VARIABLE - { - /* 1:119: VARIABLE */ - mVARIABLE(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - case 17: - // EquationSystem.g:1:128: WHITESPACE - { - /* 1:128: WHITESPACE */ - mWHITESPACE(ctx ); - if (HASEXCEPTION()) - { - goto ruleTokensEx; - } - - - - } - break; - - } - } - - - goto ruleTokensEx; /* Prevent compiler warnings */ -ruleTokensEx: ; -} - -/* ========================================================================= - * Lexer matching rules end. - * ========================================================================= - */ -/* End of Lexer code - * ================================================ - * ================================================ - */ - - -/* End of code - * ============================================================================= - */ diff --git a/impl/parser/EquationSystemLexer.h b/impl/parser/EquationSystemLexer.h deleted file mode 100644 index e02f9a0..0000000 --- a/impl/parser/EquationSystemLexer.h +++ /dev/null @@ -1,313 +0,0 @@ -/** \file - * This C header file was generated by $ANTLR version 3.4 - * - * - From the grammar source file : EquationSystem.g - * - On : 2012-07-12 15:47:53 - * - for the lexer : EquationSystemLexerLexer - * - * Editing it, at least manually, is not wise. - * - * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. - * - * - * The lexer -EquationSystemLexer - -has the callable functions (rules) shown below, - * which will invoke the code for the associated rule in the source grammar - * assuming that the input stream is pointing to a token/text stream that could begin - * this rule. - * - * For instance if you call the first (topmost) rule in a parser grammar, you will - * get the results of a full parse, but calling a rule half way through the grammar will - * allow you to pass part of a full token stream to the parser, such as for syntax checking - * in editors and so on. - * - * The parser entry points are called indirectly (by function pointer to function) via - * a parser context typedef pEquationSystemLexer, which is returned from a call to EquationSystemLexerNew(). - * - * As this is a generated lexer, it is unlikely you will call it 'manually'. However - * the methods are provided anyway. - * - * The methods in pEquationSystemLexer are as follows: - * - * - - void - pEquationSystemLexer->COMMA(pEquationSystemLexer) - * - - void - pEquationSystemLexer->GREATER_EQUAL(pEquationSystemLexer) - * - - void - pEquationSystemLexer->GUARD(pEquationSystemLexer) - * - - void - pEquationSystemLexer->MAXIMUM(pEquationSystemLexer) - * - - void - pEquationSystemLexer->MINIMUM(pEquationSystemLexer) - * - - void - pEquationSystemLexer->MULT(pEquationSystemLexer) - * - - void - pEquationSystemLexer->NEWLINE(pEquationSystemLexer) - * - - void - pEquationSystemLexer->PLUS(pEquationSystemLexer) - * - - void - pEquationSystemLexer->QUESTION_MARK(pEquationSystemLexer) - * - - void - pEquationSystemLexer->SUB(pEquationSystemLexer) - * - - void - pEquationSystemLexer->T__19(pEquationSystemLexer) - * - - void - pEquationSystemLexer->T__20(pEquationSystemLexer) - * - - void - pEquationSystemLexer->T__21(pEquationSystemLexer) - * - - void - pEquationSystemLexer->T__22(pEquationSystemLexer) - * - - void - pEquationSystemLexer->NUMBER(pEquationSystemLexer) - * - - void - pEquationSystemLexer->VARIABLE(pEquationSystemLexer) - * - - void - pEquationSystemLexer->WHITESPACE(pEquationSystemLexer) - * - - void - pEquationSystemLexer->DIGIT(pEquationSystemLexer) - * - - void - pEquationSystemLexer->LETTER(pEquationSystemLexer) - * - - void - pEquationSystemLexer->Tokens(pEquationSystemLexer) - * - * The return type for any particular rule is of course determined by the source - * grammar file. - */ -// [The "BSD license"] -// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC -// http://www.temporal-wave.com -// http://www.linkedin.com/in/jimidle -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#ifndef _EquationSystemLexer_H -#define _EquationSystemLexer_H -/* ============================================================================= - * Standard antlr3 C runtime definitions - */ -#include - -/* End of standard antlr 3 runtime definitions - * ============================================================================= - */ - -#ifdef __cplusplus -extern "C" { -#endif - -// Forward declare the context typedef so that we can use it before it is -// properly defined. Delegators and delegates (from import statements) are -// interdependent and their context structures contain pointers to each other -// C only allows such things to be declared if you pre-declare the typedef. -// -typedef struct EquationSystemLexer_Ctx_struct EquationSystemLexer, * pEquationSystemLexer; - - - -#ifdef ANTLR3_WINDOWS -// Disable: Unreferenced parameter, - Rules with parameters that are not used -// constant conditional, - ANTLR realizes that a prediction is always true (synpred usually) -// initialized but unused variable - tree rewrite variables declared but not needed -// Unreferenced local variable - lexer rule declares but does not always use _type -// potentially unitialized variable used - retval always returned from a rule -// unreferenced local function has been removed - susually getTokenNames or freeScope, they can go without warnigns -// -// These are only really displayed at warning level /W4 but that is the code ideal I am aiming at -// and the codegen must generate some of these warnings by necessity, apart from 4100, which is -// usually generated when a parser rule is given a parameter that it does not use. Mostly though -// this is a matter of orthogonality hence I disable that one. -// -#pragma warning( disable : 4100 ) -#pragma warning( disable : 4101 ) -#pragma warning( disable : 4127 ) -#pragma warning( disable : 4189 ) -#pragma warning( disable : 4505 ) -#pragma warning( disable : 4701 ) -#endif - -/** Context tracking structure for -EquationSystemLexer - - */ -struct EquationSystemLexer_Ctx_struct -{ - /** Built in ANTLR3 context tracker contains all the generic elements - * required for context tracking. - */ - pANTLR3_LEXER pLexer; - - void - (*mCOMMA) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mGREATER_EQUAL) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mGUARD) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mMAXIMUM) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mMINIMUM) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mMULT) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mNEWLINE) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mPLUS) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mQUESTION_MARK) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mSUB) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mT__19) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mT__20) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mT__21) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mT__22) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mNUMBER) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mVARIABLE) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mWHITESPACE) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mDIGIT) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mLETTER) (struct EquationSystemLexer_Ctx_struct * ctx); - - void - (*mTokens) (struct EquationSystemLexer_Ctx_struct * ctx); - const char * (*getGrammarFileName)(); - void (*reset) (struct EquationSystemLexer_Ctx_struct * ctx); - void (*free) (struct EquationSystemLexer_Ctx_struct * ctx); -}; - -// Function protoypes for the constructor functions that external translation units -// such as delegators and delegates may wish to call. -// -ANTLR3_API pEquationSystemLexer EquationSystemLexerNew ( -pANTLR3_INPUT_STREAM - instream); -ANTLR3_API pEquationSystemLexer EquationSystemLexerNewSSD ( -pANTLR3_INPUT_STREAM - instream, pANTLR3_RECOGNIZER_SHARED_STATE state); - -/** Symbolic definitions of all the tokens that the -lexer - will work with. - * \{ - * - * Antlr will define EOF, but we can't use that as it it is too common in - * in C header files and that would be confusing. There is no way to filter this out at the moment - * so we just undef it here for now. That isn't the value we get back from C recognizers - * anyway. We are looking for ANTLR3_TOKEN_EOF. - */ -#ifdef EOF -#undef EOF -#endif -#ifdef Tokens -#undef Tokens -#endif -#define EOF -1 -#define T__19 19 -#define T__20 20 -#define T__21 21 -#define T__22 22 -#define COMMA 4 -#define DIGIT 5 -#define GREATER_EQUAL 6 -#define GUARD 7 -#define LETTER 8 -#define MAXIMUM 9 -#define MINIMUM 10 -#define MULT 11 -#define NEWLINE 12 -#define NUMBER 13 -#define PLUS 14 -#define QUESTION_MARK 15 -#define SUB 16 -#define VARIABLE 17 -#define WHITESPACE 18 -#ifdef EOF -#undef EOF -#define EOF ANTLR3_TOKEN_EOF -#endif - -#ifndef TOKENSOURCE -#define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource -#endif - -/* End of token definitions for EquationSystemLexer - * ============================================================================= - */ -/** } */ - -#ifdef __cplusplus -} -#endif - -#endif - -/* END - Note:Keep extra line feed to satisfy UNIX systems */ diff --git a/impl/parser/EquationSystemLexer.o b/impl/parser/EquationSystemLexer.o deleted file mode 100644 index a0acfea..0000000 Binary files a/impl/parser/EquationSystemLexer.o and /dev/null differ diff --git a/impl/parser/EquationSystemParser.c b/impl/parser/EquationSystemParser.c deleted file mode 100644 index 8252c19..0000000 --- a/impl/parser/EquationSystemParser.c +++ /dev/null @@ -1,2460 +0,0 @@ -/** \file - * This C source file was generated by $ANTLR version 3.4 - * - * - From the grammar source file : EquationSystem.g - * - On : 2012-07-12 15:47:50 - * - for the parser : EquationSystemParserParser - * - * Editing it, at least manually, is not wise. - * - * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. - * - * -*/ -// [The "BSD license"] -// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC -// http://www.temporal-wave.com -// http://www.linkedin.com/in/jimidle -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* ----------------------------------------- - * Include the ANTLR3 generated header file. - */ -#include "EquationSystemParser.h" -/* ----------------------------------------- */ - - - - - -/* MACROS that hide the C interface implementations from the - * generated code, which makes it a little more understandable to the human eye. - * I am very much against using C pre-processor macros for function calls and bits - * of code as you cannot see what is happening when single stepping in debuggers - * and so on. The exception (in my book at least) is for generated code, where you are - * not maintaining it, but may wish to read and understand it. If you single step it, you know that input() - * hides some indirect calls, but is always referring to the input stream. This is - * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig - * the runtime interfaces without changing the generated code too often, without - * confusing the reader of the generated output, who may not wish to know the gory - * details of the interface inheritance. - */ - -#define CTX ctx - -/* Aids in accessing scopes for grammar programmers - */ -#undef SCOPE_TYPE -#undef SCOPE_STACK -#undef SCOPE_TOP -#define SCOPE_TYPE(scope) pEquationSystemParser_##scope##_SCOPE -#define SCOPE_STACK(scope) pEquationSystemParser_##scope##Stack -#define SCOPE_TOP(scope) ctx->pEquationSystemParser_##scope##Top -#define SCOPE_SIZE(scope) ctx->pEquationSystemParser_##scope##Stack_limit -#define SCOPE_INSTANCE(scope, i) (ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i)) - -/* Macros for accessing things in the parser - */ - -#undef PARSER -#undef RECOGNIZER -#undef HAVEPARSEDRULE -#undef MEMOIZE -#undef INPUT -#undef STRSTREAM -#undef HASEXCEPTION -#undef EXCEPTION -#undef MATCHT -#undef MATCHANYT -#undef FOLLOWSTACK -#undef FOLLOWPUSH -#undef FOLLOWPOP -#undef PRECOVER -#undef PREPORTERROR -#undef LA -#undef LT -#undef CONSTRUCTEX -#undef CONSUME -#undef MARK -#undef REWIND -#undef REWINDLAST -#undef PERRORRECOVERY -#undef HASFAILED -#undef FAILEDFLAG -#undef RECOVERFROMMISMATCHEDSET -#undef RECOVERFROMMISMATCHEDELEMENT -#undef INDEX -#undef ADAPTOR -#undef SEEK -#undef RULEMEMO -#undef DBG - -#define PARSER ctx->pParser -#define RECOGNIZER PARSER->rec -#define PSRSTATE RECOGNIZER->state -#define HAVEPARSEDRULE(r) RECOGNIZER->alreadyParsedRule(RECOGNIZER, r) -#define MEMOIZE(ri,si) RECOGNIZER->memoize(RECOGNIZER, ri, si) -#define INPUT PARSER->tstream -#define STRSTREAM INPUT -#define ISTREAM INPUT->istream -#define INDEX() ISTREAM->index(INPUT->istream) -#define HASEXCEPTION() (PSRSTATE->error == ANTLR3_TRUE) -#define EXCEPTION PSRSTATE->exception -#define MATCHT(t, fs) RECOGNIZER->match(RECOGNIZER, t, fs) -#define MATCHANYT() RECOGNIZER->matchAny(RECOGNIZER) -#define FOLLOWSTACK PSRSTATE->following -#ifdef SKIP_FOLLOW_SETS -#define FOLLOWPUSH(x) -#define FOLLOWPOP() -#else -#define FOLLOWPUSH(x) FOLLOWSTACK->push(FOLLOWSTACK, ((void *)(&(x))), NULL) -#define FOLLOWPOP() FOLLOWSTACK->pop(FOLLOWSTACK) -#endif -#define PRECOVER() RECOGNIZER->recover(RECOGNIZER) -#define PREPORTERROR() RECOGNIZER->reportError(RECOGNIZER) -#define LA(n) INPUT->istream->_LA(ISTREAM, n) -#define LT(n) INPUT->_LT(INPUT, n) -#define CONSTRUCTEX() RECOGNIZER->exConstruct(RECOGNIZER) -#define CONSUME() ISTREAM->consume(ISTREAM) -#define MARK() ISTREAM->mark(ISTREAM) -#define REWIND(m) ISTREAM->rewind(ISTREAM, m) -#define REWINDLAST() ISTREAM->rewindLast(ISTREAM) -#define SEEK(n) ISTREAM->seek(ISTREAM, n) -#define PERRORRECOVERY PSRSTATE->errorRecovery -#define FAILEDFLAG PSRSTATE->failed -#define HASFAILED() (FAILEDFLAG == ANTLR3_TRUE) -#define BACKTRACKING PSRSTATE->backtracking -#define RECOVERFROMMISMATCHEDSET(s) RECOGNIZER->recoverFromMismatchedSet(RECOGNIZER, s) -#define RECOVERFROMMISMATCHEDELEMENT(e) RECOGNIZER->recoverFromMismatchedElement(RECOGNIZER, s) -#define ADAPTOR ctx->adaptor -#define RULEMEMO PSRSTATE->ruleMemo -#define DBG RECOGNIZER->debugger - - -#define TOKTEXT(tok, txt) tok, (pANTLR3_UINT8)txt - -/* The 4 tokens defined below may well clash with your own #defines or token types. If so - * then for the present you must use different names for your defines as these are hard coded - * in the code generator. It would be better not to use such names internally, and maybe - * we can change this in a forthcoming release. I deliberately do not #undef these - * here as this will at least give you a redefined error somewhere if they clash. - */ -#define UP ANTLR3_TOKEN_UP -#define DOWN ANTLR3_TOKEN_DOWN -#define EOR ANTLR3_TOKEN_EOR -#define INVALID ANTLR3_TOKEN_INVALID - - -/* ============================================================================= - * Functions to create and destroy scopes. First come the rule scopes, followed - * by the global declared scopes. - */ - - - -/* ============================================================================= */ - -/* ============================================================================= - * Start of recognizer - */ - - -/** \brief Table of all token names in symbolic order, mainly used for - * error reporting. - */ -pANTLR3_UINT8 EquationSystemParserTokenNames[19+4] - = { - (pANTLR3_UINT8) "", /* String to print to indicate an invalid token */ - (pANTLR3_UINT8) "", - (pANTLR3_UINT8) "", - (pANTLR3_UINT8) "", - (pANTLR3_UINT8) "COMMA", - (pANTLR3_UINT8) "DIGIT", - (pANTLR3_UINT8) "GREATER_EQUAL", - (pANTLR3_UINT8) "GUARD", - (pANTLR3_UINT8) "LETTER", - (pANTLR3_UINT8) "MAXIMUM", - (pANTLR3_UINT8) "MINIMUM", - (pANTLR3_UINT8) "MULT", - (pANTLR3_UINT8) "NEWLINE", - (pANTLR3_UINT8) "NUMBER", - (pANTLR3_UINT8) "PLUS", - (pANTLR3_UINT8) "QUESTION_MARK", - (pANTLR3_UINT8) "SUB", - (pANTLR3_UINT8) "VARIABLE", - (pANTLR3_UINT8) "WHITESPACE", - (pANTLR3_UINT8) "'('", - (pANTLR3_UINT8) "')'", - (pANTLR3_UINT8) "','", - (pANTLR3_UINT8) "'='" - }; - - - -// Forward declare the locally static matching functions we have generated. -// -static - EquationSystemParser_equation_system_return - equation_system (pEquationSystemParser ctx); -static - EquationSystemParser_equation_return - equation (pEquationSystemParser ctx); -static - EquationSystemParser_maxExpr_return - maxExpr (pEquationSystemParser ctx); -static - EquationSystemParser_minExpr_return - minExpr (pEquationSystemParser ctx); -static - EquationSystemParser_expr_return - expr (pEquationSystemParser ctx); -static - EquationSystemParser_term_return - term (pEquationSystemParser ctx); -static - ANTLR3_BOOLEAN - synpred8_EquationSystem (pEquationSystemParser ctx); -static - ANTLR3_BOOLEAN - synpred12_EquationSystem (pEquationSystemParser ctx); -static void EquationSystemParserFree(pEquationSystemParser ctx); -static void EquationSystemParserReset (pEquationSystemParser ctx); - -/* For use in tree output where we are accumulating rule labels via label += ruleRef - * we need a function that knows how to free a return scope when the list is destroyed. - * We cannot just use ANTLR3_FREE because in debug tracking mode, this is a macro. - */ -static void ANTLR3_CDECL freeScope(void * scope) -{ - ANTLR3_FREE(scope); -} - -/** \brief Name of the grammar file that generated this code - */ -static const char fileName[] = "EquationSystem.g"; - -/** \brief Return the name of the grammar file that generated this code. - */ -static const char * getGrammarFileName() -{ - return fileName; -} -/** \brief Create a new EquationSystemParser parser and return a context for it. - * - * \param[in] instream Pointer to an input stream interface. - * - * \return Pointer to new parser context upon success. - */ -ANTLR3_API pEquationSystemParser -EquationSystemParserNew (pANTLR3_COMMON_TOKEN_STREAM instream) -{ - // See if we can create a new parser with the standard constructor - // - return EquationSystemParserNewSSD(instream, NULL); -} - -/** \brief Create a new EquationSystemParser parser and return a context for it. - * - * \param[in] instream Pointer to an input stream interface. - * - * \return Pointer to new parser context upon success. - */ -ANTLR3_API pEquationSystemParser -EquationSystemParserNewSSD (pANTLR3_COMMON_TOKEN_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state) -{ - pEquationSystemParser ctx; /* Context structure we will build and return */ - - ctx = (pEquationSystemParser) ANTLR3_CALLOC(1, sizeof(EquationSystemParser)); - - if (ctx == NULL) - { - // Failed to allocate memory for parser context - // - return NULL; - } - - /* ------------------------------------------------------------------- - * Memory for basic structure is allocated, now to fill in - * the base ANTLR3 structures. We initialize the function pointers - * for the standard ANTLR3 parser function set, but upon return - * from here, the programmer may set the pointers to provide custom - * implementations of each function. - * - * We don't use the macros defined in EquationSystemParser.h here, in order that you can get a sense - * of what goes where. - */ - - /* Create a base parser/recognizer, using the supplied token stream - */ - ctx->pParser = antlr3ParserNewStream(ANTLR3_SIZE_HINT, instream->tstream, state); - /* Install the implementation of our EquationSystemParser interface - */ - ctx->equation_system = equation_system; - ctx->equation = equation; - ctx->maxExpr = maxExpr; - ctx->minExpr = minExpr; - ctx->expr = expr; - ctx->term = term; - ctx->synpred8_EquationSystem = synpred8_EquationSystem; - ctx->synpred12_EquationSystem = synpred12_EquationSystem; - ctx->free = EquationSystemParserFree; - ctx->reset = EquationSystemParserReset; - ctx->getGrammarFileName = getGrammarFileName; - - /* Install the scope pushing methods. - */ -ADAPTOR = ANTLR3_TREE_ADAPTORNew(instream->tstream->tokenSource->strFactory); - -ctx->vectors = antlr3VectorFactoryNew(0); - /* Install the token table - */ - PSRSTATE->tokenNames = EquationSystemParserTokenNames; - - - /* Return the newly built parser to the caller - */ - return ctx; -} - -static void -EquationSystemParserReset (pEquationSystemParser ctx) -{ - RECOGNIZER->reset(RECOGNIZER); -} - -/** Free the parser resources - */ - static void - EquationSystemParserFree(pEquationSystemParser ctx) - { - /* Free any scope memory - */ - -ctx->vectors->close(ctx->vectors); -/* We created the adaptor so we must free it - */ -ADAPTOR->free(ADAPTOR); - // Free this parser - // - ctx->pParser->free(ctx->pParser); - - - ANTLR3_FREE(ctx); - - /* Everything is released, so we can return - */ - return; - } - -/** Return token names used by this -parser - - * - * The returned pointer is used as an index into the token names table (using the token - * number as the index). - * - * \return Pointer to first char * in the table. - */ -static pANTLR3_UINT8 *getTokenNames() -{ - return EquationSystemParserTokenNames; -} - - -/* Declare the bitsets - */ -/** Bitset defining follow set for error recovery in rule state: FOLLOW_equation_in_equation_system141 */ -static ANTLR3_BITWORD FOLLOW_equation_in_equation_system141_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001002) }; -static ANTLR3_BITSET_LIST FOLLOW_equation_in_equation_system141 = { FOLLOW_equation_in_equation_system141_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_NEWLINE_in_equation_system145 */ -static ANTLR3_BITWORD FOLLOW_NEWLINE_in_equation_system145_bits[] = { ANTLR3_UINT64_LIT(0x0000000000021000) }; -static ANTLR3_BITSET_LIST FOLLOW_NEWLINE_in_equation_system145 = { FOLLOW_NEWLINE_in_equation_system145_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_equation_in_equation_system150 */ -static ANTLR3_BITWORD FOLLOW_equation_in_equation_system150_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001002) }; -static ANTLR3_BITSET_LIST FOLLOW_equation_in_equation_system150 = { FOLLOW_equation_in_equation_system150_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_NEWLINE_in_equation_system157 */ -static ANTLR3_BITWORD FOLLOW_NEWLINE_in_equation_system157_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001002) }; -static ANTLR3_BITSET_LIST FOLLOW_NEWLINE_in_equation_system157 = { FOLLOW_NEWLINE_in_equation_system157_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_VARIABLE_in_equation168 */ -static ANTLR3_BITWORD FOLLOW_VARIABLE_in_equation168_bits[] = { ANTLR3_UINT64_LIT(0x0000000000400000) }; -static ANTLR3_BITSET_LIST FOLLOW_VARIABLE_in_equation168 = { FOLLOW_VARIABLE_in_equation168_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_22_in_equation170 */ -static ANTLR3_BITWORD FOLLOW_22_in_equation170_bits[] = { ANTLR3_UINT64_LIT(0x00000000000B2600) }; -static ANTLR3_BITSET_LIST FOLLOW_22_in_equation170 = { FOLLOW_22_in_equation170_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_maxExpr_in_equation173 */ -static ANTLR3_BITWORD FOLLOW_maxExpr_in_equation173_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_maxExpr_in_equation173 = { FOLLOW_maxExpr_in_equation173_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_MAXIMUM_in_maxExpr182 */ -static ANTLR3_BITWORD FOLLOW_MAXIMUM_in_maxExpr182_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; -static ANTLR3_BITSET_LIST FOLLOW_MAXIMUM_in_maxExpr182 = { FOLLOW_MAXIMUM_in_maxExpr182_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_19_in_maxExpr185 */ -static ANTLR3_BITWORD FOLLOW_19_in_maxExpr185_bits[] = { ANTLR3_UINT64_LIT(0x00000000000B2400) }; -static ANTLR3_BITSET_LIST FOLLOW_19_in_maxExpr185 = { FOLLOW_19_in_maxExpr185_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_minExpr_in_maxExpr188 */ -static ANTLR3_BITWORD FOLLOW_minExpr_in_maxExpr188_bits[] = { ANTLR3_UINT64_LIT(0x0000000000300000) }; -static ANTLR3_BITSET_LIST FOLLOW_minExpr_in_maxExpr188 = { FOLLOW_minExpr_in_maxExpr188_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_21_in_maxExpr192 */ -static ANTLR3_BITWORD FOLLOW_21_in_maxExpr192_bits[] = { ANTLR3_UINT64_LIT(0x00000000000B2400) }; -static ANTLR3_BITSET_LIST FOLLOW_21_in_maxExpr192 = { FOLLOW_21_in_maxExpr192_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_minExpr_in_maxExpr195 */ -static ANTLR3_BITWORD FOLLOW_minExpr_in_maxExpr195_bits[] = { ANTLR3_UINT64_LIT(0x0000000000300000) }; -static ANTLR3_BITSET_LIST FOLLOW_minExpr_in_maxExpr195 = { FOLLOW_minExpr_in_maxExpr195_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_20_in_maxExpr200 */ -static ANTLR3_BITWORD FOLLOW_20_in_maxExpr200_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_20_in_maxExpr200 = { FOLLOW_20_in_maxExpr200_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_minExpr_in_maxExpr205 */ -static ANTLR3_BITWORD FOLLOW_minExpr_in_maxExpr205_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_minExpr_in_maxExpr205 = { FOLLOW_minExpr_in_maxExpr205_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_MINIMUM_in_minExpr213 */ -static ANTLR3_BITWORD FOLLOW_MINIMUM_in_minExpr213_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; -static ANTLR3_BITSET_LIST FOLLOW_MINIMUM_in_minExpr213 = { FOLLOW_MINIMUM_in_minExpr213_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_19_in_minExpr216 */ -static ANTLR3_BITWORD FOLLOW_19_in_minExpr216_bits[] = { ANTLR3_UINT64_LIT(0x00000000000B2600) }; -static ANTLR3_BITSET_LIST FOLLOW_19_in_minExpr216 = { FOLLOW_19_in_minExpr216_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_maxExpr_in_minExpr219 */ -static ANTLR3_BITWORD FOLLOW_maxExpr_in_minExpr219_bits[] = { ANTLR3_UINT64_LIT(0x0000000000300000) }; -static ANTLR3_BITSET_LIST FOLLOW_maxExpr_in_minExpr219 = { FOLLOW_maxExpr_in_minExpr219_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_21_in_minExpr223 */ -static ANTLR3_BITWORD FOLLOW_21_in_minExpr223_bits[] = { ANTLR3_UINT64_LIT(0x00000000000B2600) }; -static ANTLR3_BITSET_LIST FOLLOW_21_in_minExpr223 = { FOLLOW_21_in_minExpr223_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_maxExpr_in_minExpr226 */ -static ANTLR3_BITWORD FOLLOW_maxExpr_in_minExpr226_bits[] = { ANTLR3_UINT64_LIT(0x0000000000300000) }; -static ANTLR3_BITSET_LIST FOLLOW_maxExpr_in_minExpr226 = { FOLLOW_maxExpr_in_minExpr226_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_20_in_minExpr231 */ -static ANTLR3_BITWORD FOLLOW_20_in_minExpr231_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_20_in_minExpr231 = { FOLLOW_20_in_minExpr231_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_minExpr236 */ -static ANTLR3_BITWORD FOLLOW_expr_in_minExpr236_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_minExpr236 = { FOLLOW_expr_in_minExpr236_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_19_in_expr245 */ -static ANTLR3_BITWORD FOLLOW_19_in_expr245_bits[] = { ANTLR3_UINT64_LIT(0x00000000000B2000) }; -static ANTLR3_BITSET_LIST FOLLOW_19_in_expr245 = { FOLLOW_19_in_expr245_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_expr247 */ -static ANTLR3_BITWORD FOLLOW_expr_in_expr247_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000040) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_expr247 = { FOLLOW_expr_in_expr247_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_GREATER_EQUAL_in_expr249 */ -static ANTLR3_BITWORD FOLLOW_GREATER_EQUAL_in_expr249_bits[] = { ANTLR3_UINT64_LIT(0x00000000000B2000) }; -static ANTLR3_BITSET_LIST FOLLOW_GREATER_EQUAL_in_expr249 = { FOLLOW_GREATER_EQUAL_in_expr249_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_expr251 */ -static ANTLR3_BITWORD FOLLOW_expr_in_expr251_bits[] = { ANTLR3_UINT64_LIT(0x0000000000008000) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_expr251 = { FOLLOW_expr_in_expr251_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_QUESTION_MARK_in_expr253 */ -static ANTLR3_BITWORD FOLLOW_QUESTION_MARK_in_expr253_bits[] = { ANTLR3_UINT64_LIT(0x00000000000B2000) }; -static ANTLR3_BITSET_LIST FOLLOW_QUESTION_MARK_in_expr253 = { FOLLOW_QUESTION_MARK_in_expr253_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_expr255 */ -static ANTLR3_BITWORD FOLLOW_expr_in_expr255_bits[] = { ANTLR3_UINT64_LIT(0x0000000000100000) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_expr255 = { FOLLOW_expr_in_expr255_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_20_in_expr257 */ -static ANTLR3_BITWORD FOLLOW_20_in_expr257_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_20_in_expr257 = { FOLLOW_20_in_expr257_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_expr278 */ -static ANTLR3_BITWORD FOLLOW_term_in_expr278_bits[] = { ANTLR3_UINT64_LIT(0x0000000000014812) }; -static ANTLR3_BITSET_LIST FOLLOW_term_in_expr278 = { FOLLOW_term_in_expr278_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_expr282 */ -static ANTLR3_BITWORD FOLLOW_set_in_expr282_bits[] = { ANTLR3_UINT64_LIT(0x00000000000B2000) }; -static ANTLR3_BITSET_LIST FOLLOW_set_in_expr282 = { FOLLOW_set_in_expr282_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_expr299 */ -static ANTLR3_BITWORD FOLLOW_expr_in_expr299_bits[] = { ANTLR3_UINT64_LIT(0x0000000000014812) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_expr299 = { FOLLOW_expr_in_expr299_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_NUMBER_in_term311 */ -static ANTLR3_BITWORD FOLLOW_NUMBER_in_term311_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_NUMBER_in_term311 = { FOLLOW_NUMBER_in_term311_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_VARIABLE_in_term320 */ -static ANTLR3_BITWORD FOLLOW_VARIABLE_in_term320_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_VARIABLE_in_term320 = { FOLLOW_VARIABLE_in_term320_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_SUB_in_term329 */ -static ANTLR3_BITWORD FOLLOW_SUB_in_term329_bits[] = { ANTLR3_UINT64_LIT(0x00000000000B2000) }; -static ANTLR3_BITSET_LIST FOLLOW_SUB_in_term329 = { FOLLOW_SUB_in_term329_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_term332 */ -static ANTLR3_BITWORD FOLLOW_term_in_term332_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_term_in_term332 = { FOLLOW_term_in_term332_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_19_in_term341 */ -static ANTLR3_BITWORD FOLLOW_19_in_term341_bits[] = { ANTLR3_UINT64_LIT(0x00000000000B2000) }; -static ANTLR3_BITSET_LIST FOLLOW_19_in_term341 = { FOLLOW_19_in_term341_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_term344 */ -static ANTLR3_BITWORD FOLLOW_expr_in_term344_bits[] = { ANTLR3_UINT64_LIT(0x0000000000100000) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_term344 = { FOLLOW_expr_in_term344_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_20_in_term346 */ -static ANTLR3_BITWORD FOLLOW_20_in_term346_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_20_in_term346 = { FOLLOW_20_in_term346_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_19_in_synpred8_EquationSystem245 */ -static ANTLR3_BITWORD FOLLOW_19_in_synpred8_EquationSystem245_bits[] = { ANTLR3_UINT64_LIT(0x00000000000B2000) }; -static ANTLR3_BITSET_LIST FOLLOW_19_in_synpred8_EquationSystem245 = { FOLLOW_19_in_synpred8_EquationSystem245_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_synpred8_EquationSystem247 */ -static ANTLR3_BITWORD FOLLOW_expr_in_synpred8_EquationSystem247_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000040) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_synpred8_EquationSystem247 = { FOLLOW_expr_in_synpred8_EquationSystem247_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_GREATER_EQUAL_in_synpred8_EquationSystem249 */ -static ANTLR3_BITWORD FOLLOW_GREATER_EQUAL_in_synpred8_EquationSystem249_bits[] = { ANTLR3_UINT64_LIT(0x00000000000B2000) }; -static ANTLR3_BITSET_LIST FOLLOW_GREATER_EQUAL_in_synpred8_EquationSystem249 = { FOLLOW_GREATER_EQUAL_in_synpred8_EquationSystem249_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_synpred8_EquationSystem251 */ -static ANTLR3_BITWORD FOLLOW_expr_in_synpred8_EquationSystem251_bits[] = { ANTLR3_UINT64_LIT(0x0000000000008000) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_synpred8_EquationSystem251 = { FOLLOW_expr_in_synpred8_EquationSystem251_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_QUESTION_MARK_in_synpred8_EquationSystem253 */ -static ANTLR3_BITWORD FOLLOW_QUESTION_MARK_in_synpred8_EquationSystem253_bits[] = { ANTLR3_UINT64_LIT(0x00000000000B2000) }; -static ANTLR3_BITSET_LIST FOLLOW_QUESTION_MARK_in_synpred8_EquationSystem253 = { FOLLOW_QUESTION_MARK_in_synpred8_EquationSystem253_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_synpred8_EquationSystem255 */ -static ANTLR3_BITWORD FOLLOW_expr_in_synpred8_EquationSystem255_bits[] = { ANTLR3_UINT64_LIT(0x0000000000100000) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_synpred8_EquationSystem255 = { FOLLOW_expr_in_synpred8_EquationSystem255_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_20_in_synpred8_EquationSystem257 */ -static ANTLR3_BITWORD FOLLOW_20_in_synpred8_EquationSystem257_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_20_in_synpred8_EquationSystem257 = { FOLLOW_20_in_synpred8_EquationSystem257_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_synpred12_EquationSystem282 */ -static ANTLR3_BITWORD FOLLOW_set_in_synpred12_EquationSystem282_bits[] = { ANTLR3_UINT64_LIT(0x00000000000B2000) }; -static ANTLR3_BITSET_LIST FOLLOW_set_in_synpred12_EquationSystem282 = { FOLLOW_set_in_synpred12_EquationSystem282_bits, 1 }; -/** Bitset defining follow set for error recovery in rule state: FOLLOW_expr_in_synpred12_EquationSystem299 */ -static ANTLR3_BITWORD FOLLOW_expr_in_synpred12_EquationSystem299_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; -static ANTLR3_BITSET_LIST FOLLOW_expr_in_synpred12_EquationSystem299 = { FOLLOW_expr_in_synpred12_EquationSystem299_bits, 1 }; - - - -/* ========================================================================= - * DFA tables for the parser - */ -/** Static dfa state tables for Cyclic dfa: - * ()* loopback of 22:28: ( ( NEWLINE !)+ equation )* - */ -static const ANTLR3_INT32 dfa2_eot[4] = - { - -1, -1, -1, -1 - }; -static const ANTLR3_INT32 dfa2_eof[4] = - { - 2, 2, -1, -1 - }; -static const ANTLR3_INT32 dfa2_min[4] = - { - 12, 12, -1, -1 - }; -static const ANTLR3_INT32 dfa2_max[4] = - { - 12, 17, -1, -1 - }; -static const ANTLR3_INT32 dfa2_accept[4] = - { - -1, -1, 2, 1 - }; -static const ANTLR3_INT32 dfa2_special[4] = - { - -1, -1, -1, -1 - }; - -/** Used when there is no transition table entry for a particular state */ -#define dfa2_T_empty NULL - -static const ANTLR3_INT32 dfa2_T0[] = - { - 1 - }; - -static const ANTLR3_INT32 dfa2_T1[] = - { - 1, -1, -1, -1, -1, 3 - }; - - -/* Transition tables are a table of sub tables, with some tables - * reused for efficiency. - */ -static const ANTLR3_INT32 * const dfa2_transitions[] = -{ - dfa2_T0, dfa2_T1, NULL, NULL -}; - - -/* Declare tracking structure for Cyclic DFA 2 - */ -static -ANTLR3_CYCLIC_DFA cdfa2 - = { - 2, /* Decision number of this dfa */ - /* Which decision this represents: */ - (const pANTLR3_UCHAR)"()* loopback of 22:28: ( ( NEWLINE !)+ equation )*", - (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ - - antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ - antlr3dfapredict, /* DFA simulator function is in the runtime */ - dfa2_eot, /* EOT table */ - dfa2_eof, /* EOF table */ - dfa2_min, /* Minimum tokens for each state */ - dfa2_max, /* Maximum tokens for each state */ - dfa2_accept, /* Accept table */ - dfa2_special, /* Special transition states */ - dfa2_transitions /* Table of transition tables */ - - }; -/* End of Cyclic DFA 2 - * --------------------- - */ -/* ========================================================================= - * End of DFA tables for the parser - */ - -/* ============================================== - * Parsing rules - */ -/** - * $ANTLR start equation_system - * EquationSystem.g:22:1: equation_system : equation ( ( NEWLINE !)+ equation )* ( NEWLINE !)* ; - */ -static EquationSystemParser_equation_system_return -equation_system(pEquationSystemParser ctx) -{ - EquationSystemParser_equation_system_return retval; - - - pANTLR3_BASE_TREE root_0; - - pANTLR3_COMMON_TOKEN NEWLINE2; - pANTLR3_COMMON_TOKEN NEWLINE4; - EquationSystemParser_equation_return equation1; - #undef RETURN_TYPE_equation1 - #define RETURN_TYPE_equation1 EquationSystemParser_equation_return - - EquationSystemParser_equation_return equation3; - #undef RETURN_TYPE_equation3 - #define RETURN_TYPE_equation3 EquationSystemParser_equation_return - - pANTLR3_BASE_TREE NEWLINE2_tree; - pANTLR3_BASE_TREE NEWLINE4_tree; - - /* Initialize rule variables - */ - - root_0 = NULL; - - NEWLINE2 = NULL; - NEWLINE4 = NULL; - equation1.tree = NULL; - - equation3.tree = NULL; - retval.start = LT(1); retval.stop = retval.start; - - - NEWLINE2_tree = NULL; - NEWLINE4_tree = NULL; - - - retval.tree = NULL; - - { - // EquationSystem.g:22:17: ( equation ( ( NEWLINE !)+ equation )* ( NEWLINE !)* ) - // EquationSystem.g:22:19: equation ( ( NEWLINE !)+ equation )* ( NEWLINE !)* - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - FOLLOWPUSH(FOLLOW_equation_in_equation_system141); - equation1=equation(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleequation_systemEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, equation1.tree); - - // EquationSystem.g:22:28: ( ( NEWLINE !)+ equation )* - - for (;;) - { - int alt2=2; - alt2 = cdfa2.predict(ctx, RECOGNIZER, ISTREAM, &cdfa2); - if (HASEXCEPTION()) - { - goto ruleequation_systemEx; - } - if (HASFAILED()) - { - return retval; - } - - switch (alt2) - { - case 1: - // EquationSystem.g:22:30: ( NEWLINE !)+ equation - { - // EquationSystem.g:22:37: ( NEWLINE !)+ - { - int cnt1=0; - - for (;;) - { - int alt1=2; - switch ( LA(1) ) - { - case NEWLINE: - { - alt1=1; - } - break; - - } - - switch (alt1) - { - case 1: - // EquationSystem.g:22:37: NEWLINE ! - { - NEWLINE2 = (pANTLR3_COMMON_TOKEN) MATCHT(NEWLINE, &FOLLOW_NEWLINE_in_equation_system145); - if (HASEXCEPTION()) - { - goto ruleequation_systemEx; - } - if (HASFAILED()) - { - return retval; - } - - - } - break; - - default: - - if ( cnt1 >= 1 ) - { - goto loop1; - } - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return retval; - } - - /* mismatchedSetEx() - */ - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; - - - goto ruleequation_systemEx; - } - cnt1++; - } - loop1: ; /* Jump to here if this rule does not match */ - } - - FOLLOWPUSH(FOLLOW_equation_in_equation_system150); - equation3=equation(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleequation_systemEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, equation3.tree); - - } - break; - - default: - goto loop2; /* break out of the loop */ - break; - } - } - loop2: ; /* Jump out to here if this rule does not match */ - - - // EquationSystem.g:22:54: ( NEWLINE !)* - - for (;;) - { - int alt3=2; - switch ( LA(1) ) - { - case NEWLINE: - { - alt3=1; - } - break; - - } - - switch (alt3) - { - case 1: - // EquationSystem.g:22:55: NEWLINE ! - { - NEWLINE4 = (pANTLR3_COMMON_TOKEN) MATCHT(NEWLINE, &FOLLOW_NEWLINE_in_equation_system157); - if (HASEXCEPTION()) - { - goto ruleequation_systemEx; - } - if (HASFAILED()) - { - return retval; - } - - - } - break; - - default: - goto loop3; /* break out of the loop */ - break; - } - } - loop3: ; /* Jump out to here if this rule does not match */ - - - } - - } - - // This is where rules clean up and exit - // - goto ruleequation_systemEx; /* Prevent compiler warnings */ - ruleequation_systemEx: ; - retval.stop = LT(-1); - - - if ( BACKTRACKING==0 ) - { - - retval.stop = LT(-1); - - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); - ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); - } - - - if (HASEXCEPTION()) - { - PREPORTERROR(); - PRECOVER(); - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION)); - } - return retval; -} -/* $ANTLR end equation_system */ - -/** - * $ANTLR start equation - * EquationSystem.g:23:1: equation : VARIABLE '=' ! maxExpr ; - */ -static EquationSystemParser_equation_return -equation(pEquationSystemParser ctx) -{ - EquationSystemParser_equation_return retval; - - - pANTLR3_BASE_TREE root_0; - - pANTLR3_COMMON_TOKEN VARIABLE5; - pANTLR3_COMMON_TOKEN char_literal6; - EquationSystemParser_maxExpr_return maxExpr7; - #undef RETURN_TYPE_maxExpr7 - #define RETURN_TYPE_maxExpr7 EquationSystemParser_maxExpr_return - - pANTLR3_BASE_TREE VARIABLE5_tree; - pANTLR3_BASE_TREE char_literal6_tree; - - /* Initialize rule variables - */ - - root_0 = NULL; - - VARIABLE5 = NULL; - char_literal6 = NULL; - maxExpr7.tree = NULL; - retval.start = LT(1); retval.stop = retval.start; - - - VARIABLE5_tree = NULL; - char_literal6_tree = NULL; - - - retval.tree = NULL; - - { - // EquationSystem.g:23:10: ( VARIABLE '=' ! maxExpr ) - // EquationSystem.g:23:12: VARIABLE '=' ! maxExpr - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - VARIABLE5 = (pANTLR3_COMMON_TOKEN) MATCHT(VARIABLE, &FOLLOW_VARIABLE_in_equation168); - if (HASEXCEPTION()) - { - goto ruleequationEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { - VARIABLE5_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, VARIABLE5)); - ADAPTOR->addChild(ADAPTOR, root_0, VARIABLE5_tree); - } - - char_literal6 = (pANTLR3_COMMON_TOKEN) MATCHT(22, &FOLLOW_22_in_equation170); - if (HASEXCEPTION()) - { - goto ruleequationEx; - } - if (HASFAILED()) - { - return retval; - } - - - FOLLOWPUSH(FOLLOW_maxExpr_in_equation173); - maxExpr7=maxExpr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleequationEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, maxExpr7.tree); - - } - - } - - // This is where rules clean up and exit - // - goto ruleequationEx; /* Prevent compiler warnings */ - ruleequationEx: ; - retval.stop = LT(-1); - - - if ( BACKTRACKING==0 ) - { - - retval.stop = LT(-1); - - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); - ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); - } - - - if (HASEXCEPTION()) - { - PREPORTERROR(); - PRECOVER(); - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION)); - } - return retval; -} -/* $ANTLR end equation */ - -/** - * $ANTLR start maxExpr - * EquationSystem.g:25:1: maxExpr : ( MAXIMUM ^ '(' ! minExpr ( ',' ! minExpr )* ')' !| minExpr ); - */ -static EquationSystemParser_maxExpr_return -maxExpr(pEquationSystemParser ctx) -{ - EquationSystemParser_maxExpr_return retval; - - - pANTLR3_BASE_TREE root_0; - - pANTLR3_COMMON_TOKEN MAXIMUM8; - pANTLR3_COMMON_TOKEN char_literal9; - pANTLR3_COMMON_TOKEN char_literal11; - pANTLR3_COMMON_TOKEN char_literal13; - EquationSystemParser_minExpr_return minExpr10; - #undef RETURN_TYPE_minExpr10 - #define RETURN_TYPE_minExpr10 EquationSystemParser_minExpr_return - - EquationSystemParser_minExpr_return minExpr12; - #undef RETURN_TYPE_minExpr12 - #define RETURN_TYPE_minExpr12 EquationSystemParser_minExpr_return - - EquationSystemParser_minExpr_return minExpr14; - #undef RETURN_TYPE_minExpr14 - #define RETURN_TYPE_minExpr14 EquationSystemParser_minExpr_return - - pANTLR3_BASE_TREE MAXIMUM8_tree; - pANTLR3_BASE_TREE char_literal9_tree; - pANTLR3_BASE_TREE char_literal11_tree; - pANTLR3_BASE_TREE char_literal13_tree; - - /* Initialize rule variables - */ - - root_0 = NULL; - - MAXIMUM8 = NULL; - char_literal9 = NULL; - char_literal11 = NULL; - char_literal13 = NULL; - minExpr10.tree = NULL; - - minExpr12.tree = NULL; - - minExpr14.tree = NULL; - retval.start = LT(1); retval.stop = retval.start; - - - MAXIMUM8_tree = NULL; - char_literal9_tree = NULL; - char_literal11_tree = NULL; - char_literal13_tree = NULL; - - - retval.tree = NULL; - - { - { - // EquationSystem.g:25:9: ( MAXIMUM ^ '(' ! minExpr ( ',' ! minExpr )* ')' !| minExpr ) - - ANTLR3_UINT32 alt5; - - alt5=2; - - switch ( LA(1) ) - { - case MAXIMUM: - { - alt5=1; - } - break; - case MINIMUM: - case NUMBER: - case SUB: - case VARIABLE: - case 19: - { - alt5=2; - } - break; - - default: - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return retval; - } - - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; - EXCEPTION->message = (void *)""; - EXCEPTION->decisionNum = 5; - EXCEPTION->state = 0; - - - goto rulemaxExprEx; - - } - - switch (alt5) - { - case 1: - // EquationSystem.g:25:11: MAXIMUM ^ '(' ! minExpr ( ',' ! minExpr )* ')' ! - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - MAXIMUM8 = (pANTLR3_COMMON_TOKEN) MATCHT(MAXIMUM, &FOLLOW_MAXIMUM_in_maxExpr182); - if (HASEXCEPTION()) - { - goto rulemaxExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { - MAXIMUM8_tree = - (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, MAXIMUM8)) - ; - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, MAXIMUM8_tree, root_0)); - } - - char_literal9 = (pANTLR3_COMMON_TOKEN) MATCHT(19, &FOLLOW_19_in_maxExpr185); - if (HASEXCEPTION()) - { - goto rulemaxExprEx; - } - if (HASFAILED()) - { - return retval; - } - - - FOLLOWPUSH(FOLLOW_minExpr_in_maxExpr188); - minExpr10=minExpr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto rulemaxExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, minExpr10.tree); - - // EquationSystem.g:25:33: ( ',' ! minExpr )* - - for (;;) - { - int alt4=2; - switch ( LA(1) ) - { - case 21: - { - alt4=1; - } - break; - - } - - switch (alt4) - { - case 1: - // EquationSystem.g:25:35: ',' ! minExpr - { - char_literal11 = (pANTLR3_COMMON_TOKEN) MATCHT(21, &FOLLOW_21_in_maxExpr192); - if (HASEXCEPTION()) - { - goto rulemaxExprEx; - } - if (HASFAILED()) - { - return retval; - } - - - FOLLOWPUSH(FOLLOW_minExpr_in_maxExpr195); - minExpr12=minExpr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto rulemaxExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, minExpr12.tree); - - } - break; - - default: - goto loop4; /* break out of the loop */ - break; - } - } - loop4: ; /* Jump out to here if this rule does not match */ - - - char_literal13 = (pANTLR3_COMMON_TOKEN) MATCHT(20, &FOLLOW_20_in_maxExpr200); - if (HASEXCEPTION()) - { - goto rulemaxExprEx; - } - if (HASFAILED()) - { - return retval; - } - - - } - break; - case 2: - // EquationSystem.g:25:58: minExpr - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - FOLLOWPUSH(FOLLOW_minExpr_in_maxExpr205); - minExpr14=minExpr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto rulemaxExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, minExpr14.tree); - - } - break; - - } - } - } - - // This is where rules clean up and exit - // - goto rulemaxExprEx; /* Prevent compiler warnings */ - rulemaxExprEx: ; - retval.stop = LT(-1); - - - if ( BACKTRACKING==0 ) - { - - retval.stop = LT(-1); - - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); - ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); - } - - - if (HASEXCEPTION()) - { - PREPORTERROR(); - PRECOVER(); - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION)); - } - return retval; -} -/* $ANTLR end maxExpr */ - -/** - * $ANTLR start minExpr - * EquationSystem.g:26:1: minExpr : ( MINIMUM ^ '(' ! maxExpr ( ',' ! maxExpr )* ')' !| expr ); - */ -static EquationSystemParser_minExpr_return -minExpr(pEquationSystemParser ctx) -{ - EquationSystemParser_minExpr_return retval; - - - pANTLR3_BASE_TREE root_0; - - pANTLR3_COMMON_TOKEN MINIMUM15; - pANTLR3_COMMON_TOKEN char_literal16; - pANTLR3_COMMON_TOKEN char_literal18; - pANTLR3_COMMON_TOKEN char_literal20; - EquationSystemParser_maxExpr_return maxExpr17; - #undef RETURN_TYPE_maxExpr17 - #define RETURN_TYPE_maxExpr17 EquationSystemParser_maxExpr_return - - EquationSystemParser_maxExpr_return maxExpr19; - #undef RETURN_TYPE_maxExpr19 - #define RETURN_TYPE_maxExpr19 EquationSystemParser_maxExpr_return - - EquationSystemParser_expr_return expr21; - #undef RETURN_TYPE_expr21 - #define RETURN_TYPE_expr21 EquationSystemParser_expr_return - - pANTLR3_BASE_TREE MINIMUM15_tree; - pANTLR3_BASE_TREE char_literal16_tree; - pANTLR3_BASE_TREE char_literal18_tree; - pANTLR3_BASE_TREE char_literal20_tree; - - /* Initialize rule variables - */ - - root_0 = NULL; - - MINIMUM15 = NULL; - char_literal16 = NULL; - char_literal18 = NULL; - char_literal20 = NULL; - maxExpr17.tree = NULL; - - maxExpr19.tree = NULL; - - expr21.tree = NULL; - retval.start = LT(1); retval.stop = retval.start; - - - MINIMUM15_tree = NULL; - char_literal16_tree = NULL; - char_literal18_tree = NULL; - char_literal20_tree = NULL; - - - retval.tree = NULL; - - { - { - // EquationSystem.g:26:9: ( MINIMUM ^ '(' ! maxExpr ( ',' ! maxExpr )* ')' !| expr ) - - ANTLR3_UINT32 alt7; - - alt7=2; - - switch ( LA(1) ) - { - case MINIMUM: - { - alt7=1; - } - break; - case NUMBER: - case SUB: - case VARIABLE: - case 19: - { - alt7=2; - } - break; - - default: - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return retval; - } - - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; - EXCEPTION->message = (void *)""; - EXCEPTION->decisionNum = 7; - EXCEPTION->state = 0; - - - goto ruleminExprEx; - - } - - switch (alt7) - { - case 1: - // EquationSystem.g:26:11: MINIMUM ^ '(' ! maxExpr ( ',' ! maxExpr )* ')' ! - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - MINIMUM15 = (pANTLR3_COMMON_TOKEN) MATCHT(MINIMUM, &FOLLOW_MINIMUM_in_minExpr213); - if (HASEXCEPTION()) - { - goto ruleminExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { - MINIMUM15_tree = - (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, MINIMUM15)) - ; - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, MINIMUM15_tree, root_0)); - } - - char_literal16 = (pANTLR3_COMMON_TOKEN) MATCHT(19, &FOLLOW_19_in_minExpr216); - if (HASEXCEPTION()) - { - goto ruleminExprEx; - } - if (HASFAILED()) - { - return retval; - } - - - FOLLOWPUSH(FOLLOW_maxExpr_in_minExpr219); - maxExpr17=maxExpr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleminExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, maxExpr17.tree); - - // EquationSystem.g:26:33: ( ',' ! maxExpr )* - - for (;;) - { - int alt6=2; - switch ( LA(1) ) - { - case 21: - { - alt6=1; - } - break; - - } - - switch (alt6) - { - case 1: - // EquationSystem.g:26:35: ',' ! maxExpr - { - char_literal18 = (pANTLR3_COMMON_TOKEN) MATCHT(21, &FOLLOW_21_in_minExpr223); - if (HASEXCEPTION()) - { - goto ruleminExprEx; - } - if (HASFAILED()) - { - return retval; - } - - - FOLLOWPUSH(FOLLOW_maxExpr_in_minExpr226); - maxExpr19=maxExpr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleminExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, maxExpr19.tree); - - } - break; - - default: - goto loop6; /* break out of the loop */ - break; - } - } - loop6: ; /* Jump out to here if this rule does not match */ - - - char_literal20 = (pANTLR3_COMMON_TOKEN) MATCHT(20, &FOLLOW_20_in_minExpr231); - if (HASEXCEPTION()) - { - goto ruleminExprEx; - } - if (HASFAILED()) - { - return retval; - } - - - } - break; - case 2: - // EquationSystem.g:26:58: expr - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - FOLLOWPUSH(FOLLOW_expr_in_minExpr236); - expr21=expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleminExprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, expr21.tree); - - } - break; - - } - } - } - - // This is where rules clean up and exit - // - goto ruleminExprEx; /* Prevent compiler warnings */ - ruleminExprEx: ; - retval.stop = LT(-1); - - - if ( BACKTRACKING==0 ) - { - - retval.stop = LT(-1); - - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); - ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); - } - - - if (HASEXCEPTION()) - { - PREPORTERROR(); - PRECOVER(); - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION)); - } - return retval; -} -/* $ANTLR end minExpr */ - -/** - * $ANTLR start expr - * EquationSystem.g:28:1: expr : ( '(' expr GREATER_EQUAL expr QUESTION_MARK expr ')' -> ^( GUARD expr expr expr ) | term ( ( PLUS | MULT | SUB | COMMA ) ^ expr )* ); - */ -static EquationSystemParser_expr_return -expr(pEquationSystemParser ctx) -{ - EquationSystemParser_expr_return retval; - - - pANTLR3_BASE_TREE root_0; - - pANTLR3_COMMON_TOKEN char_literal22; - pANTLR3_COMMON_TOKEN GREATER_EQUAL24; - pANTLR3_COMMON_TOKEN QUESTION_MARK26; - pANTLR3_COMMON_TOKEN char_literal28; - pANTLR3_COMMON_TOKEN set30; - EquationSystemParser_expr_return expr23; - #undef RETURN_TYPE_expr23 - #define RETURN_TYPE_expr23 EquationSystemParser_expr_return - - EquationSystemParser_expr_return expr25; - #undef RETURN_TYPE_expr25 - #define RETURN_TYPE_expr25 EquationSystemParser_expr_return - - EquationSystemParser_expr_return expr27; - #undef RETURN_TYPE_expr27 - #define RETURN_TYPE_expr27 EquationSystemParser_expr_return - - EquationSystemParser_term_return term29; - #undef RETURN_TYPE_term29 - #define RETURN_TYPE_term29 EquationSystemParser_term_return - - EquationSystemParser_expr_return expr31; - #undef RETURN_TYPE_expr31 - #define RETURN_TYPE_expr31 EquationSystemParser_expr_return - - pANTLR3_BASE_TREE char_literal22_tree; - pANTLR3_BASE_TREE GREATER_EQUAL24_tree; - pANTLR3_BASE_TREE QUESTION_MARK26_tree; - pANTLR3_BASE_TREE char_literal28_tree; - pANTLR3_BASE_TREE set30_tree; - pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_20; - pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_19; - pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_GREATER_EQUAL; - pANTLR3_REWRITE_RULE_TOKEN_STREAM stream_QUESTION_MARK; - pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_expr; - /* Initialize rule variables - */ - - root_0 = NULL; - - char_literal22 = NULL; - GREATER_EQUAL24 = NULL; - QUESTION_MARK26 = NULL; - char_literal28 = NULL; - set30 = NULL; - expr23.tree = NULL; - - expr25.tree = NULL; - - expr27.tree = NULL; - - term29.tree = NULL; - - expr31.tree = NULL; - retval.start = LT(1); retval.stop = retval.start; - - - char_literal22_tree = NULL; - GREATER_EQUAL24_tree = NULL; - QUESTION_MARK26_tree = NULL; - char_literal28_tree = NULL; - set30_tree = NULL; - - stream_20 = NULL; - #define CREATE_stream_20 if (stream_20 == NULL) {stream_20 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 20"); } - stream_19 = NULL; - #define CREATE_stream_19 if (stream_19 == NULL) {stream_19 = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token 19"); } - stream_GREATER_EQUAL = NULL; - #define CREATE_stream_GREATER_EQUAL if (stream_GREATER_EQUAL == NULL) {stream_GREATER_EQUAL = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token GREATER_EQUAL"); } - stream_QUESTION_MARK = NULL; - #define CREATE_stream_QUESTION_MARK if (stream_QUESTION_MARK == NULL) {stream_QUESTION_MARK = antlr3RewriteRuleTOKENStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token QUESTION_MARK"); } - stream_expr = NULL; - #define CREATE_stream_expr if (stream_expr == NULL) {stream_expr = antlr3RewriteRuleSubtreeStreamNewAE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"rule expr"); } - - retval.tree = NULL; - - { - { - // EquationSystem.g:28:6: ( '(' expr GREATER_EQUAL expr QUESTION_MARK expr ')' -> ^( GUARD expr expr expr ) | term ( ( PLUS | MULT | SUB | COMMA ) ^ expr )* ) - - ANTLR3_UINT32 alt9; - - alt9=2; - - switch ( LA(1) ) - { - case 19: - { - { - int LA9_1 = LA(2); - if ( (synpred8_EquationSystem(ctx))) - { - alt9=1; - } - else if ( (ANTLR3_TRUE)) - { - alt9=2; - } - else - { - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return retval; - } - - - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; - EXCEPTION->message = (void *)""; - EXCEPTION->decisionNum = 9; - EXCEPTION->state = 1; - - - goto ruleexprEx; - - } - } - } - break; - case NUMBER: - case SUB: - case VARIABLE: - { - alt9=2; - } - break; - - default: - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return retval; - } - - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; - EXCEPTION->message = (void *)""; - EXCEPTION->decisionNum = 9; - EXCEPTION->state = 0; - - - goto ruleexprEx; - - } - - switch (alt9) - { - case 1: - // EquationSystem.g:28:8: '(' expr GREATER_EQUAL expr QUESTION_MARK expr ')' - { - char_literal22 = (pANTLR3_COMMON_TOKEN) MATCHT(19, &FOLLOW_19_in_expr245); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { CREATE_stream_19; stream_19->add(stream_19, char_literal22, NULL); } - - - FOLLOWPUSH(FOLLOW_expr_in_expr247); - expr23=expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { CREATE_stream_expr; stream_expr->add(stream_expr, expr23.tree, NULL); } - - GREATER_EQUAL24 = (pANTLR3_COMMON_TOKEN) MATCHT(GREATER_EQUAL, &FOLLOW_GREATER_EQUAL_in_expr249); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { CREATE_stream_GREATER_EQUAL; stream_GREATER_EQUAL->add(stream_GREATER_EQUAL, GREATER_EQUAL24, NULL); } - - - FOLLOWPUSH(FOLLOW_expr_in_expr251); - expr25=expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { CREATE_stream_expr; stream_expr->add(stream_expr, expr25.tree, NULL); } - - QUESTION_MARK26 = (pANTLR3_COMMON_TOKEN) MATCHT(QUESTION_MARK, &FOLLOW_QUESTION_MARK_in_expr253); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { CREATE_stream_QUESTION_MARK; stream_QUESTION_MARK->add(stream_QUESTION_MARK, QUESTION_MARK26, NULL); } - - - FOLLOWPUSH(FOLLOW_expr_in_expr255); - expr27=expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { CREATE_stream_expr; stream_expr->add(stream_expr, expr27.tree, NULL); } - - char_literal28 = (pANTLR3_COMMON_TOKEN) MATCHT(20, &FOLLOW_20_in_expr257); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { CREATE_stream_20; stream_20->add(stream_20, char_literal28, NULL); } - - - /* AST REWRITE - * elements : expr, expr, expr - * token labels : - * rule labels : retval - * token list labels : - * rule list labels : - */ - if ( BACKTRACKING==0 ) - - { - pANTLR3_REWRITE_RULE_SUBTREE_STREAM stream_retval; - - stream_retval=antlr3RewriteRuleSubtreeStreamNewAEE(ADAPTOR, RECOGNIZER, (pANTLR3_UINT8)"token retval", retval.tree != NULL ? retval.tree : NULL); - - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - retval.tree = root_0; - // 28:59: -> ^( GUARD expr expr expr ) - { - // EquationSystem.g:28:62: ^( GUARD expr expr expr ) - { - pANTLR3_BASE_TREE root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - root_1 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, - (pANTLR3_BASE_TREE)ADAPTOR->createTypeText(ADAPTOR, GUARD, (pANTLR3_UINT8)"GUARD") - , root_1)); - - ADAPTOR->addChild(ADAPTOR, root_1, stream_expr == NULL ? NULL : stream_expr->nextTree(stream_expr)); - - ADAPTOR->addChild(ADAPTOR, root_1, stream_expr == NULL ? NULL : stream_expr->nextTree(stream_expr)); - - ADAPTOR->addChild(ADAPTOR, root_1, stream_expr == NULL ? NULL : stream_expr->nextTree(stream_expr)); - - ADAPTOR->addChild(ADAPTOR, root_0, root_1); - } - - } - - - retval.tree = root_0; // set result root - if (stream_retval != NULL) stream_retval->free(stream_retval); - - - } - } - break; - case 2: - // EquationSystem.g:29:8: term ( ( PLUS | MULT | SUB | COMMA ) ^ expr )* - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - FOLLOWPUSH(FOLLOW_term_in_expr278); - term29=term(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, term29.tree); - - // EquationSystem.g:29:13: ( ( PLUS | MULT | SUB | COMMA ) ^ expr )* - - for (;;) - { - int alt8=2; - switch ( LA(1) ) - { - case COMMA: - case MULT: - case PLUS: - case SUB: - { - { - /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState) - */ - int LA8_2 = LA(2); - if ( (synpred12_EquationSystem(ctx))) - { - alt8=1; - } - - } - } - break; - - } - - switch (alt8) - { - case 1: - // EquationSystem.g:29:15: ( PLUS | MULT | SUB | COMMA ) ^ expr - { - set30=(pANTLR3_COMMON_TOKEN)LT(1); - - set30=(pANTLR3_COMMON_TOKEN)LT(1); - - if ( LA(1) == COMMA || LA(1) == MULT || LA(1) == PLUS || LA(1) == SUB ) - { - CONSUME(); - if ( BACKTRACKING==0 ) root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, - (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set30)) - , root_0)); - PERRORRECOVERY=ANTLR3_FALSE; - FAILEDFLAG=ANTLR3_FALSE; - - } - else - { - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return retval; - } - - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - EXCEPTION->expectingSet = NULL; - - goto ruleexprEx; - } - - - FOLLOWPUSH(FOLLOW_expr_in_expr299); - expr31=expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruleexprEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, expr31.tree); - - } - break; - - default: - goto loop8; /* break out of the loop */ - break; - } - } - loop8: ; /* Jump out to here if this rule does not match */ - - - } - break; - - } - } - } - - // This is where rules clean up and exit - // - goto ruleexprEx; /* Prevent compiler warnings */ - ruleexprEx: ; - retval.stop = LT(-1); - - - if ( BACKTRACKING==0 ) - { - - retval.stop = LT(-1); - - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); - ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); - if (stream_20 != NULL) stream_20->free(stream_20); - if (stream_19 != NULL) stream_19->free(stream_19); - if (stream_GREATER_EQUAL != NULL) stream_GREATER_EQUAL->free(stream_GREATER_EQUAL); - if (stream_QUESTION_MARK != NULL) stream_QUESTION_MARK->free(stream_QUESTION_MARK); - if (stream_expr != NULL) stream_expr->free(stream_expr); - } - - - if (HASEXCEPTION()) - { - PREPORTERROR(); - PRECOVER(); - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION)); - } - return retval; -} -/* $ANTLR end expr */ - -/** - * $ANTLR start term - * EquationSystem.g:31:1: term : ( NUMBER | VARIABLE | '-' ^ term | '(' ! expr ')' !); - */ -static EquationSystemParser_term_return -term(pEquationSystemParser ctx) -{ - EquationSystemParser_term_return retval; - - - pANTLR3_BASE_TREE root_0; - - pANTLR3_COMMON_TOKEN NUMBER32; - pANTLR3_COMMON_TOKEN VARIABLE33; - pANTLR3_COMMON_TOKEN char_literal34; - pANTLR3_COMMON_TOKEN char_literal36; - pANTLR3_COMMON_TOKEN char_literal38; - EquationSystemParser_term_return term35; - #undef RETURN_TYPE_term35 - #define RETURN_TYPE_term35 EquationSystemParser_term_return - - EquationSystemParser_expr_return expr37; - #undef RETURN_TYPE_expr37 - #define RETURN_TYPE_expr37 EquationSystemParser_expr_return - - pANTLR3_BASE_TREE NUMBER32_tree; - pANTLR3_BASE_TREE VARIABLE33_tree; - pANTLR3_BASE_TREE char_literal34_tree; - pANTLR3_BASE_TREE char_literal36_tree; - pANTLR3_BASE_TREE char_literal38_tree; - - /* Initialize rule variables - */ - - root_0 = NULL; - - NUMBER32 = NULL; - VARIABLE33 = NULL; - char_literal34 = NULL; - char_literal36 = NULL; - char_literal38 = NULL; - term35.tree = NULL; - - expr37.tree = NULL; - retval.start = LT(1); retval.stop = retval.start; - - - NUMBER32_tree = NULL; - VARIABLE33_tree = NULL; - char_literal34_tree = NULL; - char_literal36_tree = NULL; - char_literal38_tree = NULL; - - - retval.tree = NULL; - - { - { - // EquationSystem.g:31:6: ( NUMBER | VARIABLE | '-' ^ term | '(' ! expr ')' !) - - ANTLR3_UINT32 alt10; - - alt10=4; - - switch ( LA(1) ) - { - case NUMBER: - { - alt10=1; - } - break; - case VARIABLE: - { - alt10=2; - } - break; - case SUB: - { - alt10=3; - } - break; - case 19: - { - alt10=4; - } - break; - - default: - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return retval; - } - - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; - EXCEPTION->message = (void *)""; - EXCEPTION->decisionNum = 10; - EXCEPTION->state = 0; - - - goto ruletermEx; - - } - - switch (alt10) - { - case 1: - // EquationSystem.g:31:8: NUMBER - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - NUMBER32 = (pANTLR3_COMMON_TOKEN) MATCHT(NUMBER, &FOLLOW_NUMBER_in_term311); - if (HASEXCEPTION()) - { - goto ruletermEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { - NUMBER32_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, NUMBER32)); - ADAPTOR->addChild(ADAPTOR, root_0, NUMBER32_tree); - } - - } - break; - case 2: - // EquationSystem.g:32:8: VARIABLE - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - VARIABLE33 = (pANTLR3_COMMON_TOKEN) MATCHT(VARIABLE, &FOLLOW_VARIABLE_in_term320); - if (HASEXCEPTION()) - { - goto ruletermEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { - VARIABLE33_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, VARIABLE33)); - ADAPTOR->addChild(ADAPTOR, root_0, VARIABLE33_tree); - } - - } - break; - case 3: - // EquationSystem.g:33:8: '-' ^ term - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - char_literal34 = (pANTLR3_COMMON_TOKEN) MATCHT(SUB, &FOLLOW_SUB_in_term329); - if (HASEXCEPTION()) - { - goto ruletermEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) { - char_literal34_tree = - (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal34)) - ; - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->becomeRoot(ADAPTOR, char_literal34_tree, root_0)); - } - - FOLLOWPUSH(FOLLOW_term_in_term332); - term35=term(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruletermEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, term35.tree); - - } - break; - case 4: - // EquationSystem.g:34:8: '(' ! expr ')' ! - { - root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); - - - char_literal36 = (pANTLR3_COMMON_TOKEN) MATCHT(19, &FOLLOW_19_in_term341); - if (HASEXCEPTION()) - { - goto ruletermEx; - } - if (HASFAILED()) - { - return retval; - } - - - FOLLOWPUSH(FOLLOW_expr_in_term344); - expr37=expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto ruletermEx; - } - if (HASFAILED()) - { - return retval; - } - - if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, expr37.tree); - - char_literal38 = (pANTLR3_COMMON_TOKEN) MATCHT(20, &FOLLOW_20_in_term346); - if (HASEXCEPTION()) - { - goto ruletermEx; - } - if (HASFAILED()) - { - return retval; - } - - - } - break; - - } - } - } - - // This is where rules clean up and exit - // - goto ruletermEx; /* Prevent compiler warnings */ - ruletermEx: ; - retval.stop = LT(-1); - - - if ( BACKTRACKING==0 ) - { - - retval.stop = LT(-1); - - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); - ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); - } - - - if (HASEXCEPTION()) - { - PREPORTERROR(); - PRECOVER(); - retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->errorNode(ADAPTOR, INPUT, retval.start, LT(-1), EXCEPTION)); - } - return retval; -} -/* $ANTLR end term */ - -// $ANTLR start synpred8_EquationSystem -static void synpred8_EquationSystem_fragment(pEquationSystemParser ctx ) -{ - // EquationSystem.g:28:8: ( '(' expr GREATER_EQUAL expr QUESTION_MARK expr ')' ) - // EquationSystem.g:28:8: '(' expr GREATER_EQUAL expr QUESTION_MARK expr ')' - { - MATCHT(19, &FOLLOW_19_in_synpred8_EquationSystem245); - if (HASEXCEPTION()) - { - goto rulesynpred8_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - FOLLOWPUSH(FOLLOW_expr_in_synpred8_EquationSystem247); - expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto rulesynpred8_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - MATCHT(GREATER_EQUAL, &FOLLOW_GREATER_EQUAL_in_synpred8_EquationSystem249); - if (HASEXCEPTION()) - { - goto rulesynpred8_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - FOLLOWPUSH(FOLLOW_expr_in_synpred8_EquationSystem251); - expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto rulesynpred8_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - MATCHT(QUESTION_MARK, &FOLLOW_QUESTION_MARK_in_synpred8_EquationSystem253); - if (HASEXCEPTION()) - { - goto rulesynpred8_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - FOLLOWPUSH(FOLLOW_expr_in_synpred8_EquationSystem255); - expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto rulesynpred8_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - MATCHT(20, &FOLLOW_20_in_synpred8_EquationSystem257); - if (HASEXCEPTION()) - { - goto rulesynpred8_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - } - -// This is where rules clean up and exit -// -goto rulesynpred8_EquationSystemEx; /* Prevent compiler warnings */ -rulesynpred8_EquationSystemEx: ; - -} -// $ANTLR end synpred8_EquationSystem - -// $ANTLR start synpred12_EquationSystem -static void synpred12_EquationSystem_fragment(pEquationSystemParser ctx ) -{ - // EquationSystem.g:29:15: ( ( PLUS | MULT | SUB | COMMA ) expr ) - // EquationSystem.g:29:15: ( PLUS | MULT | SUB | COMMA ) expr - { - if ( LA(1) == COMMA || LA(1) == MULT || LA(1) == PLUS || LA(1) == SUB ) - { - CONSUME(); - PERRORRECOVERY=ANTLR3_FALSE; - FAILEDFLAG=ANTLR3_FALSE; - - } - else - { - if (BACKTRACKING>0) - { - FAILEDFLAG = ANTLR3_TRUE; - return ; - } - - CONSTRUCTEX(); - EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; - EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; - EXCEPTION->expectingSet = NULL; - - goto rulesynpred12_EquationSystemEx; - } - - - FOLLOWPUSH(FOLLOW_expr_in_synpred12_EquationSystem299); - expr(ctx); - - FOLLOWPOP(); - if (HASEXCEPTION()) - { - goto rulesynpred12_EquationSystemEx; - } - if (HASFAILED()) - { - return ; - } - - - } - -// This is where rules clean up and exit -// -goto rulesynpred12_EquationSystemEx; /* Prevent compiler warnings */ -rulesynpred12_EquationSystemEx: ; - -} -// $ANTLR end synpred12_EquationSystem -/* End of parsing rules - * ============================================== - */ - -/* ============================================== - * Syntactic predicates - */ -static ANTLR3_BOOLEAN synpred12_EquationSystem(pEquationSystemParser ctx) -{ - ANTLR3_MARKER start; - ANTLR3_BOOLEAN success; - - BACKTRACKING++; - start = MARK(); - synpred12_EquationSystem_fragment(ctx); // can never throw exception - success = !(FAILEDFLAG); - REWIND(start); - BACKTRACKING--; - FAILEDFLAG = ANTLR3_FALSE; - return success; -} -static ANTLR3_BOOLEAN synpred8_EquationSystem(pEquationSystemParser ctx) -{ - ANTLR3_MARKER start; - ANTLR3_BOOLEAN success; - - BACKTRACKING++; - start = MARK(); - synpred8_EquationSystem_fragment(ctx); // can never throw exception - success = !(FAILEDFLAG); - REWIND(start); - BACKTRACKING--; - FAILEDFLAG = ANTLR3_FALSE; - return success; -} - -/* End of syntactic predicates - * ============================================== - */ - - - - - - -/* End of code - * ============================================================================= - */ diff --git a/impl/parser/EquationSystemParser.h b/impl/parser/EquationSystemParser.h deleted file mode 100644 index 0f24f97..0000000 --- a/impl/parser/EquationSystemParser.h +++ /dev/null @@ -1,324 +0,0 @@ -/** \file - * This C header file was generated by $ANTLR version 3.4 - * - * - From the grammar source file : EquationSystem.g - * - On : 2012-07-12 15:47:50 - * - for the parser : EquationSystemParserParser - * - * Editing it, at least manually, is not wise. - * - * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. - * - * - * The parser -EquationSystemParser - -has the callable functions (rules) shown below, - * which will invoke the code for the associated rule in the source grammar - * assuming that the input stream is pointing to a token/text stream that could begin - * this rule. - * - * For instance if you call the first (topmost) rule in a parser grammar, you will - * get the results of a full parse, but calling a rule half way through the grammar will - * allow you to pass part of a full token stream to the parser, such as for syntax checking - * in editors and so on. - * - * The parser entry points are called indirectly (by function pointer to function) via - * a parser context typedef pEquationSystemParser, which is returned from a call to EquationSystemParserNew(). - * - * The methods in pEquationSystemParser are as follows: - * - * - - EquationSystemParser_equation_system_return - pEquationSystemParser->equation_system(pEquationSystemParser) - * - - EquationSystemParser_equation_return - pEquationSystemParser->equation(pEquationSystemParser) - * - - EquationSystemParser_maxExpr_return - pEquationSystemParser->maxExpr(pEquationSystemParser) - * - - EquationSystemParser_minExpr_return - pEquationSystemParser->minExpr(pEquationSystemParser) - * - - EquationSystemParser_expr_return - pEquationSystemParser->expr(pEquationSystemParser) - * - - EquationSystemParser_term_return - pEquationSystemParser->term(pEquationSystemParser) - * - * - * - * The return type for any particular rule is of course determined by the source - * grammar file. - */ -// [The "BSD license"] -// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC -// http://www.temporal-wave.com -// http://www.linkedin.com/in/jimidle -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#ifndef _EquationSystemParser_H -#define _EquationSystemParser_H -/* ============================================================================= - * Standard antlr3 C runtime definitions - */ -#include - -/* End of standard antlr 3 runtime definitions - * ============================================================================= - */ - -#ifdef __cplusplus -extern "C" { -#endif - -// Forward declare the context typedef so that we can use it before it is -// properly defined. Delegators and delegates (from import statements) are -// interdependent and their context structures contain pointers to each other -// C only allows such things to be declared if you pre-declare the typedef. -// -typedef struct EquationSystemParser_Ctx_struct EquationSystemParser, * pEquationSystemParser; - - - -#ifdef ANTLR3_WINDOWS -// Disable: Unreferenced parameter, - Rules with parameters that are not used -// constant conditional, - ANTLR realizes that a prediction is always true (synpred usually) -// initialized but unused variable - tree rewrite variables declared but not needed -// Unreferenced local variable - lexer rule declares but does not always use _type -// potentially unitialized variable used - retval always returned from a rule -// unreferenced local function has been removed - susually getTokenNames or freeScope, they can go without warnigns -// -// These are only really displayed at warning level /W4 but that is the code ideal I am aiming at -// and the codegen must generate some of these warnings by necessity, apart from 4100, which is -// usually generated when a parser rule is given a parameter that it does not use. Mostly though -// this is a matter of orthogonality hence I disable that one. -// -#pragma warning( disable : 4100 ) -#pragma warning( disable : 4101 ) -#pragma warning( disable : 4127 ) -#pragma warning( disable : 4189 ) -#pragma warning( disable : 4505 ) -#pragma warning( disable : 4701 ) -#endif - -/* ======================== - * BACKTRACKING IS ENABLED - * ======================== - */ - -typedef struct EquationSystemParser_equation_system_return_struct -{ - /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees - */ - pANTLR3_COMMON_TOKEN start; - pANTLR3_COMMON_TOKEN stop; - pANTLR3_BASE_TREE tree; - -} - EquationSystemParser_equation_system_return; - - - -typedef struct EquationSystemParser_equation_return_struct -{ - /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees - */ - pANTLR3_COMMON_TOKEN start; - pANTLR3_COMMON_TOKEN stop; - pANTLR3_BASE_TREE tree; - -} - EquationSystemParser_equation_return; - - - -typedef struct EquationSystemParser_maxExpr_return_struct -{ - /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees - */ - pANTLR3_COMMON_TOKEN start; - pANTLR3_COMMON_TOKEN stop; - pANTLR3_BASE_TREE tree; - -} - EquationSystemParser_maxExpr_return; - - - -typedef struct EquationSystemParser_minExpr_return_struct -{ - /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees - */ - pANTLR3_COMMON_TOKEN start; - pANTLR3_COMMON_TOKEN stop; - pANTLR3_BASE_TREE tree; - -} - EquationSystemParser_minExpr_return; - - - -typedef struct EquationSystemParser_expr_return_struct -{ - /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees - */ - pANTLR3_COMMON_TOKEN start; - pANTLR3_COMMON_TOKEN stop; - pANTLR3_BASE_TREE tree; - -} - EquationSystemParser_expr_return; - - - -typedef struct EquationSystemParser_term_return_struct -{ - /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees - */ - pANTLR3_COMMON_TOKEN start; - pANTLR3_COMMON_TOKEN stop; - pANTLR3_BASE_TREE tree; - -} - EquationSystemParser_term_return; - - - - -/** Context tracking structure for -EquationSystemParser - - */ -struct EquationSystemParser_Ctx_struct -{ - /** Built in ANTLR3 context tracker contains all the generic elements - * required for context tracking. - */ - pANTLR3_PARSER pParser; - - EquationSystemParser_equation_system_return - (*equation_system) (struct EquationSystemParser_Ctx_struct * ctx); - - EquationSystemParser_equation_return - (*equation) (struct EquationSystemParser_Ctx_struct * ctx); - - EquationSystemParser_maxExpr_return - (*maxExpr) (struct EquationSystemParser_Ctx_struct * ctx); - - EquationSystemParser_minExpr_return - (*minExpr) (struct EquationSystemParser_Ctx_struct * ctx); - - EquationSystemParser_expr_return - (*expr) (struct EquationSystemParser_Ctx_struct * ctx); - - EquationSystemParser_term_return - (*term) (struct EquationSystemParser_Ctx_struct * ctx); - - ANTLR3_BOOLEAN - (*synpred8_EquationSystem) (struct EquationSystemParser_Ctx_struct * ctx); - - ANTLR3_BOOLEAN - (*synpred12_EquationSystem) (struct EquationSystemParser_Ctx_struct * ctx); - // Delegated rules - - const char * (*getGrammarFileName)(); - void (*reset) (struct EquationSystemParser_Ctx_struct * ctx); - void (*free) (struct EquationSystemParser_Ctx_struct * ctx); -/* @headerFile.members() */ -pANTLR3_BASE_TREE_ADAPTOR adaptor; -pANTLR3_VECTOR_FACTORY vectors; -/* End @headerFile.members() */ -}; - -// Function protoypes for the constructor functions that external translation units -// such as delegators and delegates may wish to call. -// -ANTLR3_API pEquationSystemParser EquationSystemParserNew ( -pANTLR3_COMMON_TOKEN_STREAM - instream); -ANTLR3_API pEquationSystemParser EquationSystemParserNewSSD ( -pANTLR3_COMMON_TOKEN_STREAM - instream, pANTLR3_RECOGNIZER_SHARED_STATE state); - -/** Symbolic definitions of all the tokens that the -parser - will work with. - * \{ - * - * Antlr will define EOF, but we can't use that as it it is too common in - * in C header files and that would be confusing. There is no way to filter this out at the moment - * so we just undef it here for now. That isn't the value we get back from C recognizers - * anyway. We are looking for ANTLR3_TOKEN_EOF. - */ -#ifdef EOF -#undef EOF -#endif -#ifdef Tokens -#undef Tokens -#endif -#define EOF -1 -#define T__19 19 -#define T__20 20 -#define T__21 21 -#define T__22 22 -#define COMMA 4 -#define DIGIT 5 -#define GREATER_EQUAL 6 -#define GUARD 7 -#define LETTER 8 -#define MAXIMUM 9 -#define MINIMUM 10 -#define MULT 11 -#define NEWLINE 12 -#define NUMBER 13 -#define PLUS 14 -#define QUESTION_MARK 15 -#define SUB 16 -#define VARIABLE 17 -#define WHITESPACE 18 -#ifdef EOF -#undef EOF -#define EOF ANTLR3_TOKEN_EOF -#endif - -#ifndef TOKENSOURCE -#define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource -#endif - -/* End of token definitions for EquationSystemParser - * ============================================================================= - */ -/** } */ - -#ifdef __cplusplus -} -#endif - -#endif - -/* END - Note:Keep extra line feed to satisfy UNIX systems */ diff --git a/impl/parser/EquationSystemParser.o b/impl/parser/EquationSystemParser.o deleted file mode 100644 index 2dcfc81..0000000 Binary files a/impl/parser/EquationSystemParser.o and /dev/null differ diff --git a/impl/systems/generate-long.py b/impl/systems/generate-long.py index 210ba1e..d2462b0 100644 --- a/impl/systems/generate-long.py +++ b/impl/systems/generate-long.py @@ -1,4 +1,4 @@ -print 'x0 = 0' -for i in xrange(100000): +for i in reversed(xrange(10000)): print 'x' + str(i+1) + " = x" + str(i) +print 'x0 = 0' diff --git a/impl/systems/gmon.out b/impl/systems/gmon.out deleted file mode 100644 index 44a1520..0000000 Binary files a/impl/systems/gmon.out and /dev/null differ diff --git a/impl/systems/long-fixpoint.eqns b/impl/systems/long-fixpoint.eqns index 5838910..c720bc0 100644 --- a/impl/systems/long-fixpoint.eqns +++ b/impl/systems/long-fixpoint.eqns @@ -1,10001 +1,10001 @@ -x0 = 0 -x1 = x0 -x2 = x1 -x3 = x2 -x4 = x3 -x5 = x4 -x6 = x5 -x7 = x6 -x8 = x7 -x9 = x8 -x10 = x9 -x11 = x10 -x12 = x11 -x13 = x12 -x14 = x13 -x15 = x14 -x16 = x15 -x17 = x16 -x18 = x17 -x19 = x18 -x20 = x19 -x21 = x20 -x22 = x21 -x23 = x22 -x24 = x23 -x25 = x24 -x26 = x25 -x27 = x26 -x28 = x27 -x29 = x28 -x30 = x29 -x31 = x30 -x32 = x31 -x33 = x32 -x34 = x33 -x35 = x34 -x36 = x35 -x37 = x36 -x38 = x37 -x39 = x38 -x40 = x39 -x41 = x40 -x42 = x41 -x43 = x42 -x44 = x43 -x45 = x44 -x46 = x45 -x47 = x46 -x48 = x47 -x49 = x48 -x50 = x49 -x51 = x50 -x52 = x51 -x53 = x52 -x54 = x53 -x55 = x54 -x56 = x55 -x57 = x56 -x58 = x57 -x59 = x58 -x60 = x59 -x61 = x60 -x62 = x61 -x63 = x62 -x64 = x63 -x65 = x64 -x66 = x65 -x67 = x66 -x68 = x67 -x69 = x68 -x70 = x69 -x71 = x70 -x72 = x71 -x73 = x72 -x74 = x73 -x75 = x74 -x76 = x75 -x77 = x76 -x78 = x77 -x79 = x78 -x80 = x79 -x81 = x80 -x82 = x81 -x83 = x82 -x84 = x83 -x85 = x84 -x86 = x85 -x87 = x86 -x88 = x87 -x89 = x88 -x90 = x89 -x91 = x90 -x92 = x91 -x93 = x92 -x94 = x93 -x95 = x94 -x96 = x95 -x97 = x96 -x98 = x97 -x99 = x98 -x100 = x99 -x101 = x100 -x102 = x101 -x103 = x102 -x104 = x103 -x105 = x104 -x106 = x105 -x107 = x106 -x108 = x107 -x109 = x108 -x110 = x109 -x111 = x110 -x112 = x111 -x113 = x112 -x114 = x113 -x115 = x114 -x116 = x115 -x117 = x116 -x118 = x117 -x119 = x118 -x120 = x119 -x121 = x120 -x122 = x121 -x123 = x122 -x124 = x123 -x125 = x124 -x126 = x125 -x127 = x126 -x128 = x127 -x129 = x128 -x130 = x129 -x131 = x130 -x132 = x131 -x133 = x132 -x134 = x133 -x135 = x134 -x136 = x135 -x137 = x136 -x138 = x137 -x139 = x138 -x140 = x139 -x141 = x140 -x142 = x141 -x143 = x142 -x144 = x143 -x145 = x144 -x146 = x145 -x147 = x146 -x148 = x147 -x149 = x148 -x150 = x149 -x151 = x150 -x152 = x151 -x153 = x152 -x154 = x153 -x155 = x154 -x156 = x155 -x157 = x156 -x158 = x157 -x159 = x158 -x160 = x159 -x161 = x160 -x162 = x161 -x163 = x162 -x164 = x163 -x165 = x164 -x166 = x165 -x167 = x166 -x168 = x167 -x169 = x168 -x170 = x169 -x171 = x170 -x172 = x171 -x173 = x172 -x174 = x173 -x175 = x174 -x176 = x175 -x177 = x176 -x178 = x177 -x179 = x178 -x180 = x179 -x181 = x180 -x182 = x181 -x183 = x182 -x184 = x183 -x185 = x184 -x186 = x185 -x187 = x186 -x188 = x187 -x189 = x188 -x190 = x189 -x191 = x190 -x192 = x191 -x193 = x192 -x194 = x193 -x195 = x194 -x196 = x195 -x197 = x196 -x198 = x197 -x199 = x198 -x200 = x199 -x201 = x200 -x202 = x201 -x203 = x202 -x204 = x203 -x205 = x204 -x206 = x205 -x207 = x206 -x208 = x207 -x209 = x208 -x210 = x209 -x211 = x210 -x212 = x211 -x213 = x212 -x214 = x213 -x215 = x214 -x216 = x215 -x217 = x216 -x218 = x217 -x219 = x218 -x220 = x219 -x221 = x220 -x222 = x221 -x223 = x222 -x224 = x223 -x225 = x224 -x226 = x225 -x227 = x226 -x228 = x227 -x229 = x228 -x230 = x229 -x231 = x230 -x232 = x231 -x233 = x232 -x234 = x233 -x235 = x234 -x236 = x235 -x237 = x236 -x238 = x237 -x239 = x238 -x240 = x239 -x241 = x240 -x242 = x241 -x243 = x242 -x244 = x243 -x245 = x244 -x246 = x245 -x247 = x246 -x248 = x247 -x249 = x248 -x250 = x249 -x251 = x250 -x252 = x251 -x253 = x252 -x254 = x253 -x255 = x254 -x256 = x255 -x257 = x256 -x258 = x257 -x259 = x258 -x260 = x259 -x261 = x260 -x262 = x261 -x263 = x262 -x264 = x263 -x265 = x264 -x266 = x265 -x267 = x266 -x268 = x267 -x269 = x268 -x270 = x269 -x271 = x270 -x272 = x271 -x273 = x272 -x274 = x273 -x275 = x274 -x276 = x275 -x277 = x276 -x278 = x277 -x279 = x278 -x280 = x279 -x281 = x280 -x282 = x281 -x283 = x282 -x284 = x283 -x285 = x284 -x286 = x285 -x287 = x286 -x288 = x287 -x289 = x288 -x290 = x289 -x291 = x290 -x292 = x291 -x293 = x292 -x294 = x293 -x295 = x294 -x296 = x295 -x297 = x296 -x298 = x297 -x299 = x298 -x300 = x299 -x301 = x300 -x302 = x301 -x303 = x302 -x304 = x303 -x305 = x304 -x306 = x305 -x307 = x306 -x308 = x307 -x309 = x308 -x310 = x309 -x311 = x310 -x312 = x311 -x313 = x312 -x314 = x313 -x315 = x314 -x316 = x315 -x317 = x316 -x318 = x317 -x319 = x318 -x320 = x319 -x321 = x320 -x322 = x321 -x323 = x322 -x324 = x323 -x325 = x324 -x326 = x325 -x327 = x326 -x328 = x327 -x329 = x328 -x330 = x329 -x331 = x330 -x332 = x331 -x333 = x332 -x334 = x333 -x335 = x334 -x336 = x335 -x337 = x336 -x338 = x337 -x339 = x338 -x340 = x339 -x341 = x340 -x342 = x341 -x343 = x342 -x344 = x343 -x345 = x344 -x346 = x345 -x347 = x346 -x348 = x347 -x349 = x348 -x350 = x349 -x351 = x350 -x352 = x351 -x353 = x352 -x354 = x353 -x355 = x354 -x356 = x355 -x357 = x356 -x358 = x357 -x359 = x358 -x360 = x359 -x361 = x360 -x362 = x361 -x363 = x362 -x364 = x363 -x365 = x364 -x366 = x365 -x367 = x366 -x368 = x367 -x369 = x368 -x370 = x369 -x371 = x370 -x372 = x371 -x373 = x372 -x374 = x373 -x375 = x374 -x376 = x375 -x377 = x376 -x378 = x377 -x379 = x378 -x380 = x379 -x381 = x380 -x382 = x381 -x383 = x382 -x384 = x383 -x385 = x384 -x386 = x385 -x387 = x386 -x388 = x387 -x389 = x388 -x390 = x389 -x391 = x390 -x392 = x391 -x393 = x392 -x394 = x393 -x395 = x394 -x396 = x395 -x397 = x396 -x398 = x397 -x399 = x398 -x400 = x399 -x401 = x400 -x402 = x401 -x403 = x402 -x404 = x403 -x405 = x404 -x406 = x405 -x407 = x406 -x408 = x407 -x409 = x408 -x410 = x409 -x411 = x410 -x412 = x411 -x413 = x412 -x414 = x413 -x415 = x414 -x416 = x415 -x417 = x416 -x418 = x417 -x419 = x418 -x420 = x419 -x421 = x420 -x422 = x421 -x423 = x422 -x424 = x423 -x425 = x424 -x426 = x425 -x427 = x426 -x428 = x427 -x429 = x428 -x430 = x429 -x431 = x430 -x432 = x431 -x433 = x432 -x434 = x433 -x435 = x434 -x436 = x435 -x437 = x436 -x438 = x437 -x439 = x438 -x440 = x439 -x441 = x440 -x442 = x441 -x443 = x442 -x444 = x443 -x445 = x444 -x446 = x445 -x447 = x446 -x448 = x447 -x449 = x448 -x450 = x449 -x451 = x450 -x452 = x451 -x453 = x452 -x454 = x453 -x455 = x454 -x456 = x455 -x457 = x456 -x458 = x457 -x459 = x458 -x460 = x459 -x461 = x460 -x462 = x461 -x463 = x462 -x464 = x463 -x465 = x464 -x466 = x465 -x467 = x466 -x468 = x467 -x469 = x468 -x470 = x469 -x471 = x470 -x472 = x471 -x473 = x472 -x474 = x473 -x475 = x474 -x476 = x475 -x477 = x476 -x478 = x477 -x479 = x478 -x480 = x479 -x481 = x480 -x482 = x481 -x483 = x482 -x484 = x483 -x485 = x484 -x486 = x485 -x487 = x486 -x488 = x487 -x489 = x488 -x490 = x489 -x491 = x490 -x492 = x491 -x493 = x492 -x494 = x493 -x495 = x494 -x496 = x495 -x497 = x496 -x498 = x497 -x499 = x498 -x500 = x499 -x501 = x500 -x502 = x501 -x503 = x502 -x504 = x503 -x505 = x504 -x506 = x505 -x507 = x506 -x508 = x507 -x509 = x508 -x510 = x509 -x511 = x510 -x512 = x511 -x513 = x512 -x514 = x513 -x515 = x514 -x516 = x515 -x517 = x516 -x518 = x517 -x519 = x518 -x520 = x519 -x521 = x520 -x522 = x521 -x523 = x522 -x524 = x523 -x525 = x524 -x526 = x525 -x527 = x526 -x528 = x527 -x529 = x528 -x530 = x529 -x531 = x530 -x532 = x531 -x533 = x532 -x534 = x533 -x535 = x534 -x536 = x535 -x537 = x536 -x538 = x537 -x539 = x538 -x540 = x539 -x541 = x540 -x542 = x541 -x543 = x542 -x544 = x543 -x545 = x544 -x546 = x545 -x547 = x546 -x548 = x547 -x549 = x548 -x550 = x549 -x551 = x550 -x552 = x551 -x553 = x552 -x554 = x553 -x555 = x554 -x556 = x555 -x557 = x556 -x558 = x557 -x559 = x558 -x560 = x559 -x561 = x560 -x562 = x561 -x563 = x562 -x564 = x563 -x565 = x564 -x566 = x565 -x567 = x566 -x568 = x567 -x569 = x568 -x570 = x569 -x571 = x570 -x572 = x571 -x573 = x572 -x574 = x573 -x575 = x574 -x576 = x575 -x577 = x576 -x578 = x577 -x579 = x578 -x580 = x579 -x581 = x580 -x582 = x581 -x583 = x582 -x584 = x583 -x585 = x584 -x586 = x585 -x587 = x586 -x588 = x587 -x589 = x588 -x590 = x589 -x591 = x590 -x592 = x591 -x593 = x592 -x594 = x593 -x595 = x594 -x596 = x595 -x597 = x596 -x598 = x597 -x599 = x598 -x600 = x599 -x601 = x600 -x602 = x601 -x603 = x602 -x604 = x603 -x605 = x604 -x606 = x605 -x607 = x606 -x608 = x607 -x609 = x608 -x610 = x609 -x611 = x610 -x612 = x611 -x613 = x612 -x614 = x613 -x615 = x614 -x616 = x615 -x617 = x616 -x618 = x617 -x619 = x618 -x620 = x619 -x621 = x620 -x622 = x621 -x623 = x622 -x624 = x623 -x625 = x624 -x626 = x625 -x627 = x626 -x628 = x627 -x629 = x628 -x630 = x629 -x631 = x630 -x632 = x631 -x633 = x632 -x634 = x633 -x635 = x634 -x636 = x635 -x637 = x636 -x638 = x637 -x639 = x638 -x640 = x639 -x641 = x640 -x642 = x641 -x643 = x642 -x644 = x643 -x645 = x644 -x646 = x645 -x647 = x646 -x648 = x647 -x649 = x648 -x650 = x649 -x651 = x650 -x652 = x651 -x653 = x652 -x654 = x653 -x655 = x654 -x656 = x655 -x657 = x656 -x658 = x657 -x659 = x658 -x660 = x659 -x661 = x660 -x662 = x661 -x663 = x662 -x664 = x663 -x665 = x664 -x666 = x665 -x667 = x666 -x668 = x667 -x669 = x668 -x670 = x669 -x671 = x670 -x672 = x671 -x673 = x672 -x674 = x673 -x675 = x674 -x676 = x675 -x677 = x676 -x678 = x677 -x679 = x678 -x680 = x679 -x681 = x680 -x682 = x681 -x683 = x682 -x684 = x683 -x685 = x684 -x686 = x685 -x687 = x686 -x688 = x687 -x689 = x688 -x690 = x689 -x691 = x690 -x692 = x691 -x693 = x692 -x694 = x693 -x695 = x694 -x696 = x695 -x697 = x696 -x698 = x697 -x699 = x698 -x700 = x699 -x701 = x700 -x702 = x701 -x703 = x702 -x704 = x703 -x705 = x704 -x706 = x705 -x707 = x706 -x708 = x707 -x709 = x708 -x710 = x709 -x711 = x710 -x712 = x711 -x713 = x712 -x714 = x713 -x715 = x714 -x716 = x715 -x717 = x716 -x718 = x717 -x719 = x718 -x720 = x719 -x721 = x720 -x722 = x721 -x723 = x722 -x724 = x723 -x725 = x724 -x726 = x725 -x727 = x726 -x728 = x727 -x729 = x728 -x730 = x729 -x731 = x730 -x732 = x731 -x733 = x732 -x734 = x733 -x735 = x734 -x736 = x735 -x737 = x736 -x738 = x737 -x739 = x738 -x740 = x739 -x741 = x740 -x742 = x741 -x743 = x742 -x744 = x743 -x745 = x744 -x746 = x745 -x747 = x746 -x748 = x747 -x749 = x748 -x750 = x749 -x751 = x750 -x752 = x751 -x753 = x752 -x754 = x753 -x755 = x754 -x756 = x755 -x757 = x756 -x758 = x757 -x759 = x758 -x760 = x759 -x761 = x760 -x762 = x761 -x763 = x762 -x764 = x763 -x765 = x764 -x766 = x765 -x767 = x766 -x768 = x767 -x769 = x768 -x770 = x769 -x771 = x770 -x772 = x771 -x773 = x772 -x774 = x773 -x775 = x774 -x776 = x775 -x777 = x776 -x778 = x777 -x779 = x778 -x780 = x779 -x781 = x780 -x782 = x781 -x783 = x782 -x784 = x783 -x785 = x784 -x786 = x785 -x787 = x786 -x788 = x787 -x789 = x788 -x790 = x789 -x791 = x790 -x792 = x791 -x793 = x792 -x794 = x793 -x795 = x794 -x796 = x795 -x797 = x796 -x798 = x797 -x799 = x798 -x800 = x799 -x801 = x800 -x802 = x801 -x803 = x802 -x804 = x803 -x805 = x804 -x806 = x805 -x807 = x806 -x808 = x807 -x809 = x808 -x810 = x809 -x811 = x810 -x812 = x811 -x813 = x812 -x814 = x813 -x815 = x814 -x816 = x815 -x817 = x816 -x818 = x817 -x819 = x818 -x820 = x819 -x821 = x820 -x822 = x821 -x823 = x822 -x824 = x823 -x825 = x824 -x826 = x825 -x827 = x826 -x828 = x827 -x829 = x828 -x830 = x829 -x831 = x830 -x832 = x831 -x833 = x832 -x834 = x833 -x835 = x834 -x836 = x835 -x837 = x836 -x838 = x837 -x839 = x838 -x840 = x839 -x841 = x840 -x842 = x841 -x843 = x842 -x844 = x843 -x845 = x844 -x846 = x845 -x847 = x846 -x848 = x847 -x849 = x848 -x850 = x849 -x851 = x850 -x852 = x851 -x853 = x852 -x854 = x853 -x855 = x854 -x856 = x855 -x857 = x856 -x858 = x857 -x859 = x858 -x860 = x859 -x861 = x860 -x862 = x861 -x863 = x862 -x864 = x863 -x865 = x864 -x866 = x865 -x867 = x866 -x868 = x867 -x869 = x868 -x870 = x869 -x871 = x870 -x872 = x871 -x873 = x872 -x874 = x873 -x875 = x874 -x876 = x875 -x877 = x876 -x878 = x877 -x879 = x878 -x880 = x879 -x881 = x880 -x882 = x881 -x883 = x882 -x884 = x883 -x885 = x884 -x886 = x885 -x887 = x886 -x888 = x887 -x889 = x888 -x890 = x889 -x891 = x890 -x892 = x891 -x893 = x892 -x894 = x893 -x895 = x894 -x896 = x895 -x897 = x896 -x898 = x897 -x899 = x898 -x900 = x899 -x901 = x900 -x902 = x901 -x903 = x902 -x904 = x903 -x905 = x904 -x906 = x905 -x907 = x906 -x908 = x907 -x909 = x908 -x910 = x909 -x911 = x910 -x912 = x911 -x913 = x912 -x914 = x913 -x915 = x914 -x916 = x915 -x917 = x916 -x918 = x917 -x919 = x918 -x920 = x919 -x921 = x920 -x922 = x921 -x923 = x922 -x924 = x923 -x925 = x924 -x926 = x925 -x927 = x926 -x928 = x927 -x929 = x928 -x930 = x929 -x931 = x930 -x932 = x931 -x933 = x932 -x934 = x933 -x935 = x934 -x936 = x935 -x937 = x936 -x938 = x937 -x939 = x938 -x940 = x939 -x941 = x940 -x942 = x941 -x943 = x942 -x944 = x943 -x945 = x944 -x946 = x945 -x947 = x946 -x948 = x947 -x949 = x948 -x950 = x949 -x951 = x950 -x952 = x951 -x953 = x952 -x954 = x953 -x955 = x954 -x956 = x955 -x957 = x956 -x958 = x957 -x959 = x958 -x960 = x959 -x961 = x960 -x962 = x961 -x963 = x962 -x964 = x963 -x965 = x964 -x966 = x965 -x967 = x966 -x968 = x967 -x969 = x968 -x970 = x969 -x971 = x970 -x972 = x971 -x973 = x972 -x974 = x973 -x975 = x974 -x976 = x975 -x977 = x976 -x978 = x977 -x979 = x978 -x980 = x979 -x981 = x980 -x982 = x981 -x983 = x982 -x984 = x983 -x985 = x984 -x986 = x985 -x987 = x986 -x988 = x987 -x989 = x988 -x990 = x989 -x991 = x990 -x992 = x991 -x993 = x992 -x994 = x993 -x995 = x994 -x996 = x995 -x997 = x996 -x998 = x997 -x999 = x998 -x1000 = x999 -x1001 = x1000 -x1002 = x1001 -x1003 = x1002 -x1004 = x1003 -x1005 = x1004 -x1006 = x1005 -x1007 = x1006 -x1008 = x1007 -x1009 = x1008 -x1010 = x1009 -x1011 = x1010 -x1012 = x1011 -x1013 = x1012 -x1014 = x1013 -x1015 = x1014 -x1016 = x1015 -x1017 = x1016 -x1018 = x1017 -x1019 = x1018 -x1020 = x1019 -x1021 = x1020 -x1022 = x1021 -x1023 = x1022 -x1024 = x1023 -x1025 = x1024 -x1026 = x1025 -x1027 = x1026 -x1028 = x1027 -x1029 = x1028 -x1030 = x1029 -x1031 = x1030 -x1032 = x1031 -x1033 = x1032 -x1034 = x1033 -x1035 = x1034 -x1036 = x1035 -x1037 = x1036 -x1038 = x1037 -x1039 = x1038 -x1040 = x1039 -x1041 = x1040 -x1042 = x1041 -x1043 = x1042 -x1044 = x1043 -x1045 = x1044 -x1046 = x1045 -x1047 = x1046 -x1048 = x1047 -x1049 = x1048 -x1050 = x1049 -x1051 = x1050 -x1052 = x1051 -x1053 = x1052 -x1054 = x1053 -x1055 = x1054 -x1056 = x1055 -x1057 = x1056 -x1058 = x1057 -x1059 = x1058 -x1060 = x1059 -x1061 = x1060 -x1062 = x1061 -x1063 = x1062 -x1064 = x1063 -x1065 = x1064 -x1066 = x1065 -x1067 = x1066 -x1068 = x1067 -x1069 = x1068 -x1070 = x1069 -x1071 = x1070 -x1072 = x1071 -x1073 = x1072 -x1074 = x1073 -x1075 = x1074 -x1076 = x1075 -x1077 = x1076 -x1078 = x1077 -x1079 = x1078 -x1080 = x1079 -x1081 = x1080 -x1082 = x1081 -x1083 = x1082 -x1084 = x1083 -x1085 = x1084 -x1086 = x1085 -x1087 = x1086 -x1088 = x1087 -x1089 = x1088 -x1090 = x1089 -x1091 = x1090 -x1092 = x1091 -x1093 = x1092 -x1094 = x1093 -x1095 = x1094 -x1096 = x1095 -x1097 = x1096 -x1098 = x1097 -x1099 = x1098 -x1100 = x1099 -x1101 = x1100 -x1102 = x1101 -x1103 = x1102 -x1104 = x1103 -x1105 = x1104 -x1106 = x1105 -x1107 = x1106 -x1108 = x1107 -x1109 = x1108 -x1110 = x1109 -x1111 = x1110 -x1112 = x1111 -x1113 = x1112 -x1114 = x1113 -x1115 = x1114 -x1116 = x1115 -x1117 = x1116 -x1118 = x1117 -x1119 = x1118 -x1120 = x1119 -x1121 = x1120 -x1122 = x1121 -x1123 = x1122 -x1124 = x1123 -x1125 = x1124 -x1126 = x1125 -x1127 = x1126 -x1128 = x1127 -x1129 = x1128 -x1130 = x1129 -x1131 = x1130 -x1132 = x1131 -x1133 = x1132 -x1134 = x1133 -x1135 = x1134 -x1136 = x1135 -x1137 = x1136 -x1138 = x1137 -x1139 = x1138 -x1140 = x1139 -x1141 = x1140 -x1142 = x1141 -x1143 = x1142 -x1144 = x1143 -x1145 = x1144 -x1146 = x1145 -x1147 = x1146 -x1148 = x1147 -x1149 = x1148 -x1150 = x1149 -x1151 = x1150 -x1152 = x1151 -x1153 = x1152 -x1154 = x1153 -x1155 = x1154 -x1156 = x1155 -x1157 = x1156 -x1158 = x1157 -x1159 = x1158 -x1160 = x1159 -x1161 = x1160 -x1162 = x1161 -x1163 = x1162 -x1164 = x1163 -x1165 = x1164 -x1166 = x1165 -x1167 = x1166 -x1168 = x1167 -x1169 = x1168 -x1170 = x1169 -x1171 = x1170 -x1172 = x1171 -x1173 = x1172 -x1174 = x1173 -x1175 = x1174 -x1176 = x1175 -x1177 = x1176 -x1178 = x1177 -x1179 = x1178 -x1180 = x1179 -x1181 = x1180 -x1182 = x1181 -x1183 = x1182 -x1184 = x1183 -x1185 = x1184 -x1186 = x1185 -x1187 = x1186 -x1188 = x1187 -x1189 = x1188 -x1190 = x1189 -x1191 = x1190 -x1192 = x1191 -x1193 = x1192 -x1194 = x1193 -x1195 = x1194 -x1196 = x1195 -x1197 = x1196 -x1198 = x1197 -x1199 = x1198 -x1200 = x1199 -x1201 = x1200 -x1202 = x1201 -x1203 = x1202 -x1204 = x1203 -x1205 = x1204 -x1206 = x1205 -x1207 = x1206 -x1208 = x1207 -x1209 = x1208 -x1210 = x1209 -x1211 = x1210 -x1212 = x1211 -x1213 = x1212 -x1214 = x1213 -x1215 = x1214 -x1216 = x1215 -x1217 = x1216 -x1218 = x1217 -x1219 = x1218 -x1220 = x1219 -x1221 = x1220 -x1222 = x1221 -x1223 = x1222 -x1224 = x1223 -x1225 = x1224 -x1226 = x1225 -x1227 = x1226 -x1228 = x1227 -x1229 = x1228 -x1230 = x1229 -x1231 = x1230 -x1232 = x1231 -x1233 = x1232 -x1234 = x1233 -x1235 = x1234 -x1236 = x1235 -x1237 = x1236 -x1238 = x1237 -x1239 = x1238 -x1240 = x1239 -x1241 = x1240 -x1242 = x1241 -x1243 = x1242 -x1244 = x1243 -x1245 = x1244 -x1246 = x1245 -x1247 = x1246 -x1248 = x1247 -x1249 = x1248 -x1250 = x1249 -x1251 = x1250 -x1252 = x1251 -x1253 = x1252 -x1254 = x1253 -x1255 = x1254 -x1256 = x1255 -x1257 = x1256 -x1258 = x1257 -x1259 = x1258 -x1260 = x1259 -x1261 = x1260 -x1262 = x1261 -x1263 = x1262 -x1264 = x1263 -x1265 = x1264 -x1266 = x1265 -x1267 = x1266 -x1268 = x1267 -x1269 = x1268 -x1270 = x1269 -x1271 = x1270 -x1272 = x1271 -x1273 = x1272 -x1274 = x1273 -x1275 = x1274 -x1276 = x1275 -x1277 = x1276 -x1278 = x1277 -x1279 = x1278 -x1280 = x1279 -x1281 = x1280 -x1282 = x1281 -x1283 = x1282 -x1284 = x1283 -x1285 = x1284 -x1286 = x1285 -x1287 = x1286 -x1288 = x1287 -x1289 = x1288 -x1290 = x1289 -x1291 = x1290 -x1292 = x1291 -x1293 = x1292 -x1294 = x1293 -x1295 = x1294 -x1296 = x1295 -x1297 = x1296 -x1298 = x1297 -x1299 = x1298 -x1300 = x1299 -x1301 = x1300 -x1302 = x1301 -x1303 = x1302 -x1304 = x1303 -x1305 = x1304 -x1306 = x1305 -x1307 = x1306 -x1308 = x1307 -x1309 = x1308 -x1310 = x1309 -x1311 = x1310 -x1312 = x1311 -x1313 = x1312 -x1314 = x1313 -x1315 = x1314 -x1316 = x1315 -x1317 = x1316 -x1318 = x1317 -x1319 = x1318 -x1320 = x1319 -x1321 = x1320 -x1322 = x1321 -x1323 = x1322 -x1324 = x1323 -x1325 = x1324 -x1326 = x1325 -x1327 = x1326 -x1328 = x1327 -x1329 = x1328 -x1330 = x1329 -x1331 = x1330 -x1332 = x1331 -x1333 = x1332 -x1334 = x1333 -x1335 = x1334 -x1336 = x1335 -x1337 = x1336 -x1338 = x1337 -x1339 = x1338 -x1340 = x1339 -x1341 = x1340 -x1342 = x1341 -x1343 = x1342 -x1344 = x1343 -x1345 = x1344 -x1346 = x1345 -x1347 = x1346 -x1348 = x1347 -x1349 = x1348 -x1350 = x1349 -x1351 = x1350 -x1352 = x1351 -x1353 = x1352 -x1354 = x1353 -x1355 = x1354 -x1356 = x1355 -x1357 = x1356 -x1358 = x1357 -x1359 = x1358 -x1360 = x1359 -x1361 = x1360 -x1362 = x1361 -x1363 = x1362 -x1364 = x1363 -x1365 = x1364 -x1366 = x1365 -x1367 = x1366 -x1368 = x1367 -x1369 = x1368 -x1370 = x1369 -x1371 = x1370 -x1372 = x1371 -x1373 = x1372 -x1374 = x1373 -x1375 = x1374 -x1376 = x1375 -x1377 = x1376 -x1378 = x1377 -x1379 = x1378 -x1380 = x1379 -x1381 = x1380 -x1382 = x1381 -x1383 = x1382 -x1384 = x1383 -x1385 = x1384 -x1386 = x1385 -x1387 = x1386 -x1388 = x1387 -x1389 = x1388 -x1390 = x1389 -x1391 = x1390 -x1392 = x1391 -x1393 = x1392 -x1394 = x1393 -x1395 = x1394 -x1396 = x1395 -x1397 = x1396 -x1398 = x1397 -x1399 = x1398 -x1400 = x1399 -x1401 = x1400 -x1402 = x1401 -x1403 = x1402 -x1404 = x1403 -x1405 = x1404 -x1406 = x1405 -x1407 = x1406 -x1408 = x1407 -x1409 = x1408 -x1410 = x1409 -x1411 = x1410 -x1412 = x1411 -x1413 = x1412 -x1414 = x1413 -x1415 = x1414 -x1416 = x1415 -x1417 = x1416 -x1418 = x1417 -x1419 = x1418 -x1420 = x1419 -x1421 = x1420 -x1422 = x1421 -x1423 = x1422 -x1424 = x1423 -x1425 = x1424 -x1426 = x1425 -x1427 = x1426 -x1428 = x1427 -x1429 = x1428 -x1430 = x1429 -x1431 = x1430 -x1432 = x1431 -x1433 = x1432 -x1434 = x1433 -x1435 = x1434 -x1436 = x1435 -x1437 = x1436 -x1438 = x1437 -x1439 = x1438 -x1440 = x1439 -x1441 = x1440 -x1442 = x1441 -x1443 = x1442 -x1444 = x1443 -x1445 = x1444 -x1446 = x1445 -x1447 = x1446 -x1448 = x1447 -x1449 = x1448 -x1450 = x1449 -x1451 = x1450 -x1452 = x1451 -x1453 = x1452 -x1454 = x1453 -x1455 = x1454 -x1456 = x1455 -x1457 = x1456 -x1458 = x1457 -x1459 = x1458 -x1460 = x1459 -x1461 = x1460 -x1462 = x1461 -x1463 = x1462 -x1464 = x1463 -x1465 = x1464 -x1466 = x1465 -x1467 = x1466 -x1468 = x1467 -x1469 = x1468 -x1470 = x1469 -x1471 = x1470 -x1472 = x1471 -x1473 = x1472 -x1474 = x1473 -x1475 = x1474 -x1476 = x1475 -x1477 = x1476 -x1478 = x1477 -x1479 = x1478 -x1480 = x1479 -x1481 = x1480 -x1482 = x1481 -x1483 = x1482 -x1484 = x1483 -x1485 = x1484 -x1486 = x1485 -x1487 = x1486 -x1488 = x1487 -x1489 = x1488 -x1490 = x1489 -x1491 = x1490 -x1492 = x1491 -x1493 = x1492 -x1494 = x1493 -x1495 = x1494 -x1496 = x1495 -x1497 = x1496 -x1498 = x1497 -x1499 = x1498 -x1500 = x1499 -x1501 = x1500 -x1502 = x1501 -x1503 = x1502 -x1504 = x1503 -x1505 = x1504 -x1506 = x1505 -x1507 = x1506 -x1508 = x1507 -x1509 = x1508 -x1510 = x1509 -x1511 = x1510 -x1512 = x1511 -x1513 = x1512 -x1514 = x1513 -x1515 = x1514 -x1516 = x1515 -x1517 = x1516 -x1518 = x1517 -x1519 = x1518 -x1520 = x1519 -x1521 = x1520 -x1522 = x1521 -x1523 = x1522 -x1524 = x1523 -x1525 = x1524 -x1526 = x1525 -x1527 = x1526 -x1528 = x1527 -x1529 = x1528 -x1530 = x1529 -x1531 = x1530 -x1532 = x1531 -x1533 = x1532 -x1534 = x1533 -x1535 = x1534 -x1536 = x1535 -x1537 = x1536 -x1538 = x1537 -x1539 = x1538 -x1540 = x1539 -x1541 = x1540 -x1542 = x1541 -x1543 = x1542 -x1544 = x1543 -x1545 = x1544 -x1546 = x1545 -x1547 = x1546 -x1548 = x1547 -x1549 = x1548 -x1550 = x1549 -x1551 = x1550 -x1552 = x1551 -x1553 = x1552 -x1554 = x1553 -x1555 = x1554 -x1556 = x1555 -x1557 = x1556 -x1558 = x1557 -x1559 = x1558 -x1560 = x1559 -x1561 = x1560 -x1562 = x1561 -x1563 = x1562 -x1564 = x1563 -x1565 = x1564 -x1566 = x1565 -x1567 = x1566 -x1568 = x1567 -x1569 = x1568 -x1570 = x1569 -x1571 = x1570 -x1572 = x1571 -x1573 = x1572 -x1574 = x1573 -x1575 = x1574 -x1576 = x1575 -x1577 = x1576 -x1578 = x1577 -x1579 = x1578 -x1580 = x1579 -x1581 = x1580 -x1582 = x1581 -x1583 = x1582 -x1584 = x1583 -x1585 = x1584 -x1586 = x1585 -x1587 = x1586 -x1588 = x1587 -x1589 = x1588 -x1590 = x1589 -x1591 = x1590 -x1592 = x1591 -x1593 = x1592 -x1594 = x1593 -x1595 = x1594 -x1596 = x1595 -x1597 = x1596 -x1598 = x1597 -x1599 = x1598 -x1600 = x1599 -x1601 = x1600 -x1602 = x1601 -x1603 = x1602 -x1604 = x1603 -x1605 = x1604 -x1606 = x1605 -x1607 = x1606 -x1608 = x1607 -x1609 = x1608 -x1610 = x1609 -x1611 = x1610 -x1612 = x1611 -x1613 = x1612 -x1614 = x1613 -x1615 = x1614 -x1616 = x1615 -x1617 = x1616 -x1618 = x1617 -x1619 = x1618 -x1620 = x1619 -x1621 = x1620 -x1622 = x1621 -x1623 = x1622 -x1624 = x1623 -x1625 = x1624 -x1626 = x1625 -x1627 = x1626 -x1628 = x1627 -x1629 = x1628 -x1630 = x1629 -x1631 = x1630 -x1632 = x1631 -x1633 = x1632 -x1634 = x1633 -x1635 = x1634 -x1636 = x1635 -x1637 = x1636 -x1638 = x1637 -x1639 = x1638 -x1640 = x1639 -x1641 = x1640 -x1642 = x1641 -x1643 = x1642 -x1644 = x1643 -x1645 = x1644 -x1646 = x1645 -x1647 = x1646 -x1648 = x1647 -x1649 = x1648 -x1650 = x1649 -x1651 = x1650 -x1652 = x1651 -x1653 = x1652 -x1654 = x1653 -x1655 = x1654 -x1656 = x1655 -x1657 = x1656 -x1658 = x1657 -x1659 = x1658 -x1660 = x1659 -x1661 = x1660 -x1662 = x1661 -x1663 = x1662 -x1664 = x1663 -x1665 = x1664 -x1666 = x1665 -x1667 = x1666 -x1668 = x1667 -x1669 = x1668 -x1670 = x1669 -x1671 = x1670 -x1672 = x1671 -x1673 = x1672 -x1674 = x1673 -x1675 = x1674 -x1676 = x1675 -x1677 = x1676 -x1678 = x1677 -x1679 = x1678 -x1680 = x1679 -x1681 = x1680 -x1682 = x1681 -x1683 = x1682 -x1684 = x1683 -x1685 = x1684 -x1686 = x1685 -x1687 = x1686 -x1688 = x1687 -x1689 = x1688 -x1690 = x1689 -x1691 = x1690 -x1692 = x1691 -x1693 = x1692 -x1694 = x1693 -x1695 = x1694 -x1696 = x1695 -x1697 = x1696 -x1698 = x1697 -x1699 = x1698 -x1700 = x1699 -x1701 = x1700 -x1702 = x1701 -x1703 = x1702 -x1704 = x1703 -x1705 = x1704 -x1706 = x1705 -x1707 = x1706 -x1708 = x1707 -x1709 = x1708 -x1710 = x1709 -x1711 = x1710 -x1712 = x1711 -x1713 = x1712 -x1714 = x1713 -x1715 = x1714 -x1716 = x1715 -x1717 = x1716 -x1718 = x1717 -x1719 = x1718 -x1720 = x1719 -x1721 = x1720 -x1722 = x1721 -x1723 = x1722 -x1724 = x1723 -x1725 = x1724 -x1726 = x1725 -x1727 = x1726 -x1728 = x1727 -x1729 = x1728 -x1730 = x1729 -x1731 = x1730 -x1732 = x1731 -x1733 = x1732 -x1734 = x1733 -x1735 = x1734 -x1736 = x1735 -x1737 = x1736 -x1738 = x1737 -x1739 = x1738 -x1740 = x1739 -x1741 = x1740 -x1742 = x1741 -x1743 = x1742 -x1744 = x1743 -x1745 = x1744 -x1746 = x1745 -x1747 = x1746 -x1748 = x1747 -x1749 = x1748 -x1750 = x1749 -x1751 = x1750 -x1752 = x1751 -x1753 = x1752 -x1754 = x1753 -x1755 = x1754 -x1756 = x1755 -x1757 = x1756 -x1758 = x1757 -x1759 = x1758 -x1760 = x1759 -x1761 = x1760 -x1762 = x1761 -x1763 = x1762 -x1764 = x1763 -x1765 = x1764 -x1766 = x1765 -x1767 = x1766 -x1768 = x1767 -x1769 = x1768 -x1770 = x1769 -x1771 = x1770 -x1772 = x1771 -x1773 = x1772 -x1774 = x1773 -x1775 = x1774 -x1776 = x1775 -x1777 = x1776 -x1778 = x1777 -x1779 = x1778 -x1780 = x1779 -x1781 = x1780 -x1782 = x1781 -x1783 = x1782 -x1784 = x1783 -x1785 = x1784 -x1786 = x1785 -x1787 = x1786 -x1788 = x1787 -x1789 = x1788 -x1790 = x1789 -x1791 = x1790 -x1792 = x1791 -x1793 = x1792 -x1794 = x1793 -x1795 = x1794 -x1796 = x1795 -x1797 = x1796 -x1798 = x1797 -x1799 = x1798 -x1800 = x1799 -x1801 = x1800 -x1802 = x1801 -x1803 = x1802 -x1804 = x1803 -x1805 = x1804 -x1806 = x1805 -x1807 = x1806 -x1808 = x1807 -x1809 = x1808 -x1810 = x1809 -x1811 = x1810 -x1812 = x1811 -x1813 = x1812 -x1814 = x1813 -x1815 = x1814 -x1816 = x1815 -x1817 = x1816 -x1818 = x1817 -x1819 = x1818 -x1820 = x1819 -x1821 = x1820 -x1822 = x1821 -x1823 = x1822 -x1824 = x1823 -x1825 = x1824 -x1826 = x1825 -x1827 = x1826 -x1828 = x1827 -x1829 = x1828 -x1830 = x1829 -x1831 = x1830 -x1832 = x1831 -x1833 = x1832 -x1834 = x1833 -x1835 = x1834 -x1836 = x1835 -x1837 = x1836 -x1838 = x1837 -x1839 = x1838 -x1840 = x1839 -x1841 = x1840 -x1842 = x1841 -x1843 = x1842 -x1844 = x1843 -x1845 = x1844 -x1846 = x1845 -x1847 = x1846 -x1848 = x1847 -x1849 = x1848 -x1850 = x1849 -x1851 = x1850 -x1852 = x1851 -x1853 = x1852 -x1854 = x1853 -x1855 = x1854 -x1856 = x1855 -x1857 = x1856 -x1858 = x1857 -x1859 = x1858 -x1860 = x1859 -x1861 = x1860 -x1862 = x1861 -x1863 = x1862 -x1864 = x1863 -x1865 = x1864 -x1866 = x1865 -x1867 = x1866 -x1868 = x1867 -x1869 = x1868 -x1870 = x1869 -x1871 = x1870 -x1872 = x1871 -x1873 = x1872 -x1874 = x1873 -x1875 = x1874 -x1876 = x1875 -x1877 = x1876 -x1878 = x1877 -x1879 = x1878 -x1880 = x1879 -x1881 = x1880 -x1882 = x1881 -x1883 = x1882 -x1884 = x1883 -x1885 = x1884 -x1886 = x1885 -x1887 = x1886 -x1888 = x1887 -x1889 = x1888 -x1890 = x1889 -x1891 = x1890 -x1892 = x1891 -x1893 = x1892 -x1894 = x1893 -x1895 = x1894 -x1896 = x1895 -x1897 = x1896 -x1898 = x1897 -x1899 = x1898 -x1900 = x1899 -x1901 = x1900 -x1902 = x1901 -x1903 = x1902 -x1904 = x1903 -x1905 = x1904 -x1906 = x1905 -x1907 = x1906 -x1908 = x1907 -x1909 = x1908 -x1910 = x1909 -x1911 = x1910 -x1912 = x1911 -x1913 = x1912 -x1914 = x1913 -x1915 = x1914 -x1916 = x1915 -x1917 = x1916 -x1918 = x1917 -x1919 = x1918 -x1920 = x1919 -x1921 = x1920 -x1922 = x1921 -x1923 = x1922 -x1924 = x1923 -x1925 = x1924 -x1926 = x1925 -x1927 = x1926 -x1928 = x1927 -x1929 = x1928 -x1930 = x1929 -x1931 = x1930 -x1932 = x1931 -x1933 = x1932 -x1934 = x1933 -x1935 = x1934 -x1936 = x1935 -x1937 = x1936 -x1938 = x1937 -x1939 = x1938 -x1940 = x1939 -x1941 = x1940 -x1942 = x1941 -x1943 = x1942 -x1944 = x1943 -x1945 = x1944 -x1946 = x1945 -x1947 = x1946 -x1948 = x1947 -x1949 = x1948 -x1950 = x1949 -x1951 = x1950 -x1952 = x1951 -x1953 = x1952 -x1954 = x1953 -x1955 = x1954 -x1956 = x1955 -x1957 = x1956 -x1958 = x1957 -x1959 = x1958 -x1960 = x1959 -x1961 = x1960 -x1962 = x1961 -x1963 = x1962 -x1964 = x1963 -x1965 = x1964 -x1966 = x1965 -x1967 = x1966 -x1968 = x1967 -x1969 = x1968 -x1970 = x1969 -x1971 = x1970 -x1972 = x1971 -x1973 = x1972 -x1974 = x1973 -x1975 = x1974 -x1976 = x1975 -x1977 = x1976 -x1978 = x1977 -x1979 = x1978 -x1980 = x1979 -x1981 = x1980 -x1982 = x1981 -x1983 = x1982 -x1984 = x1983 -x1985 = x1984 -x1986 = x1985 -x1987 = x1986 -x1988 = x1987 -x1989 = x1988 -x1990 = x1989 -x1991 = x1990 -x1992 = x1991 -x1993 = x1992 -x1994 = x1993 -x1995 = x1994 -x1996 = x1995 -x1997 = x1996 -x1998 = x1997 -x1999 = x1998 -x2000 = x1999 -x2001 = x2000 -x2002 = x2001 -x2003 = x2002 -x2004 = x2003 -x2005 = x2004 -x2006 = x2005 -x2007 = x2006 -x2008 = x2007 -x2009 = x2008 -x2010 = x2009 -x2011 = x2010 -x2012 = x2011 -x2013 = x2012 -x2014 = x2013 -x2015 = x2014 -x2016 = x2015 -x2017 = x2016 -x2018 = x2017 -x2019 = x2018 -x2020 = x2019 -x2021 = x2020 -x2022 = x2021 -x2023 = x2022 -x2024 = x2023 -x2025 = x2024 -x2026 = x2025 -x2027 = x2026 -x2028 = x2027 -x2029 = x2028 -x2030 = x2029 -x2031 = x2030 -x2032 = x2031 -x2033 = x2032 -x2034 = x2033 -x2035 = x2034 -x2036 = x2035 -x2037 = x2036 -x2038 = x2037 -x2039 = x2038 -x2040 = x2039 -x2041 = x2040 -x2042 = x2041 -x2043 = x2042 -x2044 = x2043 -x2045 = x2044 -x2046 = x2045 -x2047 = x2046 -x2048 = x2047 -x2049 = x2048 -x2050 = x2049 -x2051 = x2050 -x2052 = x2051 -x2053 = x2052 -x2054 = x2053 -x2055 = x2054 -x2056 = x2055 -x2057 = x2056 -x2058 = x2057 -x2059 = x2058 -x2060 = x2059 -x2061 = x2060 -x2062 = x2061 -x2063 = x2062 -x2064 = x2063 -x2065 = x2064 -x2066 = x2065 -x2067 = x2066 -x2068 = x2067 -x2069 = x2068 -x2070 = x2069 -x2071 = x2070 -x2072 = x2071 -x2073 = x2072 -x2074 = x2073 -x2075 = x2074 -x2076 = x2075 -x2077 = x2076 -x2078 = x2077 -x2079 = x2078 -x2080 = x2079 -x2081 = x2080 -x2082 = x2081 -x2083 = x2082 -x2084 = x2083 -x2085 = x2084 -x2086 = x2085 -x2087 = x2086 -x2088 = x2087 -x2089 = x2088 -x2090 = x2089 -x2091 = x2090 -x2092 = x2091 -x2093 = x2092 -x2094 = x2093 -x2095 = x2094 -x2096 = x2095 -x2097 = x2096 -x2098 = x2097 -x2099 = x2098 -x2100 = x2099 -x2101 = x2100 -x2102 = x2101 -x2103 = x2102 -x2104 = x2103 -x2105 = x2104 -x2106 = x2105 -x2107 = x2106 -x2108 = x2107 -x2109 = x2108 -x2110 = x2109 -x2111 = x2110 -x2112 = x2111 -x2113 = x2112 -x2114 = x2113 -x2115 = x2114 -x2116 = x2115 -x2117 = x2116 -x2118 = x2117 -x2119 = x2118 -x2120 = x2119 -x2121 = x2120 -x2122 = x2121 -x2123 = x2122 -x2124 = x2123 -x2125 = x2124 -x2126 = x2125 -x2127 = x2126 -x2128 = x2127 -x2129 = x2128 -x2130 = x2129 -x2131 = x2130 -x2132 = x2131 -x2133 = x2132 -x2134 = x2133 -x2135 = x2134 -x2136 = x2135 -x2137 = x2136 -x2138 = x2137 -x2139 = x2138 -x2140 = x2139 -x2141 = x2140 -x2142 = x2141 -x2143 = x2142 -x2144 = x2143 -x2145 = x2144 -x2146 = x2145 -x2147 = x2146 -x2148 = x2147 -x2149 = x2148 -x2150 = x2149 -x2151 = x2150 -x2152 = x2151 -x2153 = x2152 -x2154 = x2153 -x2155 = x2154 -x2156 = x2155 -x2157 = x2156 -x2158 = x2157 -x2159 = x2158 -x2160 = x2159 -x2161 = x2160 -x2162 = x2161 -x2163 = x2162 -x2164 = x2163 -x2165 = x2164 -x2166 = x2165 -x2167 = x2166 -x2168 = x2167 -x2169 = x2168 -x2170 = x2169 -x2171 = x2170 -x2172 = x2171 -x2173 = x2172 -x2174 = x2173 -x2175 = x2174 -x2176 = x2175 -x2177 = x2176 -x2178 = x2177 -x2179 = x2178 -x2180 = x2179 -x2181 = x2180 -x2182 = x2181 -x2183 = x2182 -x2184 = x2183 -x2185 = x2184 -x2186 = x2185 -x2187 = x2186 -x2188 = x2187 -x2189 = x2188 -x2190 = x2189 -x2191 = x2190 -x2192 = x2191 -x2193 = x2192 -x2194 = x2193 -x2195 = x2194 -x2196 = x2195 -x2197 = x2196 -x2198 = x2197 -x2199 = x2198 -x2200 = x2199 -x2201 = x2200 -x2202 = x2201 -x2203 = x2202 -x2204 = x2203 -x2205 = x2204 -x2206 = x2205 -x2207 = x2206 -x2208 = x2207 -x2209 = x2208 -x2210 = x2209 -x2211 = x2210 -x2212 = x2211 -x2213 = x2212 -x2214 = x2213 -x2215 = x2214 -x2216 = x2215 -x2217 = x2216 -x2218 = x2217 -x2219 = x2218 -x2220 = x2219 -x2221 = x2220 -x2222 = x2221 -x2223 = x2222 -x2224 = x2223 -x2225 = x2224 -x2226 = x2225 -x2227 = x2226 -x2228 = x2227 -x2229 = x2228 -x2230 = x2229 -x2231 = x2230 -x2232 = x2231 -x2233 = x2232 -x2234 = x2233 -x2235 = x2234 -x2236 = x2235 -x2237 = x2236 -x2238 = x2237 -x2239 = x2238 -x2240 = x2239 -x2241 = x2240 -x2242 = x2241 -x2243 = x2242 -x2244 = x2243 -x2245 = x2244 -x2246 = x2245 -x2247 = x2246 -x2248 = x2247 -x2249 = x2248 -x2250 = x2249 -x2251 = x2250 -x2252 = x2251 -x2253 = x2252 -x2254 = x2253 -x2255 = x2254 -x2256 = x2255 -x2257 = x2256 -x2258 = x2257 -x2259 = x2258 -x2260 = x2259 -x2261 = x2260 -x2262 = x2261 -x2263 = x2262 -x2264 = x2263 -x2265 = x2264 -x2266 = x2265 -x2267 = x2266 -x2268 = x2267 -x2269 = x2268 -x2270 = x2269 -x2271 = x2270 -x2272 = x2271 -x2273 = x2272 -x2274 = x2273 -x2275 = x2274 -x2276 = x2275 -x2277 = x2276 -x2278 = x2277 -x2279 = x2278 -x2280 = x2279 -x2281 = x2280 -x2282 = x2281 -x2283 = x2282 -x2284 = x2283 -x2285 = x2284 -x2286 = x2285 -x2287 = x2286 -x2288 = x2287 -x2289 = x2288 -x2290 = x2289 -x2291 = x2290 -x2292 = x2291 -x2293 = x2292 -x2294 = x2293 -x2295 = x2294 -x2296 = x2295 -x2297 = x2296 -x2298 = x2297 -x2299 = x2298 -x2300 = x2299 -x2301 = x2300 -x2302 = x2301 -x2303 = x2302 -x2304 = x2303 -x2305 = x2304 -x2306 = x2305 -x2307 = x2306 -x2308 = x2307 -x2309 = x2308 -x2310 = x2309 -x2311 = x2310 -x2312 = x2311 -x2313 = x2312 -x2314 = x2313 -x2315 = x2314 -x2316 = x2315 -x2317 = x2316 -x2318 = x2317 -x2319 = x2318 -x2320 = x2319 -x2321 = x2320 -x2322 = x2321 -x2323 = x2322 -x2324 = x2323 -x2325 = x2324 -x2326 = x2325 -x2327 = x2326 -x2328 = x2327 -x2329 = x2328 -x2330 = x2329 -x2331 = x2330 -x2332 = x2331 -x2333 = x2332 -x2334 = x2333 -x2335 = x2334 -x2336 = x2335 -x2337 = x2336 -x2338 = x2337 -x2339 = x2338 -x2340 = x2339 -x2341 = x2340 -x2342 = x2341 -x2343 = x2342 -x2344 = x2343 -x2345 = x2344 -x2346 = x2345 -x2347 = x2346 -x2348 = x2347 -x2349 = x2348 -x2350 = x2349 -x2351 = x2350 -x2352 = x2351 -x2353 = x2352 -x2354 = x2353 -x2355 = x2354 -x2356 = x2355 -x2357 = x2356 -x2358 = x2357 -x2359 = x2358 -x2360 = x2359 -x2361 = x2360 -x2362 = x2361 -x2363 = x2362 -x2364 = x2363 -x2365 = x2364 -x2366 = x2365 -x2367 = x2366 -x2368 = x2367 -x2369 = x2368 -x2370 = x2369 -x2371 = x2370 -x2372 = x2371 -x2373 = x2372 -x2374 = x2373 -x2375 = x2374 -x2376 = x2375 -x2377 = x2376 -x2378 = x2377 -x2379 = x2378 -x2380 = x2379 -x2381 = x2380 -x2382 = x2381 -x2383 = x2382 -x2384 = x2383 -x2385 = x2384 -x2386 = x2385 -x2387 = x2386 -x2388 = x2387 -x2389 = x2388 -x2390 = x2389 -x2391 = x2390 -x2392 = x2391 -x2393 = x2392 -x2394 = x2393 -x2395 = x2394 -x2396 = x2395 -x2397 = x2396 -x2398 = x2397 -x2399 = x2398 -x2400 = x2399 -x2401 = x2400 -x2402 = x2401 -x2403 = x2402 -x2404 = x2403 -x2405 = x2404 -x2406 = x2405 -x2407 = x2406 -x2408 = x2407 -x2409 = x2408 -x2410 = x2409 -x2411 = x2410 -x2412 = x2411 -x2413 = x2412 -x2414 = x2413 -x2415 = x2414 -x2416 = x2415 -x2417 = x2416 -x2418 = x2417 -x2419 = x2418 -x2420 = x2419 -x2421 = x2420 -x2422 = x2421 -x2423 = x2422 -x2424 = x2423 -x2425 = x2424 -x2426 = x2425 -x2427 = x2426 -x2428 = x2427 -x2429 = x2428 -x2430 = x2429 -x2431 = x2430 -x2432 = x2431 -x2433 = x2432 -x2434 = x2433 -x2435 = x2434 -x2436 = x2435 -x2437 = x2436 -x2438 = x2437 -x2439 = x2438 -x2440 = x2439 -x2441 = x2440 -x2442 = x2441 -x2443 = x2442 -x2444 = x2443 -x2445 = x2444 -x2446 = x2445 -x2447 = x2446 -x2448 = x2447 -x2449 = x2448 -x2450 = x2449 -x2451 = x2450 -x2452 = x2451 -x2453 = x2452 -x2454 = x2453 -x2455 = x2454 -x2456 = x2455 -x2457 = x2456 -x2458 = x2457 -x2459 = x2458 -x2460 = x2459 -x2461 = x2460 -x2462 = x2461 -x2463 = x2462 -x2464 = x2463 -x2465 = x2464 -x2466 = x2465 -x2467 = x2466 -x2468 = x2467 -x2469 = x2468 -x2470 = x2469 -x2471 = x2470 -x2472 = x2471 -x2473 = x2472 -x2474 = x2473 -x2475 = x2474 -x2476 = x2475 -x2477 = x2476 -x2478 = x2477 -x2479 = x2478 -x2480 = x2479 -x2481 = x2480 -x2482 = x2481 -x2483 = x2482 -x2484 = x2483 -x2485 = x2484 -x2486 = x2485 -x2487 = x2486 -x2488 = x2487 -x2489 = x2488 -x2490 = x2489 -x2491 = x2490 -x2492 = x2491 -x2493 = x2492 -x2494 = x2493 -x2495 = x2494 -x2496 = x2495 -x2497 = x2496 -x2498 = x2497 -x2499 = x2498 -x2500 = x2499 -x2501 = x2500 -x2502 = x2501 -x2503 = x2502 -x2504 = x2503 -x2505 = x2504 -x2506 = x2505 -x2507 = x2506 -x2508 = x2507 -x2509 = x2508 -x2510 = x2509 -x2511 = x2510 -x2512 = x2511 -x2513 = x2512 -x2514 = x2513 -x2515 = x2514 -x2516 = x2515 -x2517 = x2516 -x2518 = x2517 -x2519 = x2518 -x2520 = x2519 -x2521 = x2520 -x2522 = x2521 -x2523 = x2522 -x2524 = x2523 -x2525 = x2524 -x2526 = x2525 -x2527 = x2526 -x2528 = x2527 -x2529 = x2528 -x2530 = x2529 -x2531 = x2530 -x2532 = x2531 -x2533 = x2532 -x2534 = x2533 -x2535 = x2534 -x2536 = x2535 -x2537 = x2536 -x2538 = x2537 -x2539 = x2538 -x2540 = x2539 -x2541 = x2540 -x2542 = x2541 -x2543 = x2542 -x2544 = x2543 -x2545 = x2544 -x2546 = x2545 -x2547 = x2546 -x2548 = x2547 -x2549 = x2548 -x2550 = x2549 -x2551 = x2550 -x2552 = x2551 -x2553 = x2552 -x2554 = x2553 -x2555 = x2554 -x2556 = x2555 -x2557 = x2556 -x2558 = x2557 -x2559 = x2558 -x2560 = x2559 -x2561 = x2560 -x2562 = x2561 -x2563 = x2562 -x2564 = x2563 -x2565 = x2564 -x2566 = x2565 -x2567 = x2566 -x2568 = x2567 -x2569 = x2568 -x2570 = x2569 -x2571 = x2570 -x2572 = x2571 -x2573 = x2572 -x2574 = x2573 -x2575 = x2574 -x2576 = x2575 -x2577 = x2576 -x2578 = x2577 -x2579 = x2578 -x2580 = x2579 -x2581 = x2580 -x2582 = x2581 -x2583 = x2582 -x2584 = x2583 -x2585 = x2584 -x2586 = x2585 -x2587 = x2586 -x2588 = x2587 -x2589 = x2588 -x2590 = x2589 -x2591 = x2590 -x2592 = x2591 -x2593 = x2592 -x2594 = x2593 -x2595 = x2594 -x2596 = x2595 -x2597 = x2596 -x2598 = x2597 -x2599 = x2598 -x2600 = x2599 -x2601 = x2600 -x2602 = x2601 -x2603 = x2602 -x2604 = x2603 -x2605 = x2604 -x2606 = x2605 -x2607 = x2606 -x2608 = x2607 -x2609 = x2608 -x2610 = x2609 -x2611 = x2610 -x2612 = x2611 -x2613 = x2612 -x2614 = x2613 -x2615 = x2614 -x2616 = x2615 -x2617 = x2616 -x2618 = x2617 -x2619 = x2618 -x2620 = x2619 -x2621 = x2620 -x2622 = x2621 -x2623 = x2622 -x2624 = x2623 -x2625 = x2624 -x2626 = x2625 -x2627 = x2626 -x2628 = x2627 -x2629 = x2628 -x2630 = x2629 -x2631 = x2630 -x2632 = x2631 -x2633 = x2632 -x2634 = x2633 -x2635 = x2634 -x2636 = x2635 -x2637 = x2636 -x2638 = x2637 -x2639 = x2638 -x2640 = x2639 -x2641 = x2640 -x2642 = x2641 -x2643 = x2642 -x2644 = x2643 -x2645 = x2644 -x2646 = x2645 -x2647 = x2646 -x2648 = x2647 -x2649 = x2648 -x2650 = x2649 -x2651 = x2650 -x2652 = x2651 -x2653 = x2652 -x2654 = x2653 -x2655 = x2654 -x2656 = x2655 -x2657 = x2656 -x2658 = x2657 -x2659 = x2658 -x2660 = x2659 -x2661 = x2660 -x2662 = x2661 -x2663 = x2662 -x2664 = x2663 -x2665 = x2664 -x2666 = x2665 -x2667 = x2666 -x2668 = x2667 -x2669 = x2668 -x2670 = x2669 -x2671 = x2670 -x2672 = x2671 -x2673 = x2672 -x2674 = x2673 -x2675 = x2674 -x2676 = x2675 -x2677 = x2676 -x2678 = x2677 -x2679 = x2678 -x2680 = x2679 -x2681 = x2680 -x2682 = x2681 -x2683 = x2682 -x2684 = x2683 -x2685 = x2684 -x2686 = x2685 -x2687 = x2686 -x2688 = x2687 -x2689 = x2688 -x2690 = x2689 -x2691 = x2690 -x2692 = x2691 -x2693 = x2692 -x2694 = x2693 -x2695 = x2694 -x2696 = x2695 -x2697 = x2696 -x2698 = x2697 -x2699 = x2698 -x2700 = x2699 -x2701 = x2700 -x2702 = x2701 -x2703 = x2702 -x2704 = x2703 -x2705 = x2704 -x2706 = x2705 -x2707 = x2706 -x2708 = x2707 -x2709 = x2708 -x2710 = x2709 -x2711 = x2710 -x2712 = x2711 -x2713 = x2712 -x2714 = x2713 -x2715 = x2714 -x2716 = x2715 -x2717 = x2716 -x2718 = x2717 -x2719 = x2718 -x2720 = x2719 -x2721 = x2720 -x2722 = x2721 -x2723 = x2722 -x2724 = x2723 -x2725 = x2724 -x2726 = x2725 -x2727 = x2726 -x2728 = x2727 -x2729 = x2728 -x2730 = x2729 -x2731 = x2730 -x2732 = x2731 -x2733 = x2732 -x2734 = x2733 -x2735 = x2734 -x2736 = x2735 -x2737 = x2736 -x2738 = x2737 -x2739 = x2738 -x2740 = x2739 -x2741 = x2740 -x2742 = x2741 -x2743 = x2742 -x2744 = x2743 -x2745 = x2744 -x2746 = x2745 -x2747 = x2746 -x2748 = x2747 -x2749 = x2748 -x2750 = x2749 -x2751 = x2750 -x2752 = x2751 -x2753 = x2752 -x2754 = x2753 -x2755 = x2754 -x2756 = x2755 -x2757 = x2756 -x2758 = x2757 -x2759 = x2758 -x2760 = x2759 -x2761 = x2760 -x2762 = x2761 -x2763 = x2762 -x2764 = x2763 -x2765 = x2764 -x2766 = x2765 -x2767 = x2766 -x2768 = x2767 -x2769 = x2768 -x2770 = x2769 -x2771 = x2770 -x2772 = x2771 -x2773 = x2772 -x2774 = x2773 -x2775 = x2774 -x2776 = x2775 -x2777 = x2776 -x2778 = x2777 -x2779 = x2778 -x2780 = x2779 -x2781 = x2780 -x2782 = x2781 -x2783 = x2782 -x2784 = x2783 -x2785 = x2784 -x2786 = x2785 -x2787 = x2786 -x2788 = x2787 -x2789 = x2788 -x2790 = x2789 -x2791 = x2790 -x2792 = x2791 -x2793 = x2792 -x2794 = x2793 -x2795 = x2794 -x2796 = x2795 -x2797 = x2796 -x2798 = x2797 -x2799 = x2798 -x2800 = x2799 -x2801 = x2800 -x2802 = x2801 -x2803 = x2802 -x2804 = x2803 -x2805 = x2804 -x2806 = x2805 -x2807 = x2806 -x2808 = x2807 -x2809 = x2808 -x2810 = x2809 -x2811 = x2810 -x2812 = x2811 -x2813 = x2812 -x2814 = x2813 -x2815 = x2814 -x2816 = x2815 -x2817 = x2816 -x2818 = x2817 -x2819 = x2818 -x2820 = x2819 -x2821 = x2820 -x2822 = x2821 -x2823 = x2822 -x2824 = x2823 -x2825 = x2824 -x2826 = x2825 -x2827 = x2826 -x2828 = x2827 -x2829 = x2828 -x2830 = x2829 -x2831 = x2830 -x2832 = x2831 -x2833 = x2832 -x2834 = x2833 -x2835 = x2834 -x2836 = x2835 -x2837 = x2836 -x2838 = x2837 -x2839 = x2838 -x2840 = x2839 -x2841 = x2840 -x2842 = x2841 -x2843 = x2842 -x2844 = x2843 -x2845 = x2844 -x2846 = x2845 -x2847 = x2846 -x2848 = x2847 -x2849 = x2848 -x2850 = x2849 -x2851 = x2850 -x2852 = x2851 -x2853 = x2852 -x2854 = x2853 -x2855 = x2854 -x2856 = x2855 -x2857 = x2856 -x2858 = x2857 -x2859 = x2858 -x2860 = x2859 -x2861 = x2860 -x2862 = x2861 -x2863 = x2862 -x2864 = x2863 -x2865 = x2864 -x2866 = x2865 -x2867 = x2866 -x2868 = x2867 -x2869 = x2868 -x2870 = x2869 -x2871 = x2870 -x2872 = x2871 -x2873 = x2872 -x2874 = x2873 -x2875 = x2874 -x2876 = x2875 -x2877 = x2876 -x2878 = x2877 -x2879 = x2878 -x2880 = x2879 -x2881 = x2880 -x2882 = x2881 -x2883 = x2882 -x2884 = x2883 -x2885 = x2884 -x2886 = x2885 -x2887 = x2886 -x2888 = x2887 -x2889 = x2888 -x2890 = x2889 -x2891 = x2890 -x2892 = x2891 -x2893 = x2892 -x2894 = x2893 -x2895 = x2894 -x2896 = x2895 -x2897 = x2896 -x2898 = x2897 -x2899 = x2898 -x2900 = x2899 -x2901 = x2900 -x2902 = x2901 -x2903 = x2902 -x2904 = x2903 -x2905 = x2904 -x2906 = x2905 -x2907 = x2906 -x2908 = x2907 -x2909 = x2908 -x2910 = x2909 -x2911 = x2910 -x2912 = x2911 -x2913 = x2912 -x2914 = x2913 -x2915 = x2914 -x2916 = x2915 -x2917 = x2916 -x2918 = x2917 -x2919 = x2918 -x2920 = x2919 -x2921 = x2920 -x2922 = x2921 -x2923 = x2922 -x2924 = x2923 -x2925 = x2924 -x2926 = x2925 -x2927 = x2926 -x2928 = x2927 -x2929 = x2928 -x2930 = x2929 -x2931 = x2930 -x2932 = x2931 -x2933 = x2932 -x2934 = x2933 -x2935 = x2934 -x2936 = x2935 -x2937 = x2936 -x2938 = x2937 -x2939 = x2938 -x2940 = x2939 -x2941 = x2940 -x2942 = x2941 -x2943 = x2942 -x2944 = x2943 -x2945 = x2944 -x2946 = x2945 -x2947 = x2946 -x2948 = x2947 -x2949 = x2948 -x2950 = x2949 -x2951 = x2950 -x2952 = x2951 -x2953 = x2952 -x2954 = x2953 -x2955 = x2954 -x2956 = x2955 -x2957 = x2956 -x2958 = x2957 -x2959 = x2958 -x2960 = x2959 -x2961 = x2960 -x2962 = x2961 -x2963 = x2962 -x2964 = x2963 -x2965 = x2964 -x2966 = x2965 -x2967 = x2966 -x2968 = x2967 -x2969 = x2968 -x2970 = x2969 -x2971 = x2970 -x2972 = x2971 -x2973 = x2972 -x2974 = x2973 -x2975 = x2974 -x2976 = x2975 -x2977 = x2976 -x2978 = x2977 -x2979 = x2978 -x2980 = x2979 -x2981 = x2980 -x2982 = x2981 -x2983 = x2982 -x2984 = x2983 -x2985 = x2984 -x2986 = x2985 -x2987 = x2986 -x2988 = x2987 -x2989 = x2988 -x2990 = x2989 -x2991 = x2990 -x2992 = x2991 -x2993 = x2992 -x2994 = x2993 -x2995 = x2994 -x2996 = x2995 -x2997 = x2996 -x2998 = x2997 -x2999 = x2998 -x3000 = x2999 -x3001 = x3000 -x3002 = x3001 -x3003 = x3002 -x3004 = x3003 -x3005 = x3004 -x3006 = x3005 -x3007 = x3006 -x3008 = x3007 -x3009 = x3008 -x3010 = x3009 -x3011 = x3010 -x3012 = x3011 -x3013 = x3012 -x3014 = x3013 -x3015 = x3014 -x3016 = x3015 -x3017 = x3016 -x3018 = x3017 -x3019 = x3018 -x3020 = x3019 -x3021 = x3020 -x3022 = x3021 -x3023 = x3022 -x3024 = x3023 -x3025 = x3024 -x3026 = x3025 -x3027 = x3026 -x3028 = x3027 -x3029 = x3028 -x3030 = x3029 -x3031 = x3030 -x3032 = x3031 -x3033 = x3032 -x3034 = x3033 -x3035 = x3034 -x3036 = x3035 -x3037 = x3036 -x3038 = x3037 -x3039 = x3038 -x3040 = x3039 -x3041 = x3040 -x3042 = x3041 -x3043 = x3042 -x3044 = x3043 -x3045 = x3044 -x3046 = x3045 -x3047 = x3046 -x3048 = x3047 -x3049 = x3048 -x3050 = x3049 -x3051 = x3050 -x3052 = x3051 -x3053 = x3052 -x3054 = x3053 -x3055 = x3054 -x3056 = x3055 -x3057 = x3056 -x3058 = x3057 -x3059 = x3058 -x3060 = x3059 -x3061 = x3060 -x3062 = x3061 -x3063 = x3062 -x3064 = x3063 -x3065 = x3064 -x3066 = x3065 -x3067 = x3066 -x3068 = x3067 -x3069 = x3068 -x3070 = x3069 -x3071 = x3070 -x3072 = x3071 -x3073 = x3072 -x3074 = x3073 -x3075 = x3074 -x3076 = x3075 -x3077 = x3076 -x3078 = x3077 -x3079 = x3078 -x3080 = x3079 -x3081 = x3080 -x3082 = x3081 -x3083 = x3082 -x3084 = x3083 -x3085 = x3084 -x3086 = x3085 -x3087 = x3086 -x3088 = x3087 -x3089 = x3088 -x3090 = x3089 -x3091 = x3090 -x3092 = x3091 -x3093 = x3092 -x3094 = x3093 -x3095 = x3094 -x3096 = x3095 -x3097 = x3096 -x3098 = x3097 -x3099 = x3098 -x3100 = x3099 -x3101 = x3100 -x3102 = x3101 -x3103 = x3102 -x3104 = x3103 -x3105 = x3104 -x3106 = x3105 -x3107 = x3106 -x3108 = x3107 -x3109 = x3108 -x3110 = x3109 -x3111 = x3110 -x3112 = x3111 -x3113 = x3112 -x3114 = x3113 -x3115 = x3114 -x3116 = x3115 -x3117 = x3116 -x3118 = x3117 -x3119 = x3118 -x3120 = x3119 -x3121 = x3120 -x3122 = x3121 -x3123 = x3122 -x3124 = x3123 -x3125 = x3124 -x3126 = x3125 -x3127 = x3126 -x3128 = x3127 -x3129 = x3128 -x3130 = x3129 -x3131 = x3130 -x3132 = x3131 -x3133 = x3132 -x3134 = x3133 -x3135 = x3134 -x3136 = x3135 -x3137 = x3136 -x3138 = x3137 -x3139 = x3138 -x3140 = x3139 -x3141 = x3140 -x3142 = x3141 -x3143 = x3142 -x3144 = x3143 -x3145 = x3144 -x3146 = x3145 -x3147 = x3146 -x3148 = x3147 -x3149 = x3148 -x3150 = x3149 -x3151 = x3150 -x3152 = x3151 -x3153 = x3152 -x3154 = x3153 -x3155 = x3154 -x3156 = x3155 -x3157 = x3156 -x3158 = x3157 -x3159 = x3158 -x3160 = x3159 -x3161 = x3160 -x3162 = x3161 -x3163 = x3162 -x3164 = x3163 -x3165 = x3164 -x3166 = x3165 -x3167 = x3166 -x3168 = x3167 -x3169 = x3168 -x3170 = x3169 -x3171 = x3170 -x3172 = x3171 -x3173 = x3172 -x3174 = x3173 -x3175 = x3174 -x3176 = x3175 -x3177 = x3176 -x3178 = x3177 -x3179 = x3178 -x3180 = x3179 -x3181 = x3180 -x3182 = x3181 -x3183 = x3182 -x3184 = x3183 -x3185 = x3184 -x3186 = x3185 -x3187 = x3186 -x3188 = x3187 -x3189 = x3188 -x3190 = x3189 -x3191 = x3190 -x3192 = x3191 -x3193 = x3192 -x3194 = x3193 -x3195 = x3194 -x3196 = x3195 -x3197 = x3196 -x3198 = x3197 -x3199 = x3198 -x3200 = x3199 -x3201 = x3200 -x3202 = x3201 -x3203 = x3202 -x3204 = x3203 -x3205 = x3204 -x3206 = x3205 -x3207 = x3206 -x3208 = x3207 -x3209 = x3208 -x3210 = x3209 -x3211 = x3210 -x3212 = x3211 -x3213 = x3212 -x3214 = x3213 -x3215 = x3214 -x3216 = x3215 -x3217 = x3216 -x3218 = x3217 -x3219 = x3218 -x3220 = x3219 -x3221 = x3220 -x3222 = x3221 -x3223 = x3222 -x3224 = x3223 -x3225 = x3224 -x3226 = x3225 -x3227 = x3226 -x3228 = x3227 -x3229 = x3228 -x3230 = x3229 -x3231 = x3230 -x3232 = x3231 -x3233 = x3232 -x3234 = x3233 -x3235 = x3234 -x3236 = x3235 -x3237 = x3236 -x3238 = x3237 -x3239 = x3238 -x3240 = x3239 -x3241 = x3240 -x3242 = x3241 -x3243 = x3242 -x3244 = x3243 -x3245 = x3244 -x3246 = x3245 -x3247 = x3246 -x3248 = x3247 -x3249 = x3248 -x3250 = x3249 -x3251 = x3250 -x3252 = x3251 -x3253 = x3252 -x3254 = x3253 -x3255 = x3254 -x3256 = x3255 -x3257 = x3256 -x3258 = x3257 -x3259 = x3258 -x3260 = x3259 -x3261 = x3260 -x3262 = x3261 -x3263 = x3262 -x3264 = x3263 -x3265 = x3264 -x3266 = x3265 -x3267 = x3266 -x3268 = x3267 -x3269 = x3268 -x3270 = x3269 -x3271 = x3270 -x3272 = x3271 -x3273 = x3272 -x3274 = x3273 -x3275 = x3274 -x3276 = x3275 -x3277 = x3276 -x3278 = x3277 -x3279 = x3278 -x3280 = x3279 -x3281 = x3280 -x3282 = x3281 -x3283 = x3282 -x3284 = x3283 -x3285 = x3284 -x3286 = x3285 -x3287 = x3286 -x3288 = x3287 -x3289 = x3288 -x3290 = x3289 -x3291 = x3290 -x3292 = x3291 -x3293 = x3292 -x3294 = x3293 -x3295 = x3294 -x3296 = x3295 -x3297 = x3296 -x3298 = x3297 -x3299 = x3298 -x3300 = x3299 -x3301 = x3300 -x3302 = x3301 -x3303 = x3302 -x3304 = x3303 -x3305 = x3304 -x3306 = x3305 -x3307 = x3306 -x3308 = x3307 -x3309 = x3308 -x3310 = x3309 -x3311 = x3310 -x3312 = x3311 -x3313 = x3312 -x3314 = x3313 -x3315 = x3314 -x3316 = x3315 -x3317 = x3316 -x3318 = x3317 -x3319 = x3318 -x3320 = x3319 -x3321 = x3320 -x3322 = x3321 -x3323 = x3322 -x3324 = x3323 -x3325 = x3324 -x3326 = x3325 -x3327 = x3326 -x3328 = x3327 -x3329 = x3328 -x3330 = x3329 -x3331 = x3330 -x3332 = x3331 -x3333 = x3332 -x3334 = x3333 -x3335 = x3334 -x3336 = x3335 -x3337 = x3336 -x3338 = x3337 -x3339 = x3338 -x3340 = x3339 -x3341 = x3340 -x3342 = x3341 -x3343 = x3342 -x3344 = x3343 -x3345 = x3344 -x3346 = x3345 -x3347 = x3346 -x3348 = x3347 -x3349 = x3348 -x3350 = x3349 -x3351 = x3350 -x3352 = x3351 -x3353 = x3352 -x3354 = x3353 -x3355 = x3354 -x3356 = x3355 -x3357 = x3356 -x3358 = x3357 -x3359 = x3358 -x3360 = x3359 -x3361 = x3360 -x3362 = x3361 -x3363 = x3362 -x3364 = x3363 -x3365 = x3364 -x3366 = x3365 -x3367 = x3366 -x3368 = x3367 -x3369 = x3368 -x3370 = x3369 -x3371 = x3370 -x3372 = x3371 -x3373 = x3372 -x3374 = x3373 -x3375 = x3374 -x3376 = x3375 -x3377 = x3376 -x3378 = x3377 -x3379 = x3378 -x3380 = x3379 -x3381 = x3380 -x3382 = x3381 -x3383 = x3382 -x3384 = x3383 -x3385 = x3384 -x3386 = x3385 -x3387 = x3386 -x3388 = x3387 -x3389 = x3388 -x3390 = x3389 -x3391 = x3390 -x3392 = x3391 -x3393 = x3392 -x3394 = x3393 -x3395 = x3394 -x3396 = x3395 -x3397 = x3396 -x3398 = x3397 -x3399 = x3398 -x3400 = x3399 -x3401 = x3400 -x3402 = x3401 -x3403 = x3402 -x3404 = x3403 -x3405 = x3404 -x3406 = x3405 -x3407 = x3406 -x3408 = x3407 -x3409 = x3408 -x3410 = x3409 -x3411 = x3410 -x3412 = x3411 -x3413 = x3412 -x3414 = x3413 -x3415 = x3414 -x3416 = x3415 -x3417 = x3416 -x3418 = x3417 -x3419 = x3418 -x3420 = x3419 -x3421 = x3420 -x3422 = x3421 -x3423 = x3422 -x3424 = x3423 -x3425 = x3424 -x3426 = x3425 -x3427 = x3426 -x3428 = x3427 -x3429 = x3428 -x3430 = x3429 -x3431 = x3430 -x3432 = x3431 -x3433 = x3432 -x3434 = x3433 -x3435 = x3434 -x3436 = x3435 -x3437 = x3436 -x3438 = x3437 -x3439 = x3438 -x3440 = x3439 -x3441 = x3440 -x3442 = x3441 -x3443 = x3442 -x3444 = x3443 -x3445 = x3444 -x3446 = x3445 -x3447 = x3446 -x3448 = x3447 -x3449 = x3448 -x3450 = x3449 -x3451 = x3450 -x3452 = x3451 -x3453 = x3452 -x3454 = x3453 -x3455 = x3454 -x3456 = x3455 -x3457 = x3456 -x3458 = x3457 -x3459 = x3458 -x3460 = x3459 -x3461 = x3460 -x3462 = x3461 -x3463 = x3462 -x3464 = x3463 -x3465 = x3464 -x3466 = x3465 -x3467 = x3466 -x3468 = x3467 -x3469 = x3468 -x3470 = x3469 -x3471 = x3470 -x3472 = x3471 -x3473 = x3472 -x3474 = x3473 -x3475 = x3474 -x3476 = x3475 -x3477 = x3476 -x3478 = x3477 -x3479 = x3478 -x3480 = x3479 -x3481 = x3480 -x3482 = x3481 -x3483 = x3482 -x3484 = x3483 -x3485 = x3484 -x3486 = x3485 -x3487 = x3486 -x3488 = x3487 -x3489 = x3488 -x3490 = x3489 -x3491 = x3490 -x3492 = x3491 -x3493 = x3492 -x3494 = x3493 -x3495 = x3494 -x3496 = x3495 -x3497 = x3496 -x3498 = x3497 -x3499 = x3498 -x3500 = x3499 -x3501 = x3500 -x3502 = x3501 -x3503 = x3502 -x3504 = x3503 -x3505 = x3504 -x3506 = x3505 -x3507 = x3506 -x3508 = x3507 -x3509 = x3508 -x3510 = x3509 -x3511 = x3510 -x3512 = x3511 -x3513 = x3512 -x3514 = x3513 -x3515 = x3514 -x3516 = x3515 -x3517 = x3516 -x3518 = x3517 -x3519 = x3518 -x3520 = x3519 -x3521 = x3520 -x3522 = x3521 -x3523 = x3522 -x3524 = x3523 -x3525 = x3524 -x3526 = x3525 -x3527 = x3526 -x3528 = x3527 -x3529 = x3528 -x3530 = x3529 -x3531 = x3530 -x3532 = x3531 -x3533 = x3532 -x3534 = x3533 -x3535 = x3534 -x3536 = x3535 -x3537 = x3536 -x3538 = x3537 -x3539 = x3538 -x3540 = x3539 -x3541 = x3540 -x3542 = x3541 -x3543 = x3542 -x3544 = x3543 -x3545 = x3544 -x3546 = x3545 -x3547 = x3546 -x3548 = x3547 -x3549 = x3548 -x3550 = x3549 -x3551 = x3550 -x3552 = x3551 -x3553 = x3552 -x3554 = x3553 -x3555 = x3554 -x3556 = x3555 -x3557 = x3556 -x3558 = x3557 -x3559 = x3558 -x3560 = x3559 -x3561 = x3560 -x3562 = x3561 -x3563 = x3562 -x3564 = x3563 -x3565 = x3564 -x3566 = x3565 -x3567 = x3566 -x3568 = x3567 -x3569 = x3568 -x3570 = x3569 -x3571 = x3570 -x3572 = x3571 -x3573 = x3572 -x3574 = x3573 -x3575 = x3574 -x3576 = x3575 -x3577 = x3576 -x3578 = x3577 -x3579 = x3578 -x3580 = x3579 -x3581 = x3580 -x3582 = x3581 -x3583 = x3582 -x3584 = x3583 -x3585 = x3584 -x3586 = x3585 -x3587 = x3586 -x3588 = x3587 -x3589 = x3588 -x3590 = x3589 -x3591 = x3590 -x3592 = x3591 -x3593 = x3592 -x3594 = x3593 -x3595 = x3594 -x3596 = x3595 -x3597 = x3596 -x3598 = x3597 -x3599 = x3598 -x3600 = x3599 -x3601 = x3600 -x3602 = x3601 -x3603 = x3602 -x3604 = x3603 -x3605 = x3604 -x3606 = x3605 -x3607 = x3606 -x3608 = x3607 -x3609 = x3608 -x3610 = x3609 -x3611 = x3610 -x3612 = x3611 -x3613 = x3612 -x3614 = x3613 -x3615 = x3614 -x3616 = x3615 -x3617 = x3616 -x3618 = x3617 -x3619 = x3618 -x3620 = x3619 -x3621 = x3620 -x3622 = x3621 -x3623 = x3622 -x3624 = x3623 -x3625 = x3624 -x3626 = x3625 -x3627 = x3626 -x3628 = x3627 -x3629 = x3628 -x3630 = x3629 -x3631 = x3630 -x3632 = x3631 -x3633 = x3632 -x3634 = x3633 -x3635 = x3634 -x3636 = x3635 -x3637 = x3636 -x3638 = x3637 -x3639 = x3638 -x3640 = x3639 -x3641 = x3640 -x3642 = x3641 -x3643 = x3642 -x3644 = x3643 -x3645 = x3644 -x3646 = x3645 -x3647 = x3646 -x3648 = x3647 -x3649 = x3648 -x3650 = x3649 -x3651 = x3650 -x3652 = x3651 -x3653 = x3652 -x3654 = x3653 -x3655 = x3654 -x3656 = x3655 -x3657 = x3656 -x3658 = x3657 -x3659 = x3658 -x3660 = x3659 -x3661 = x3660 -x3662 = x3661 -x3663 = x3662 -x3664 = x3663 -x3665 = x3664 -x3666 = x3665 -x3667 = x3666 -x3668 = x3667 -x3669 = x3668 -x3670 = x3669 -x3671 = x3670 -x3672 = x3671 -x3673 = x3672 -x3674 = x3673 -x3675 = x3674 -x3676 = x3675 -x3677 = x3676 -x3678 = x3677 -x3679 = x3678 -x3680 = x3679 -x3681 = x3680 -x3682 = x3681 -x3683 = x3682 -x3684 = x3683 -x3685 = x3684 -x3686 = x3685 -x3687 = x3686 -x3688 = x3687 -x3689 = x3688 -x3690 = x3689 -x3691 = x3690 -x3692 = x3691 -x3693 = x3692 -x3694 = x3693 -x3695 = x3694 -x3696 = x3695 -x3697 = x3696 -x3698 = x3697 -x3699 = x3698 -x3700 = x3699 -x3701 = x3700 -x3702 = x3701 -x3703 = x3702 -x3704 = x3703 -x3705 = x3704 -x3706 = x3705 -x3707 = x3706 -x3708 = x3707 -x3709 = x3708 -x3710 = x3709 -x3711 = x3710 -x3712 = x3711 -x3713 = x3712 -x3714 = x3713 -x3715 = x3714 -x3716 = x3715 -x3717 = x3716 -x3718 = x3717 -x3719 = x3718 -x3720 = x3719 -x3721 = x3720 -x3722 = x3721 -x3723 = x3722 -x3724 = x3723 -x3725 = x3724 -x3726 = x3725 -x3727 = x3726 -x3728 = x3727 -x3729 = x3728 -x3730 = x3729 -x3731 = x3730 -x3732 = x3731 -x3733 = x3732 -x3734 = x3733 -x3735 = x3734 -x3736 = x3735 -x3737 = x3736 -x3738 = x3737 -x3739 = x3738 -x3740 = x3739 -x3741 = x3740 -x3742 = x3741 -x3743 = x3742 -x3744 = x3743 -x3745 = x3744 -x3746 = x3745 -x3747 = x3746 -x3748 = x3747 -x3749 = x3748 -x3750 = x3749 -x3751 = x3750 -x3752 = x3751 -x3753 = x3752 -x3754 = x3753 -x3755 = x3754 -x3756 = x3755 -x3757 = x3756 -x3758 = x3757 -x3759 = x3758 -x3760 = x3759 -x3761 = x3760 -x3762 = x3761 -x3763 = x3762 -x3764 = x3763 -x3765 = x3764 -x3766 = x3765 -x3767 = x3766 -x3768 = x3767 -x3769 = x3768 -x3770 = x3769 -x3771 = x3770 -x3772 = x3771 -x3773 = x3772 -x3774 = x3773 -x3775 = x3774 -x3776 = x3775 -x3777 = x3776 -x3778 = x3777 -x3779 = x3778 -x3780 = x3779 -x3781 = x3780 -x3782 = x3781 -x3783 = x3782 -x3784 = x3783 -x3785 = x3784 -x3786 = x3785 -x3787 = x3786 -x3788 = x3787 -x3789 = x3788 -x3790 = x3789 -x3791 = x3790 -x3792 = x3791 -x3793 = x3792 -x3794 = x3793 -x3795 = x3794 -x3796 = x3795 -x3797 = x3796 -x3798 = x3797 -x3799 = x3798 -x3800 = x3799 -x3801 = x3800 -x3802 = x3801 -x3803 = x3802 -x3804 = x3803 -x3805 = x3804 -x3806 = x3805 -x3807 = x3806 -x3808 = x3807 -x3809 = x3808 -x3810 = x3809 -x3811 = x3810 -x3812 = x3811 -x3813 = x3812 -x3814 = x3813 -x3815 = x3814 -x3816 = x3815 -x3817 = x3816 -x3818 = x3817 -x3819 = x3818 -x3820 = x3819 -x3821 = x3820 -x3822 = x3821 -x3823 = x3822 -x3824 = x3823 -x3825 = x3824 -x3826 = x3825 -x3827 = x3826 -x3828 = x3827 -x3829 = x3828 -x3830 = x3829 -x3831 = x3830 -x3832 = x3831 -x3833 = x3832 -x3834 = x3833 -x3835 = x3834 -x3836 = x3835 -x3837 = x3836 -x3838 = x3837 -x3839 = x3838 -x3840 = x3839 -x3841 = x3840 -x3842 = x3841 -x3843 = x3842 -x3844 = x3843 -x3845 = x3844 -x3846 = x3845 -x3847 = x3846 -x3848 = x3847 -x3849 = x3848 -x3850 = x3849 -x3851 = x3850 -x3852 = x3851 -x3853 = x3852 -x3854 = x3853 -x3855 = x3854 -x3856 = x3855 -x3857 = x3856 -x3858 = x3857 -x3859 = x3858 -x3860 = x3859 -x3861 = x3860 -x3862 = x3861 -x3863 = x3862 -x3864 = x3863 -x3865 = x3864 -x3866 = x3865 -x3867 = x3866 -x3868 = x3867 -x3869 = x3868 -x3870 = x3869 -x3871 = x3870 -x3872 = x3871 -x3873 = x3872 -x3874 = x3873 -x3875 = x3874 -x3876 = x3875 -x3877 = x3876 -x3878 = x3877 -x3879 = x3878 -x3880 = x3879 -x3881 = x3880 -x3882 = x3881 -x3883 = x3882 -x3884 = x3883 -x3885 = x3884 -x3886 = x3885 -x3887 = x3886 -x3888 = x3887 -x3889 = x3888 -x3890 = x3889 -x3891 = x3890 -x3892 = x3891 -x3893 = x3892 -x3894 = x3893 -x3895 = x3894 -x3896 = x3895 -x3897 = x3896 -x3898 = x3897 -x3899 = x3898 -x3900 = x3899 -x3901 = x3900 -x3902 = x3901 -x3903 = x3902 -x3904 = x3903 -x3905 = x3904 -x3906 = x3905 -x3907 = x3906 -x3908 = x3907 -x3909 = x3908 -x3910 = x3909 -x3911 = x3910 -x3912 = x3911 -x3913 = x3912 -x3914 = x3913 -x3915 = x3914 -x3916 = x3915 -x3917 = x3916 -x3918 = x3917 -x3919 = x3918 -x3920 = x3919 -x3921 = x3920 -x3922 = x3921 -x3923 = x3922 -x3924 = x3923 -x3925 = x3924 -x3926 = x3925 -x3927 = x3926 -x3928 = x3927 -x3929 = x3928 -x3930 = x3929 -x3931 = x3930 -x3932 = x3931 -x3933 = x3932 -x3934 = x3933 -x3935 = x3934 -x3936 = x3935 -x3937 = x3936 -x3938 = x3937 -x3939 = x3938 -x3940 = x3939 -x3941 = x3940 -x3942 = x3941 -x3943 = x3942 -x3944 = x3943 -x3945 = x3944 -x3946 = x3945 -x3947 = x3946 -x3948 = x3947 -x3949 = x3948 -x3950 = x3949 -x3951 = x3950 -x3952 = x3951 -x3953 = x3952 -x3954 = x3953 -x3955 = x3954 -x3956 = x3955 -x3957 = x3956 -x3958 = x3957 -x3959 = x3958 -x3960 = x3959 -x3961 = x3960 -x3962 = x3961 -x3963 = x3962 -x3964 = x3963 -x3965 = x3964 -x3966 = x3965 -x3967 = x3966 -x3968 = x3967 -x3969 = x3968 -x3970 = x3969 -x3971 = x3970 -x3972 = x3971 -x3973 = x3972 -x3974 = x3973 -x3975 = x3974 -x3976 = x3975 -x3977 = x3976 -x3978 = x3977 -x3979 = x3978 -x3980 = x3979 -x3981 = x3980 -x3982 = x3981 -x3983 = x3982 -x3984 = x3983 -x3985 = x3984 -x3986 = x3985 -x3987 = x3986 -x3988 = x3987 -x3989 = x3988 -x3990 = x3989 -x3991 = x3990 -x3992 = x3991 -x3993 = x3992 -x3994 = x3993 -x3995 = x3994 -x3996 = x3995 -x3997 = x3996 -x3998 = x3997 -x3999 = x3998 -x4000 = x3999 -x4001 = x4000 -x4002 = x4001 -x4003 = x4002 -x4004 = x4003 -x4005 = x4004 -x4006 = x4005 -x4007 = x4006 -x4008 = x4007 -x4009 = x4008 -x4010 = x4009 -x4011 = x4010 -x4012 = x4011 -x4013 = x4012 -x4014 = x4013 -x4015 = x4014 -x4016 = x4015 -x4017 = x4016 -x4018 = x4017 -x4019 = x4018 -x4020 = x4019 -x4021 = x4020 -x4022 = x4021 -x4023 = x4022 -x4024 = x4023 -x4025 = x4024 -x4026 = x4025 -x4027 = x4026 -x4028 = x4027 -x4029 = x4028 -x4030 = x4029 -x4031 = x4030 -x4032 = x4031 -x4033 = x4032 -x4034 = x4033 -x4035 = x4034 -x4036 = x4035 -x4037 = x4036 -x4038 = x4037 -x4039 = x4038 -x4040 = x4039 -x4041 = x4040 -x4042 = x4041 -x4043 = x4042 -x4044 = x4043 -x4045 = x4044 -x4046 = x4045 -x4047 = x4046 -x4048 = x4047 -x4049 = x4048 -x4050 = x4049 -x4051 = x4050 -x4052 = x4051 -x4053 = x4052 -x4054 = x4053 -x4055 = x4054 -x4056 = x4055 -x4057 = x4056 -x4058 = x4057 -x4059 = x4058 -x4060 = x4059 -x4061 = x4060 -x4062 = x4061 -x4063 = x4062 -x4064 = x4063 -x4065 = x4064 -x4066 = x4065 -x4067 = x4066 -x4068 = x4067 -x4069 = x4068 -x4070 = x4069 -x4071 = x4070 -x4072 = x4071 -x4073 = x4072 -x4074 = x4073 -x4075 = x4074 -x4076 = x4075 -x4077 = x4076 -x4078 = x4077 -x4079 = x4078 -x4080 = x4079 -x4081 = x4080 -x4082 = x4081 -x4083 = x4082 -x4084 = x4083 -x4085 = x4084 -x4086 = x4085 -x4087 = x4086 -x4088 = x4087 -x4089 = x4088 -x4090 = x4089 -x4091 = x4090 -x4092 = x4091 -x4093 = x4092 -x4094 = x4093 -x4095 = x4094 -x4096 = x4095 -x4097 = x4096 -x4098 = x4097 -x4099 = x4098 -x4100 = x4099 -x4101 = x4100 -x4102 = x4101 -x4103 = x4102 -x4104 = x4103 -x4105 = x4104 -x4106 = x4105 -x4107 = x4106 -x4108 = x4107 -x4109 = x4108 -x4110 = x4109 -x4111 = x4110 -x4112 = x4111 -x4113 = x4112 -x4114 = x4113 -x4115 = x4114 -x4116 = x4115 -x4117 = x4116 -x4118 = x4117 -x4119 = x4118 -x4120 = x4119 -x4121 = x4120 -x4122 = x4121 -x4123 = x4122 -x4124 = x4123 -x4125 = x4124 -x4126 = x4125 -x4127 = x4126 -x4128 = x4127 -x4129 = x4128 -x4130 = x4129 -x4131 = x4130 -x4132 = x4131 -x4133 = x4132 -x4134 = x4133 -x4135 = x4134 -x4136 = x4135 -x4137 = x4136 -x4138 = x4137 -x4139 = x4138 -x4140 = x4139 -x4141 = x4140 -x4142 = x4141 -x4143 = x4142 -x4144 = x4143 -x4145 = x4144 -x4146 = x4145 -x4147 = x4146 -x4148 = x4147 -x4149 = x4148 -x4150 = x4149 -x4151 = x4150 -x4152 = x4151 -x4153 = x4152 -x4154 = x4153 -x4155 = x4154 -x4156 = x4155 -x4157 = x4156 -x4158 = x4157 -x4159 = x4158 -x4160 = x4159 -x4161 = x4160 -x4162 = x4161 -x4163 = x4162 -x4164 = x4163 -x4165 = x4164 -x4166 = x4165 -x4167 = x4166 -x4168 = x4167 -x4169 = x4168 -x4170 = x4169 -x4171 = x4170 -x4172 = x4171 -x4173 = x4172 -x4174 = x4173 -x4175 = x4174 -x4176 = x4175 -x4177 = x4176 -x4178 = x4177 -x4179 = x4178 -x4180 = x4179 -x4181 = x4180 -x4182 = x4181 -x4183 = x4182 -x4184 = x4183 -x4185 = x4184 -x4186 = x4185 -x4187 = x4186 -x4188 = x4187 -x4189 = x4188 -x4190 = x4189 -x4191 = x4190 -x4192 = x4191 -x4193 = x4192 -x4194 = x4193 -x4195 = x4194 -x4196 = x4195 -x4197 = x4196 -x4198 = x4197 -x4199 = x4198 -x4200 = x4199 -x4201 = x4200 -x4202 = x4201 -x4203 = x4202 -x4204 = x4203 -x4205 = x4204 -x4206 = x4205 -x4207 = x4206 -x4208 = x4207 -x4209 = x4208 -x4210 = x4209 -x4211 = x4210 -x4212 = x4211 -x4213 = x4212 -x4214 = x4213 -x4215 = x4214 -x4216 = x4215 -x4217 = x4216 -x4218 = x4217 -x4219 = x4218 -x4220 = x4219 -x4221 = x4220 -x4222 = x4221 -x4223 = x4222 -x4224 = x4223 -x4225 = x4224 -x4226 = x4225 -x4227 = x4226 -x4228 = x4227 -x4229 = x4228 -x4230 = x4229 -x4231 = x4230 -x4232 = x4231 -x4233 = x4232 -x4234 = x4233 -x4235 = x4234 -x4236 = x4235 -x4237 = x4236 -x4238 = x4237 -x4239 = x4238 -x4240 = x4239 -x4241 = x4240 -x4242 = x4241 -x4243 = x4242 -x4244 = x4243 -x4245 = x4244 -x4246 = x4245 -x4247 = x4246 -x4248 = x4247 -x4249 = x4248 -x4250 = x4249 -x4251 = x4250 -x4252 = x4251 -x4253 = x4252 -x4254 = x4253 -x4255 = x4254 -x4256 = x4255 -x4257 = x4256 -x4258 = x4257 -x4259 = x4258 -x4260 = x4259 -x4261 = x4260 -x4262 = x4261 -x4263 = x4262 -x4264 = x4263 -x4265 = x4264 -x4266 = x4265 -x4267 = x4266 -x4268 = x4267 -x4269 = x4268 -x4270 = x4269 -x4271 = x4270 -x4272 = x4271 -x4273 = x4272 -x4274 = x4273 -x4275 = x4274 -x4276 = x4275 -x4277 = x4276 -x4278 = x4277 -x4279 = x4278 -x4280 = x4279 -x4281 = x4280 -x4282 = x4281 -x4283 = x4282 -x4284 = x4283 -x4285 = x4284 -x4286 = x4285 -x4287 = x4286 -x4288 = x4287 -x4289 = x4288 -x4290 = x4289 -x4291 = x4290 -x4292 = x4291 -x4293 = x4292 -x4294 = x4293 -x4295 = x4294 -x4296 = x4295 -x4297 = x4296 -x4298 = x4297 -x4299 = x4298 -x4300 = x4299 -x4301 = x4300 -x4302 = x4301 -x4303 = x4302 -x4304 = x4303 -x4305 = x4304 -x4306 = x4305 -x4307 = x4306 -x4308 = x4307 -x4309 = x4308 -x4310 = x4309 -x4311 = x4310 -x4312 = x4311 -x4313 = x4312 -x4314 = x4313 -x4315 = x4314 -x4316 = x4315 -x4317 = x4316 -x4318 = x4317 -x4319 = x4318 -x4320 = x4319 -x4321 = x4320 -x4322 = x4321 -x4323 = x4322 -x4324 = x4323 -x4325 = x4324 -x4326 = x4325 -x4327 = x4326 -x4328 = x4327 -x4329 = x4328 -x4330 = x4329 -x4331 = x4330 -x4332 = x4331 -x4333 = x4332 -x4334 = x4333 -x4335 = x4334 -x4336 = x4335 -x4337 = x4336 -x4338 = x4337 -x4339 = x4338 -x4340 = x4339 -x4341 = x4340 -x4342 = x4341 -x4343 = x4342 -x4344 = x4343 -x4345 = x4344 -x4346 = x4345 -x4347 = x4346 -x4348 = x4347 -x4349 = x4348 -x4350 = x4349 -x4351 = x4350 -x4352 = x4351 -x4353 = x4352 -x4354 = x4353 -x4355 = x4354 -x4356 = x4355 -x4357 = x4356 -x4358 = x4357 -x4359 = x4358 -x4360 = x4359 -x4361 = x4360 -x4362 = x4361 -x4363 = x4362 -x4364 = x4363 -x4365 = x4364 -x4366 = x4365 -x4367 = x4366 -x4368 = x4367 -x4369 = x4368 -x4370 = x4369 -x4371 = x4370 -x4372 = x4371 -x4373 = x4372 -x4374 = x4373 -x4375 = x4374 -x4376 = x4375 -x4377 = x4376 -x4378 = x4377 -x4379 = x4378 -x4380 = x4379 -x4381 = x4380 -x4382 = x4381 -x4383 = x4382 -x4384 = x4383 -x4385 = x4384 -x4386 = x4385 -x4387 = x4386 -x4388 = x4387 -x4389 = x4388 -x4390 = x4389 -x4391 = x4390 -x4392 = x4391 -x4393 = x4392 -x4394 = x4393 -x4395 = x4394 -x4396 = x4395 -x4397 = x4396 -x4398 = x4397 -x4399 = x4398 -x4400 = x4399 -x4401 = x4400 -x4402 = x4401 -x4403 = x4402 -x4404 = x4403 -x4405 = x4404 -x4406 = x4405 -x4407 = x4406 -x4408 = x4407 -x4409 = x4408 -x4410 = x4409 -x4411 = x4410 -x4412 = x4411 -x4413 = x4412 -x4414 = x4413 -x4415 = x4414 -x4416 = x4415 -x4417 = x4416 -x4418 = x4417 -x4419 = x4418 -x4420 = x4419 -x4421 = x4420 -x4422 = x4421 -x4423 = x4422 -x4424 = x4423 -x4425 = x4424 -x4426 = x4425 -x4427 = x4426 -x4428 = x4427 -x4429 = x4428 -x4430 = x4429 -x4431 = x4430 -x4432 = x4431 -x4433 = x4432 -x4434 = x4433 -x4435 = x4434 -x4436 = x4435 -x4437 = x4436 -x4438 = x4437 -x4439 = x4438 -x4440 = x4439 -x4441 = x4440 -x4442 = x4441 -x4443 = x4442 -x4444 = x4443 -x4445 = x4444 -x4446 = x4445 -x4447 = x4446 -x4448 = x4447 -x4449 = x4448 -x4450 = x4449 -x4451 = x4450 -x4452 = x4451 -x4453 = x4452 -x4454 = x4453 -x4455 = x4454 -x4456 = x4455 -x4457 = x4456 -x4458 = x4457 -x4459 = x4458 -x4460 = x4459 -x4461 = x4460 -x4462 = x4461 -x4463 = x4462 -x4464 = x4463 -x4465 = x4464 -x4466 = x4465 -x4467 = x4466 -x4468 = x4467 -x4469 = x4468 -x4470 = x4469 -x4471 = x4470 -x4472 = x4471 -x4473 = x4472 -x4474 = x4473 -x4475 = x4474 -x4476 = x4475 -x4477 = x4476 -x4478 = x4477 -x4479 = x4478 -x4480 = x4479 -x4481 = x4480 -x4482 = x4481 -x4483 = x4482 -x4484 = x4483 -x4485 = x4484 -x4486 = x4485 -x4487 = x4486 -x4488 = x4487 -x4489 = x4488 -x4490 = x4489 -x4491 = x4490 -x4492 = x4491 -x4493 = x4492 -x4494 = x4493 -x4495 = x4494 -x4496 = x4495 -x4497 = x4496 -x4498 = x4497 -x4499 = x4498 -x4500 = x4499 -x4501 = x4500 -x4502 = x4501 -x4503 = x4502 -x4504 = x4503 -x4505 = x4504 -x4506 = x4505 -x4507 = x4506 -x4508 = x4507 -x4509 = x4508 -x4510 = x4509 -x4511 = x4510 -x4512 = x4511 -x4513 = x4512 -x4514 = x4513 -x4515 = x4514 -x4516 = x4515 -x4517 = x4516 -x4518 = x4517 -x4519 = x4518 -x4520 = x4519 -x4521 = x4520 -x4522 = x4521 -x4523 = x4522 -x4524 = x4523 -x4525 = x4524 -x4526 = x4525 -x4527 = x4526 -x4528 = x4527 -x4529 = x4528 -x4530 = x4529 -x4531 = x4530 -x4532 = x4531 -x4533 = x4532 -x4534 = x4533 -x4535 = x4534 -x4536 = x4535 -x4537 = x4536 -x4538 = x4537 -x4539 = x4538 -x4540 = x4539 -x4541 = x4540 -x4542 = x4541 -x4543 = x4542 -x4544 = x4543 -x4545 = x4544 -x4546 = x4545 -x4547 = x4546 -x4548 = x4547 -x4549 = x4548 -x4550 = x4549 -x4551 = x4550 -x4552 = x4551 -x4553 = x4552 -x4554 = x4553 -x4555 = x4554 -x4556 = x4555 -x4557 = x4556 -x4558 = x4557 -x4559 = x4558 -x4560 = x4559 -x4561 = x4560 -x4562 = x4561 -x4563 = x4562 -x4564 = x4563 -x4565 = x4564 -x4566 = x4565 -x4567 = x4566 -x4568 = x4567 -x4569 = x4568 -x4570 = x4569 -x4571 = x4570 -x4572 = x4571 -x4573 = x4572 -x4574 = x4573 -x4575 = x4574 -x4576 = x4575 -x4577 = x4576 -x4578 = x4577 -x4579 = x4578 -x4580 = x4579 -x4581 = x4580 -x4582 = x4581 -x4583 = x4582 -x4584 = x4583 -x4585 = x4584 -x4586 = x4585 -x4587 = x4586 -x4588 = x4587 -x4589 = x4588 -x4590 = x4589 -x4591 = x4590 -x4592 = x4591 -x4593 = x4592 -x4594 = x4593 -x4595 = x4594 -x4596 = x4595 -x4597 = x4596 -x4598 = x4597 -x4599 = x4598 -x4600 = x4599 -x4601 = x4600 -x4602 = x4601 -x4603 = x4602 -x4604 = x4603 -x4605 = x4604 -x4606 = x4605 -x4607 = x4606 -x4608 = x4607 -x4609 = x4608 -x4610 = x4609 -x4611 = x4610 -x4612 = x4611 -x4613 = x4612 -x4614 = x4613 -x4615 = x4614 -x4616 = x4615 -x4617 = x4616 -x4618 = x4617 -x4619 = x4618 -x4620 = x4619 -x4621 = x4620 -x4622 = x4621 -x4623 = x4622 -x4624 = x4623 -x4625 = x4624 -x4626 = x4625 -x4627 = x4626 -x4628 = x4627 -x4629 = x4628 -x4630 = x4629 -x4631 = x4630 -x4632 = x4631 -x4633 = x4632 -x4634 = x4633 -x4635 = x4634 -x4636 = x4635 -x4637 = x4636 -x4638 = x4637 -x4639 = x4638 -x4640 = x4639 -x4641 = x4640 -x4642 = x4641 -x4643 = x4642 -x4644 = x4643 -x4645 = x4644 -x4646 = x4645 -x4647 = x4646 -x4648 = x4647 -x4649 = x4648 -x4650 = x4649 -x4651 = x4650 -x4652 = x4651 -x4653 = x4652 -x4654 = x4653 -x4655 = x4654 -x4656 = x4655 -x4657 = x4656 -x4658 = x4657 -x4659 = x4658 -x4660 = x4659 -x4661 = x4660 -x4662 = x4661 -x4663 = x4662 -x4664 = x4663 -x4665 = x4664 -x4666 = x4665 -x4667 = x4666 -x4668 = x4667 -x4669 = x4668 -x4670 = x4669 -x4671 = x4670 -x4672 = x4671 -x4673 = x4672 -x4674 = x4673 -x4675 = x4674 -x4676 = x4675 -x4677 = x4676 -x4678 = x4677 -x4679 = x4678 -x4680 = x4679 -x4681 = x4680 -x4682 = x4681 -x4683 = x4682 -x4684 = x4683 -x4685 = x4684 -x4686 = x4685 -x4687 = x4686 -x4688 = x4687 -x4689 = x4688 -x4690 = x4689 -x4691 = x4690 -x4692 = x4691 -x4693 = x4692 -x4694 = x4693 -x4695 = x4694 -x4696 = x4695 -x4697 = x4696 -x4698 = x4697 -x4699 = x4698 -x4700 = x4699 -x4701 = x4700 -x4702 = x4701 -x4703 = x4702 -x4704 = x4703 -x4705 = x4704 -x4706 = x4705 -x4707 = x4706 -x4708 = x4707 -x4709 = x4708 -x4710 = x4709 -x4711 = x4710 -x4712 = x4711 -x4713 = x4712 -x4714 = x4713 -x4715 = x4714 -x4716 = x4715 -x4717 = x4716 -x4718 = x4717 -x4719 = x4718 -x4720 = x4719 -x4721 = x4720 -x4722 = x4721 -x4723 = x4722 -x4724 = x4723 -x4725 = x4724 -x4726 = x4725 -x4727 = x4726 -x4728 = x4727 -x4729 = x4728 -x4730 = x4729 -x4731 = x4730 -x4732 = x4731 -x4733 = x4732 -x4734 = x4733 -x4735 = x4734 -x4736 = x4735 -x4737 = x4736 -x4738 = x4737 -x4739 = x4738 -x4740 = x4739 -x4741 = x4740 -x4742 = x4741 -x4743 = x4742 -x4744 = x4743 -x4745 = x4744 -x4746 = x4745 -x4747 = x4746 -x4748 = x4747 -x4749 = x4748 -x4750 = x4749 -x4751 = x4750 -x4752 = x4751 -x4753 = x4752 -x4754 = x4753 -x4755 = x4754 -x4756 = x4755 -x4757 = x4756 -x4758 = x4757 -x4759 = x4758 -x4760 = x4759 -x4761 = x4760 -x4762 = x4761 -x4763 = x4762 -x4764 = x4763 -x4765 = x4764 -x4766 = x4765 -x4767 = x4766 -x4768 = x4767 -x4769 = x4768 -x4770 = x4769 -x4771 = x4770 -x4772 = x4771 -x4773 = x4772 -x4774 = x4773 -x4775 = x4774 -x4776 = x4775 -x4777 = x4776 -x4778 = x4777 -x4779 = x4778 -x4780 = x4779 -x4781 = x4780 -x4782 = x4781 -x4783 = x4782 -x4784 = x4783 -x4785 = x4784 -x4786 = x4785 -x4787 = x4786 -x4788 = x4787 -x4789 = x4788 -x4790 = x4789 -x4791 = x4790 -x4792 = x4791 -x4793 = x4792 -x4794 = x4793 -x4795 = x4794 -x4796 = x4795 -x4797 = x4796 -x4798 = x4797 -x4799 = x4798 -x4800 = x4799 -x4801 = x4800 -x4802 = x4801 -x4803 = x4802 -x4804 = x4803 -x4805 = x4804 -x4806 = x4805 -x4807 = x4806 -x4808 = x4807 -x4809 = x4808 -x4810 = x4809 -x4811 = x4810 -x4812 = x4811 -x4813 = x4812 -x4814 = x4813 -x4815 = x4814 -x4816 = x4815 -x4817 = x4816 -x4818 = x4817 -x4819 = x4818 -x4820 = x4819 -x4821 = x4820 -x4822 = x4821 -x4823 = x4822 -x4824 = x4823 -x4825 = x4824 -x4826 = x4825 -x4827 = x4826 -x4828 = x4827 -x4829 = x4828 -x4830 = x4829 -x4831 = x4830 -x4832 = x4831 -x4833 = x4832 -x4834 = x4833 -x4835 = x4834 -x4836 = x4835 -x4837 = x4836 -x4838 = x4837 -x4839 = x4838 -x4840 = x4839 -x4841 = x4840 -x4842 = x4841 -x4843 = x4842 -x4844 = x4843 -x4845 = x4844 -x4846 = x4845 -x4847 = x4846 -x4848 = x4847 -x4849 = x4848 -x4850 = x4849 -x4851 = x4850 -x4852 = x4851 -x4853 = x4852 -x4854 = x4853 -x4855 = x4854 -x4856 = x4855 -x4857 = x4856 -x4858 = x4857 -x4859 = x4858 -x4860 = x4859 -x4861 = x4860 -x4862 = x4861 -x4863 = x4862 -x4864 = x4863 -x4865 = x4864 -x4866 = x4865 -x4867 = x4866 -x4868 = x4867 -x4869 = x4868 -x4870 = x4869 -x4871 = x4870 -x4872 = x4871 -x4873 = x4872 -x4874 = x4873 -x4875 = x4874 -x4876 = x4875 -x4877 = x4876 -x4878 = x4877 -x4879 = x4878 -x4880 = x4879 -x4881 = x4880 -x4882 = x4881 -x4883 = x4882 -x4884 = x4883 -x4885 = x4884 -x4886 = x4885 -x4887 = x4886 -x4888 = x4887 -x4889 = x4888 -x4890 = x4889 -x4891 = x4890 -x4892 = x4891 -x4893 = x4892 -x4894 = x4893 -x4895 = x4894 -x4896 = x4895 -x4897 = x4896 -x4898 = x4897 -x4899 = x4898 -x4900 = x4899 -x4901 = x4900 -x4902 = x4901 -x4903 = x4902 -x4904 = x4903 -x4905 = x4904 -x4906 = x4905 -x4907 = x4906 -x4908 = x4907 -x4909 = x4908 -x4910 = x4909 -x4911 = x4910 -x4912 = x4911 -x4913 = x4912 -x4914 = x4913 -x4915 = x4914 -x4916 = x4915 -x4917 = x4916 -x4918 = x4917 -x4919 = x4918 -x4920 = x4919 -x4921 = x4920 -x4922 = x4921 -x4923 = x4922 -x4924 = x4923 -x4925 = x4924 -x4926 = x4925 -x4927 = x4926 -x4928 = x4927 -x4929 = x4928 -x4930 = x4929 -x4931 = x4930 -x4932 = x4931 -x4933 = x4932 -x4934 = x4933 -x4935 = x4934 -x4936 = x4935 -x4937 = x4936 -x4938 = x4937 -x4939 = x4938 -x4940 = x4939 -x4941 = x4940 -x4942 = x4941 -x4943 = x4942 -x4944 = x4943 -x4945 = x4944 -x4946 = x4945 -x4947 = x4946 -x4948 = x4947 -x4949 = x4948 -x4950 = x4949 -x4951 = x4950 -x4952 = x4951 -x4953 = x4952 -x4954 = x4953 -x4955 = x4954 -x4956 = x4955 -x4957 = x4956 -x4958 = x4957 -x4959 = x4958 -x4960 = x4959 -x4961 = x4960 -x4962 = x4961 -x4963 = x4962 -x4964 = x4963 -x4965 = x4964 -x4966 = x4965 -x4967 = x4966 -x4968 = x4967 -x4969 = x4968 -x4970 = x4969 -x4971 = x4970 -x4972 = x4971 -x4973 = x4972 -x4974 = x4973 -x4975 = x4974 -x4976 = x4975 -x4977 = x4976 -x4978 = x4977 -x4979 = x4978 -x4980 = x4979 -x4981 = x4980 -x4982 = x4981 -x4983 = x4982 -x4984 = x4983 -x4985 = x4984 -x4986 = x4985 -x4987 = x4986 -x4988 = x4987 -x4989 = x4988 -x4990 = x4989 -x4991 = x4990 -x4992 = x4991 -x4993 = x4992 -x4994 = x4993 -x4995 = x4994 -x4996 = x4995 -x4997 = x4996 -x4998 = x4997 -x4999 = x4998 -x5000 = x4999 -x5001 = x5000 -x5002 = x5001 -x5003 = x5002 -x5004 = x5003 -x5005 = x5004 -x5006 = x5005 -x5007 = x5006 -x5008 = x5007 -x5009 = x5008 -x5010 = x5009 -x5011 = x5010 -x5012 = x5011 -x5013 = x5012 -x5014 = x5013 -x5015 = x5014 -x5016 = x5015 -x5017 = x5016 -x5018 = x5017 -x5019 = x5018 -x5020 = x5019 -x5021 = x5020 -x5022 = x5021 -x5023 = x5022 -x5024 = x5023 -x5025 = x5024 -x5026 = x5025 -x5027 = x5026 -x5028 = x5027 -x5029 = x5028 -x5030 = x5029 -x5031 = x5030 -x5032 = x5031 -x5033 = x5032 -x5034 = x5033 -x5035 = x5034 -x5036 = x5035 -x5037 = x5036 -x5038 = x5037 -x5039 = x5038 -x5040 = x5039 -x5041 = x5040 -x5042 = x5041 -x5043 = x5042 -x5044 = x5043 -x5045 = x5044 -x5046 = x5045 -x5047 = x5046 -x5048 = x5047 -x5049 = x5048 -x5050 = x5049 -x5051 = x5050 -x5052 = x5051 -x5053 = x5052 -x5054 = x5053 -x5055 = x5054 -x5056 = x5055 -x5057 = x5056 -x5058 = x5057 -x5059 = x5058 -x5060 = x5059 -x5061 = x5060 -x5062 = x5061 -x5063 = x5062 -x5064 = x5063 -x5065 = x5064 -x5066 = x5065 -x5067 = x5066 -x5068 = x5067 -x5069 = x5068 -x5070 = x5069 -x5071 = x5070 -x5072 = x5071 -x5073 = x5072 -x5074 = x5073 -x5075 = x5074 -x5076 = x5075 -x5077 = x5076 -x5078 = x5077 -x5079 = x5078 -x5080 = x5079 -x5081 = x5080 -x5082 = x5081 -x5083 = x5082 -x5084 = x5083 -x5085 = x5084 -x5086 = x5085 -x5087 = x5086 -x5088 = x5087 -x5089 = x5088 -x5090 = x5089 -x5091 = x5090 -x5092 = x5091 -x5093 = x5092 -x5094 = x5093 -x5095 = x5094 -x5096 = x5095 -x5097 = x5096 -x5098 = x5097 -x5099 = x5098 -x5100 = x5099 -x5101 = x5100 -x5102 = x5101 -x5103 = x5102 -x5104 = x5103 -x5105 = x5104 -x5106 = x5105 -x5107 = x5106 -x5108 = x5107 -x5109 = x5108 -x5110 = x5109 -x5111 = x5110 -x5112 = x5111 -x5113 = x5112 -x5114 = x5113 -x5115 = x5114 -x5116 = x5115 -x5117 = x5116 -x5118 = x5117 -x5119 = x5118 -x5120 = x5119 -x5121 = x5120 -x5122 = x5121 -x5123 = x5122 -x5124 = x5123 -x5125 = x5124 -x5126 = x5125 -x5127 = x5126 -x5128 = x5127 -x5129 = x5128 -x5130 = x5129 -x5131 = x5130 -x5132 = x5131 -x5133 = x5132 -x5134 = x5133 -x5135 = x5134 -x5136 = x5135 -x5137 = x5136 -x5138 = x5137 -x5139 = x5138 -x5140 = x5139 -x5141 = x5140 -x5142 = x5141 -x5143 = x5142 -x5144 = x5143 -x5145 = x5144 -x5146 = x5145 -x5147 = x5146 -x5148 = x5147 -x5149 = x5148 -x5150 = x5149 -x5151 = x5150 -x5152 = x5151 -x5153 = x5152 -x5154 = x5153 -x5155 = x5154 -x5156 = x5155 -x5157 = x5156 -x5158 = x5157 -x5159 = x5158 -x5160 = x5159 -x5161 = x5160 -x5162 = x5161 -x5163 = x5162 -x5164 = x5163 -x5165 = x5164 -x5166 = x5165 -x5167 = x5166 -x5168 = x5167 -x5169 = x5168 -x5170 = x5169 -x5171 = x5170 -x5172 = x5171 -x5173 = x5172 -x5174 = x5173 -x5175 = x5174 -x5176 = x5175 -x5177 = x5176 -x5178 = x5177 -x5179 = x5178 -x5180 = x5179 -x5181 = x5180 -x5182 = x5181 -x5183 = x5182 -x5184 = x5183 -x5185 = x5184 -x5186 = x5185 -x5187 = x5186 -x5188 = x5187 -x5189 = x5188 -x5190 = x5189 -x5191 = x5190 -x5192 = x5191 -x5193 = x5192 -x5194 = x5193 -x5195 = x5194 -x5196 = x5195 -x5197 = x5196 -x5198 = x5197 -x5199 = x5198 -x5200 = x5199 -x5201 = x5200 -x5202 = x5201 -x5203 = x5202 -x5204 = x5203 -x5205 = x5204 -x5206 = x5205 -x5207 = x5206 -x5208 = x5207 -x5209 = x5208 -x5210 = x5209 -x5211 = x5210 -x5212 = x5211 -x5213 = x5212 -x5214 = x5213 -x5215 = x5214 -x5216 = x5215 -x5217 = x5216 -x5218 = x5217 -x5219 = x5218 -x5220 = x5219 -x5221 = x5220 -x5222 = x5221 -x5223 = x5222 -x5224 = x5223 -x5225 = x5224 -x5226 = x5225 -x5227 = x5226 -x5228 = x5227 -x5229 = x5228 -x5230 = x5229 -x5231 = x5230 -x5232 = x5231 -x5233 = x5232 -x5234 = x5233 -x5235 = x5234 -x5236 = x5235 -x5237 = x5236 -x5238 = x5237 -x5239 = x5238 -x5240 = x5239 -x5241 = x5240 -x5242 = x5241 -x5243 = x5242 -x5244 = x5243 -x5245 = x5244 -x5246 = x5245 -x5247 = x5246 -x5248 = x5247 -x5249 = x5248 -x5250 = x5249 -x5251 = x5250 -x5252 = x5251 -x5253 = x5252 -x5254 = x5253 -x5255 = x5254 -x5256 = x5255 -x5257 = x5256 -x5258 = x5257 -x5259 = x5258 -x5260 = x5259 -x5261 = x5260 -x5262 = x5261 -x5263 = x5262 -x5264 = x5263 -x5265 = x5264 -x5266 = x5265 -x5267 = x5266 -x5268 = x5267 -x5269 = x5268 -x5270 = x5269 -x5271 = x5270 -x5272 = x5271 -x5273 = x5272 -x5274 = x5273 -x5275 = x5274 -x5276 = x5275 -x5277 = x5276 -x5278 = x5277 -x5279 = x5278 -x5280 = x5279 -x5281 = x5280 -x5282 = x5281 -x5283 = x5282 -x5284 = x5283 -x5285 = x5284 -x5286 = x5285 -x5287 = x5286 -x5288 = x5287 -x5289 = x5288 -x5290 = x5289 -x5291 = x5290 -x5292 = x5291 -x5293 = x5292 -x5294 = x5293 -x5295 = x5294 -x5296 = x5295 -x5297 = x5296 -x5298 = x5297 -x5299 = x5298 -x5300 = x5299 -x5301 = x5300 -x5302 = x5301 -x5303 = x5302 -x5304 = x5303 -x5305 = x5304 -x5306 = x5305 -x5307 = x5306 -x5308 = x5307 -x5309 = x5308 -x5310 = x5309 -x5311 = x5310 -x5312 = x5311 -x5313 = x5312 -x5314 = x5313 -x5315 = x5314 -x5316 = x5315 -x5317 = x5316 -x5318 = x5317 -x5319 = x5318 -x5320 = x5319 -x5321 = x5320 -x5322 = x5321 -x5323 = x5322 -x5324 = x5323 -x5325 = x5324 -x5326 = x5325 -x5327 = x5326 -x5328 = x5327 -x5329 = x5328 -x5330 = x5329 -x5331 = x5330 -x5332 = x5331 -x5333 = x5332 -x5334 = x5333 -x5335 = x5334 -x5336 = x5335 -x5337 = x5336 -x5338 = x5337 -x5339 = x5338 -x5340 = x5339 -x5341 = x5340 -x5342 = x5341 -x5343 = x5342 -x5344 = x5343 -x5345 = x5344 -x5346 = x5345 -x5347 = x5346 -x5348 = x5347 -x5349 = x5348 -x5350 = x5349 -x5351 = x5350 -x5352 = x5351 -x5353 = x5352 -x5354 = x5353 -x5355 = x5354 -x5356 = x5355 -x5357 = x5356 -x5358 = x5357 -x5359 = x5358 -x5360 = x5359 -x5361 = x5360 -x5362 = x5361 -x5363 = x5362 -x5364 = x5363 -x5365 = x5364 -x5366 = x5365 -x5367 = x5366 -x5368 = x5367 -x5369 = x5368 -x5370 = x5369 -x5371 = x5370 -x5372 = x5371 -x5373 = x5372 -x5374 = x5373 -x5375 = x5374 -x5376 = x5375 -x5377 = x5376 -x5378 = x5377 -x5379 = x5378 -x5380 = x5379 -x5381 = x5380 -x5382 = x5381 -x5383 = x5382 -x5384 = x5383 -x5385 = x5384 -x5386 = x5385 -x5387 = x5386 -x5388 = x5387 -x5389 = x5388 -x5390 = x5389 -x5391 = x5390 -x5392 = x5391 -x5393 = x5392 -x5394 = x5393 -x5395 = x5394 -x5396 = x5395 -x5397 = x5396 -x5398 = x5397 -x5399 = x5398 -x5400 = x5399 -x5401 = x5400 -x5402 = x5401 -x5403 = x5402 -x5404 = x5403 -x5405 = x5404 -x5406 = x5405 -x5407 = x5406 -x5408 = x5407 -x5409 = x5408 -x5410 = x5409 -x5411 = x5410 -x5412 = x5411 -x5413 = x5412 -x5414 = x5413 -x5415 = x5414 -x5416 = x5415 -x5417 = x5416 -x5418 = x5417 -x5419 = x5418 -x5420 = x5419 -x5421 = x5420 -x5422 = x5421 -x5423 = x5422 -x5424 = x5423 -x5425 = x5424 -x5426 = x5425 -x5427 = x5426 -x5428 = x5427 -x5429 = x5428 -x5430 = x5429 -x5431 = x5430 -x5432 = x5431 -x5433 = x5432 -x5434 = x5433 -x5435 = x5434 -x5436 = x5435 -x5437 = x5436 -x5438 = x5437 -x5439 = x5438 -x5440 = x5439 -x5441 = x5440 -x5442 = x5441 -x5443 = x5442 -x5444 = x5443 -x5445 = x5444 -x5446 = x5445 -x5447 = x5446 -x5448 = x5447 -x5449 = x5448 -x5450 = x5449 -x5451 = x5450 -x5452 = x5451 -x5453 = x5452 -x5454 = x5453 -x5455 = x5454 -x5456 = x5455 -x5457 = x5456 -x5458 = x5457 -x5459 = x5458 -x5460 = x5459 -x5461 = x5460 -x5462 = x5461 -x5463 = x5462 -x5464 = x5463 -x5465 = x5464 -x5466 = x5465 -x5467 = x5466 -x5468 = x5467 -x5469 = x5468 -x5470 = x5469 -x5471 = x5470 -x5472 = x5471 -x5473 = x5472 -x5474 = x5473 -x5475 = x5474 -x5476 = x5475 -x5477 = x5476 -x5478 = x5477 -x5479 = x5478 -x5480 = x5479 -x5481 = x5480 -x5482 = x5481 -x5483 = x5482 -x5484 = x5483 -x5485 = x5484 -x5486 = x5485 -x5487 = x5486 -x5488 = x5487 -x5489 = x5488 -x5490 = x5489 -x5491 = x5490 -x5492 = x5491 -x5493 = x5492 -x5494 = x5493 -x5495 = x5494 -x5496 = x5495 -x5497 = x5496 -x5498 = x5497 -x5499 = x5498 -x5500 = x5499 -x5501 = x5500 -x5502 = x5501 -x5503 = x5502 -x5504 = x5503 -x5505 = x5504 -x5506 = x5505 -x5507 = x5506 -x5508 = x5507 -x5509 = x5508 -x5510 = x5509 -x5511 = x5510 -x5512 = x5511 -x5513 = x5512 -x5514 = x5513 -x5515 = x5514 -x5516 = x5515 -x5517 = x5516 -x5518 = x5517 -x5519 = x5518 -x5520 = x5519 -x5521 = x5520 -x5522 = x5521 -x5523 = x5522 -x5524 = x5523 -x5525 = x5524 -x5526 = x5525 -x5527 = x5526 -x5528 = x5527 -x5529 = x5528 -x5530 = x5529 -x5531 = x5530 -x5532 = x5531 -x5533 = x5532 -x5534 = x5533 -x5535 = x5534 -x5536 = x5535 -x5537 = x5536 -x5538 = x5537 -x5539 = x5538 -x5540 = x5539 -x5541 = x5540 -x5542 = x5541 -x5543 = x5542 -x5544 = x5543 -x5545 = x5544 -x5546 = x5545 -x5547 = x5546 -x5548 = x5547 -x5549 = x5548 -x5550 = x5549 -x5551 = x5550 -x5552 = x5551 -x5553 = x5552 -x5554 = x5553 -x5555 = x5554 -x5556 = x5555 -x5557 = x5556 -x5558 = x5557 -x5559 = x5558 -x5560 = x5559 -x5561 = x5560 -x5562 = x5561 -x5563 = x5562 -x5564 = x5563 -x5565 = x5564 -x5566 = x5565 -x5567 = x5566 -x5568 = x5567 -x5569 = x5568 -x5570 = x5569 -x5571 = x5570 -x5572 = x5571 -x5573 = x5572 -x5574 = x5573 -x5575 = x5574 -x5576 = x5575 -x5577 = x5576 -x5578 = x5577 -x5579 = x5578 -x5580 = x5579 -x5581 = x5580 -x5582 = x5581 -x5583 = x5582 -x5584 = x5583 -x5585 = x5584 -x5586 = x5585 -x5587 = x5586 -x5588 = x5587 -x5589 = x5588 -x5590 = x5589 -x5591 = x5590 -x5592 = x5591 -x5593 = x5592 -x5594 = x5593 -x5595 = x5594 -x5596 = x5595 -x5597 = x5596 -x5598 = x5597 -x5599 = x5598 -x5600 = x5599 -x5601 = x5600 -x5602 = x5601 -x5603 = x5602 -x5604 = x5603 -x5605 = x5604 -x5606 = x5605 -x5607 = x5606 -x5608 = x5607 -x5609 = x5608 -x5610 = x5609 -x5611 = x5610 -x5612 = x5611 -x5613 = x5612 -x5614 = x5613 -x5615 = x5614 -x5616 = x5615 -x5617 = x5616 -x5618 = x5617 -x5619 = x5618 -x5620 = x5619 -x5621 = x5620 -x5622 = x5621 -x5623 = x5622 -x5624 = x5623 -x5625 = x5624 -x5626 = x5625 -x5627 = x5626 -x5628 = x5627 -x5629 = x5628 -x5630 = x5629 -x5631 = x5630 -x5632 = x5631 -x5633 = x5632 -x5634 = x5633 -x5635 = x5634 -x5636 = x5635 -x5637 = x5636 -x5638 = x5637 -x5639 = x5638 -x5640 = x5639 -x5641 = x5640 -x5642 = x5641 -x5643 = x5642 -x5644 = x5643 -x5645 = x5644 -x5646 = x5645 -x5647 = x5646 -x5648 = x5647 -x5649 = x5648 -x5650 = x5649 -x5651 = x5650 -x5652 = x5651 -x5653 = x5652 -x5654 = x5653 -x5655 = x5654 -x5656 = x5655 -x5657 = x5656 -x5658 = x5657 -x5659 = x5658 -x5660 = x5659 -x5661 = x5660 -x5662 = x5661 -x5663 = x5662 -x5664 = x5663 -x5665 = x5664 -x5666 = x5665 -x5667 = x5666 -x5668 = x5667 -x5669 = x5668 -x5670 = x5669 -x5671 = x5670 -x5672 = x5671 -x5673 = x5672 -x5674 = x5673 -x5675 = x5674 -x5676 = x5675 -x5677 = x5676 -x5678 = x5677 -x5679 = x5678 -x5680 = x5679 -x5681 = x5680 -x5682 = x5681 -x5683 = x5682 -x5684 = x5683 -x5685 = x5684 -x5686 = x5685 -x5687 = x5686 -x5688 = x5687 -x5689 = x5688 -x5690 = x5689 -x5691 = x5690 -x5692 = x5691 -x5693 = x5692 -x5694 = x5693 -x5695 = x5694 -x5696 = x5695 -x5697 = x5696 -x5698 = x5697 -x5699 = x5698 -x5700 = x5699 -x5701 = x5700 -x5702 = x5701 -x5703 = x5702 -x5704 = x5703 -x5705 = x5704 -x5706 = x5705 -x5707 = x5706 -x5708 = x5707 -x5709 = x5708 -x5710 = x5709 -x5711 = x5710 -x5712 = x5711 -x5713 = x5712 -x5714 = x5713 -x5715 = x5714 -x5716 = x5715 -x5717 = x5716 -x5718 = x5717 -x5719 = x5718 -x5720 = x5719 -x5721 = x5720 -x5722 = x5721 -x5723 = x5722 -x5724 = x5723 -x5725 = x5724 -x5726 = x5725 -x5727 = x5726 -x5728 = x5727 -x5729 = x5728 -x5730 = x5729 -x5731 = x5730 -x5732 = x5731 -x5733 = x5732 -x5734 = x5733 -x5735 = x5734 -x5736 = x5735 -x5737 = x5736 -x5738 = x5737 -x5739 = x5738 -x5740 = x5739 -x5741 = x5740 -x5742 = x5741 -x5743 = x5742 -x5744 = x5743 -x5745 = x5744 -x5746 = x5745 -x5747 = x5746 -x5748 = x5747 -x5749 = x5748 -x5750 = x5749 -x5751 = x5750 -x5752 = x5751 -x5753 = x5752 -x5754 = x5753 -x5755 = x5754 -x5756 = x5755 -x5757 = x5756 -x5758 = x5757 -x5759 = x5758 -x5760 = x5759 -x5761 = x5760 -x5762 = x5761 -x5763 = x5762 -x5764 = x5763 -x5765 = x5764 -x5766 = x5765 -x5767 = x5766 -x5768 = x5767 -x5769 = x5768 -x5770 = x5769 -x5771 = x5770 -x5772 = x5771 -x5773 = x5772 -x5774 = x5773 -x5775 = x5774 -x5776 = x5775 -x5777 = x5776 -x5778 = x5777 -x5779 = x5778 -x5780 = x5779 -x5781 = x5780 -x5782 = x5781 -x5783 = x5782 -x5784 = x5783 -x5785 = x5784 -x5786 = x5785 -x5787 = x5786 -x5788 = x5787 -x5789 = x5788 -x5790 = x5789 -x5791 = x5790 -x5792 = x5791 -x5793 = x5792 -x5794 = x5793 -x5795 = x5794 -x5796 = x5795 -x5797 = x5796 -x5798 = x5797 -x5799 = x5798 -x5800 = x5799 -x5801 = x5800 -x5802 = x5801 -x5803 = x5802 -x5804 = x5803 -x5805 = x5804 -x5806 = x5805 -x5807 = x5806 -x5808 = x5807 -x5809 = x5808 -x5810 = x5809 -x5811 = x5810 -x5812 = x5811 -x5813 = x5812 -x5814 = x5813 -x5815 = x5814 -x5816 = x5815 -x5817 = x5816 -x5818 = x5817 -x5819 = x5818 -x5820 = x5819 -x5821 = x5820 -x5822 = x5821 -x5823 = x5822 -x5824 = x5823 -x5825 = x5824 -x5826 = x5825 -x5827 = x5826 -x5828 = x5827 -x5829 = x5828 -x5830 = x5829 -x5831 = x5830 -x5832 = x5831 -x5833 = x5832 -x5834 = x5833 -x5835 = x5834 -x5836 = x5835 -x5837 = x5836 -x5838 = x5837 -x5839 = x5838 -x5840 = x5839 -x5841 = x5840 -x5842 = x5841 -x5843 = x5842 -x5844 = x5843 -x5845 = x5844 -x5846 = x5845 -x5847 = x5846 -x5848 = x5847 -x5849 = x5848 -x5850 = x5849 -x5851 = x5850 -x5852 = x5851 -x5853 = x5852 -x5854 = x5853 -x5855 = x5854 -x5856 = x5855 -x5857 = x5856 -x5858 = x5857 -x5859 = x5858 -x5860 = x5859 -x5861 = x5860 -x5862 = x5861 -x5863 = x5862 -x5864 = x5863 -x5865 = x5864 -x5866 = x5865 -x5867 = x5866 -x5868 = x5867 -x5869 = x5868 -x5870 = x5869 -x5871 = x5870 -x5872 = x5871 -x5873 = x5872 -x5874 = x5873 -x5875 = x5874 -x5876 = x5875 -x5877 = x5876 -x5878 = x5877 -x5879 = x5878 -x5880 = x5879 -x5881 = x5880 -x5882 = x5881 -x5883 = x5882 -x5884 = x5883 -x5885 = x5884 -x5886 = x5885 -x5887 = x5886 -x5888 = x5887 -x5889 = x5888 -x5890 = x5889 -x5891 = x5890 -x5892 = x5891 -x5893 = x5892 -x5894 = x5893 -x5895 = x5894 -x5896 = x5895 -x5897 = x5896 -x5898 = x5897 -x5899 = x5898 -x5900 = x5899 -x5901 = x5900 -x5902 = x5901 -x5903 = x5902 -x5904 = x5903 -x5905 = x5904 -x5906 = x5905 -x5907 = x5906 -x5908 = x5907 -x5909 = x5908 -x5910 = x5909 -x5911 = x5910 -x5912 = x5911 -x5913 = x5912 -x5914 = x5913 -x5915 = x5914 -x5916 = x5915 -x5917 = x5916 -x5918 = x5917 -x5919 = x5918 -x5920 = x5919 -x5921 = x5920 -x5922 = x5921 -x5923 = x5922 -x5924 = x5923 -x5925 = x5924 -x5926 = x5925 -x5927 = x5926 -x5928 = x5927 -x5929 = x5928 -x5930 = x5929 -x5931 = x5930 -x5932 = x5931 -x5933 = x5932 -x5934 = x5933 -x5935 = x5934 -x5936 = x5935 -x5937 = x5936 -x5938 = x5937 -x5939 = x5938 -x5940 = x5939 -x5941 = x5940 -x5942 = x5941 -x5943 = x5942 -x5944 = x5943 -x5945 = x5944 -x5946 = x5945 -x5947 = x5946 -x5948 = x5947 -x5949 = x5948 -x5950 = x5949 -x5951 = x5950 -x5952 = x5951 -x5953 = x5952 -x5954 = x5953 -x5955 = x5954 -x5956 = x5955 -x5957 = x5956 -x5958 = x5957 -x5959 = x5958 -x5960 = x5959 -x5961 = x5960 -x5962 = x5961 -x5963 = x5962 -x5964 = x5963 -x5965 = x5964 -x5966 = x5965 -x5967 = x5966 -x5968 = x5967 -x5969 = x5968 -x5970 = x5969 -x5971 = x5970 -x5972 = x5971 -x5973 = x5972 -x5974 = x5973 -x5975 = x5974 -x5976 = x5975 -x5977 = x5976 -x5978 = x5977 -x5979 = x5978 -x5980 = x5979 -x5981 = x5980 -x5982 = x5981 -x5983 = x5982 -x5984 = x5983 -x5985 = x5984 -x5986 = x5985 -x5987 = x5986 -x5988 = x5987 -x5989 = x5988 -x5990 = x5989 -x5991 = x5990 -x5992 = x5991 -x5993 = x5992 -x5994 = x5993 -x5995 = x5994 -x5996 = x5995 -x5997 = x5996 -x5998 = x5997 -x5999 = x5998 -x6000 = x5999 -x6001 = x6000 -x6002 = x6001 -x6003 = x6002 -x6004 = x6003 -x6005 = x6004 -x6006 = x6005 -x6007 = x6006 -x6008 = x6007 -x6009 = x6008 -x6010 = x6009 -x6011 = x6010 -x6012 = x6011 -x6013 = x6012 -x6014 = x6013 -x6015 = x6014 -x6016 = x6015 -x6017 = x6016 -x6018 = x6017 -x6019 = x6018 -x6020 = x6019 -x6021 = x6020 -x6022 = x6021 -x6023 = x6022 -x6024 = x6023 -x6025 = x6024 -x6026 = x6025 -x6027 = x6026 -x6028 = x6027 -x6029 = x6028 -x6030 = x6029 -x6031 = x6030 -x6032 = x6031 -x6033 = x6032 -x6034 = x6033 -x6035 = x6034 -x6036 = x6035 -x6037 = x6036 -x6038 = x6037 -x6039 = x6038 -x6040 = x6039 -x6041 = x6040 -x6042 = x6041 -x6043 = x6042 -x6044 = x6043 -x6045 = x6044 -x6046 = x6045 -x6047 = x6046 -x6048 = x6047 -x6049 = x6048 -x6050 = x6049 -x6051 = x6050 -x6052 = x6051 -x6053 = x6052 -x6054 = x6053 -x6055 = x6054 -x6056 = x6055 -x6057 = x6056 -x6058 = x6057 -x6059 = x6058 -x6060 = x6059 -x6061 = x6060 -x6062 = x6061 -x6063 = x6062 -x6064 = x6063 -x6065 = x6064 -x6066 = x6065 -x6067 = x6066 -x6068 = x6067 -x6069 = x6068 -x6070 = x6069 -x6071 = x6070 -x6072 = x6071 -x6073 = x6072 -x6074 = x6073 -x6075 = x6074 -x6076 = x6075 -x6077 = x6076 -x6078 = x6077 -x6079 = x6078 -x6080 = x6079 -x6081 = x6080 -x6082 = x6081 -x6083 = x6082 -x6084 = x6083 -x6085 = x6084 -x6086 = x6085 -x6087 = x6086 -x6088 = x6087 -x6089 = x6088 -x6090 = x6089 -x6091 = x6090 -x6092 = x6091 -x6093 = x6092 -x6094 = x6093 -x6095 = x6094 -x6096 = x6095 -x6097 = x6096 -x6098 = x6097 -x6099 = x6098 -x6100 = x6099 -x6101 = x6100 -x6102 = x6101 -x6103 = x6102 -x6104 = x6103 -x6105 = x6104 -x6106 = x6105 -x6107 = x6106 -x6108 = x6107 -x6109 = x6108 -x6110 = x6109 -x6111 = x6110 -x6112 = x6111 -x6113 = x6112 -x6114 = x6113 -x6115 = x6114 -x6116 = x6115 -x6117 = x6116 -x6118 = x6117 -x6119 = x6118 -x6120 = x6119 -x6121 = x6120 -x6122 = x6121 -x6123 = x6122 -x6124 = x6123 -x6125 = x6124 -x6126 = x6125 -x6127 = x6126 -x6128 = x6127 -x6129 = x6128 -x6130 = x6129 -x6131 = x6130 -x6132 = x6131 -x6133 = x6132 -x6134 = x6133 -x6135 = x6134 -x6136 = x6135 -x6137 = x6136 -x6138 = x6137 -x6139 = x6138 -x6140 = x6139 -x6141 = x6140 -x6142 = x6141 -x6143 = x6142 -x6144 = x6143 -x6145 = x6144 -x6146 = x6145 -x6147 = x6146 -x6148 = x6147 -x6149 = x6148 -x6150 = x6149 -x6151 = x6150 -x6152 = x6151 -x6153 = x6152 -x6154 = x6153 -x6155 = x6154 -x6156 = x6155 -x6157 = x6156 -x6158 = x6157 -x6159 = x6158 -x6160 = x6159 -x6161 = x6160 -x6162 = x6161 -x6163 = x6162 -x6164 = x6163 -x6165 = x6164 -x6166 = x6165 -x6167 = x6166 -x6168 = x6167 -x6169 = x6168 -x6170 = x6169 -x6171 = x6170 -x6172 = x6171 -x6173 = x6172 -x6174 = x6173 -x6175 = x6174 -x6176 = x6175 -x6177 = x6176 -x6178 = x6177 -x6179 = x6178 -x6180 = x6179 -x6181 = x6180 -x6182 = x6181 -x6183 = x6182 -x6184 = x6183 -x6185 = x6184 -x6186 = x6185 -x6187 = x6186 -x6188 = x6187 -x6189 = x6188 -x6190 = x6189 -x6191 = x6190 -x6192 = x6191 -x6193 = x6192 -x6194 = x6193 -x6195 = x6194 -x6196 = x6195 -x6197 = x6196 -x6198 = x6197 -x6199 = x6198 -x6200 = x6199 -x6201 = x6200 -x6202 = x6201 -x6203 = x6202 -x6204 = x6203 -x6205 = x6204 -x6206 = x6205 -x6207 = x6206 -x6208 = x6207 -x6209 = x6208 -x6210 = x6209 -x6211 = x6210 -x6212 = x6211 -x6213 = x6212 -x6214 = x6213 -x6215 = x6214 -x6216 = x6215 -x6217 = x6216 -x6218 = x6217 -x6219 = x6218 -x6220 = x6219 -x6221 = x6220 -x6222 = x6221 -x6223 = x6222 -x6224 = x6223 -x6225 = x6224 -x6226 = x6225 -x6227 = x6226 -x6228 = x6227 -x6229 = x6228 -x6230 = x6229 -x6231 = x6230 -x6232 = x6231 -x6233 = x6232 -x6234 = x6233 -x6235 = x6234 -x6236 = x6235 -x6237 = x6236 -x6238 = x6237 -x6239 = x6238 -x6240 = x6239 -x6241 = x6240 -x6242 = x6241 -x6243 = x6242 -x6244 = x6243 -x6245 = x6244 -x6246 = x6245 -x6247 = x6246 -x6248 = x6247 -x6249 = x6248 -x6250 = x6249 -x6251 = x6250 -x6252 = x6251 -x6253 = x6252 -x6254 = x6253 -x6255 = x6254 -x6256 = x6255 -x6257 = x6256 -x6258 = x6257 -x6259 = x6258 -x6260 = x6259 -x6261 = x6260 -x6262 = x6261 -x6263 = x6262 -x6264 = x6263 -x6265 = x6264 -x6266 = x6265 -x6267 = x6266 -x6268 = x6267 -x6269 = x6268 -x6270 = x6269 -x6271 = x6270 -x6272 = x6271 -x6273 = x6272 -x6274 = x6273 -x6275 = x6274 -x6276 = x6275 -x6277 = x6276 -x6278 = x6277 -x6279 = x6278 -x6280 = x6279 -x6281 = x6280 -x6282 = x6281 -x6283 = x6282 -x6284 = x6283 -x6285 = x6284 -x6286 = x6285 -x6287 = x6286 -x6288 = x6287 -x6289 = x6288 -x6290 = x6289 -x6291 = x6290 -x6292 = x6291 -x6293 = x6292 -x6294 = x6293 -x6295 = x6294 -x6296 = x6295 -x6297 = x6296 -x6298 = x6297 -x6299 = x6298 -x6300 = x6299 -x6301 = x6300 -x6302 = x6301 -x6303 = x6302 -x6304 = x6303 -x6305 = x6304 -x6306 = x6305 -x6307 = x6306 -x6308 = x6307 -x6309 = x6308 -x6310 = x6309 -x6311 = x6310 -x6312 = x6311 -x6313 = x6312 -x6314 = x6313 -x6315 = x6314 -x6316 = x6315 -x6317 = x6316 -x6318 = x6317 -x6319 = x6318 -x6320 = x6319 -x6321 = x6320 -x6322 = x6321 -x6323 = x6322 -x6324 = x6323 -x6325 = x6324 -x6326 = x6325 -x6327 = x6326 -x6328 = x6327 -x6329 = x6328 -x6330 = x6329 -x6331 = x6330 -x6332 = x6331 -x6333 = x6332 -x6334 = x6333 -x6335 = x6334 -x6336 = x6335 -x6337 = x6336 -x6338 = x6337 -x6339 = x6338 -x6340 = x6339 -x6341 = x6340 -x6342 = x6341 -x6343 = x6342 -x6344 = x6343 -x6345 = x6344 -x6346 = x6345 -x6347 = x6346 -x6348 = x6347 -x6349 = x6348 -x6350 = x6349 -x6351 = x6350 -x6352 = x6351 -x6353 = x6352 -x6354 = x6353 -x6355 = x6354 -x6356 = x6355 -x6357 = x6356 -x6358 = x6357 -x6359 = x6358 -x6360 = x6359 -x6361 = x6360 -x6362 = x6361 -x6363 = x6362 -x6364 = x6363 -x6365 = x6364 -x6366 = x6365 -x6367 = x6366 -x6368 = x6367 -x6369 = x6368 -x6370 = x6369 -x6371 = x6370 -x6372 = x6371 -x6373 = x6372 -x6374 = x6373 -x6375 = x6374 -x6376 = x6375 -x6377 = x6376 -x6378 = x6377 -x6379 = x6378 -x6380 = x6379 -x6381 = x6380 -x6382 = x6381 -x6383 = x6382 -x6384 = x6383 -x6385 = x6384 -x6386 = x6385 -x6387 = x6386 -x6388 = x6387 -x6389 = x6388 -x6390 = x6389 -x6391 = x6390 -x6392 = x6391 -x6393 = x6392 -x6394 = x6393 -x6395 = x6394 -x6396 = x6395 -x6397 = x6396 -x6398 = x6397 -x6399 = x6398 -x6400 = x6399 -x6401 = x6400 -x6402 = x6401 -x6403 = x6402 -x6404 = x6403 -x6405 = x6404 -x6406 = x6405 -x6407 = x6406 -x6408 = x6407 -x6409 = x6408 -x6410 = x6409 -x6411 = x6410 -x6412 = x6411 -x6413 = x6412 -x6414 = x6413 -x6415 = x6414 -x6416 = x6415 -x6417 = x6416 -x6418 = x6417 -x6419 = x6418 -x6420 = x6419 -x6421 = x6420 -x6422 = x6421 -x6423 = x6422 -x6424 = x6423 -x6425 = x6424 -x6426 = x6425 -x6427 = x6426 -x6428 = x6427 -x6429 = x6428 -x6430 = x6429 -x6431 = x6430 -x6432 = x6431 -x6433 = x6432 -x6434 = x6433 -x6435 = x6434 -x6436 = x6435 -x6437 = x6436 -x6438 = x6437 -x6439 = x6438 -x6440 = x6439 -x6441 = x6440 -x6442 = x6441 -x6443 = x6442 -x6444 = x6443 -x6445 = x6444 -x6446 = x6445 -x6447 = x6446 -x6448 = x6447 -x6449 = x6448 -x6450 = x6449 -x6451 = x6450 -x6452 = x6451 -x6453 = x6452 -x6454 = x6453 -x6455 = x6454 -x6456 = x6455 -x6457 = x6456 -x6458 = x6457 -x6459 = x6458 -x6460 = x6459 -x6461 = x6460 -x6462 = x6461 -x6463 = x6462 -x6464 = x6463 -x6465 = x6464 -x6466 = x6465 -x6467 = x6466 -x6468 = x6467 -x6469 = x6468 -x6470 = x6469 -x6471 = x6470 -x6472 = x6471 -x6473 = x6472 -x6474 = x6473 -x6475 = x6474 -x6476 = x6475 -x6477 = x6476 -x6478 = x6477 -x6479 = x6478 -x6480 = x6479 -x6481 = x6480 -x6482 = x6481 -x6483 = x6482 -x6484 = x6483 -x6485 = x6484 -x6486 = x6485 -x6487 = x6486 -x6488 = x6487 -x6489 = x6488 -x6490 = x6489 -x6491 = x6490 -x6492 = x6491 -x6493 = x6492 -x6494 = x6493 -x6495 = x6494 -x6496 = x6495 -x6497 = x6496 -x6498 = x6497 -x6499 = x6498 -x6500 = x6499 -x6501 = x6500 -x6502 = x6501 -x6503 = x6502 -x6504 = x6503 -x6505 = x6504 -x6506 = x6505 -x6507 = x6506 -x6508 = x6507 -x6509 = x6508 -x6510 = x6509 -x6511 = x6510 -x6512 = x6511 -x6513 = x6512 -x6514 = x6513 -x6515 = x6514 -x6516 = x6515 -x6517 = x6516 -x6518 = x6517 -x6519 = x6518 -x6520 = x6519 -x6521 = x6520 -x6522 = x6521 -x6523 = x6522 -x6524 = x6523 -x6525 = x6524 -x6526 = x6525 -x6527 = x6526 -x6528 = x6527 -x6529 = x6528 -x6530 = x6529 -x6531 = x6530 -x6532 = x6531 -x6533 = x6532 -x6534 = x6533 -x6535 = x6534 -x6536 = x6535 -x6537 = x6536 -x6538 = x6537 -x6539 = x6538 -x6540 = x6539 -x6541 = x6540 -x6542 = x6541 -x6543 = x6542 -x6544 = x6543 -x6545 = x6544 -x6546 = x6545 -x6547 = x6546 -x6548 = x6547 -x6549 = x6548 -x6550 = x6549 -x6551 = x6550 -x6552 = x6551 -x6553 = x6552 -x6554 = x6553 -x6555 = x6554 -x6556 = x6555 -x6557 = x6556 -x6558 = x6557 -x6559 = x6558 -x6560 = x6559 -x6561 = x6560 -x6562 = x6561 -x6563 = x6562 -x6564 = x6563 -x6565 = x6564 -x6566 = x6565 -x6567 = x6566 -x6568 = x6567 -x6569 = x6568 -x6570 = x6569 -x6571 = x6570 -x6572 = x6571 -x6573 = x6572 -x6574 = x6573 -x6575 = x6574 -x6576 = x6575 -x6577 = x6576 -x6578 = x6577 -x6579 = x6578 -x6580 = x6579 -x6581 = x6580 -x6582 = x6581 -x6583 = x6582 -x6584 = x6583 -x6585 = x6584 -x6586 = x6585 -x6587 = x6586 -x6588 = x6587 -x6589 = x6588 -x6590 = x6589 -x6591 = x6590 -x6592 = x6591 -x6593 = x6592 -x6594 = x6593 -x6595 = x6594 -x6596 = x6595 -x6597 = x6596 -x6598 = x6597 -x6599 = x6598 -x6600 = x6599 -x6601 = x6600 -x6602 = x6601 -x6603 = x6602 -x6604 = x6603 -x6605 = x6604 -x6606 = x6605 -x6607 = x6606 -x6608 = x6607 -x6609 = x6608 -x6610 = x6609 -x6611 = x6610 -x6612 = x6611 -x6613 = x6612 -x6614 = x6613 -x6615 = x6614 -x6616 = x6615 -x6617 = x6616 -x6618 = x6617 -x6619 = x6618 -x6620 = x6619 -x6621 = x6620 -x6622 = x6621 -x6623 = x6622 -x6624 = x6623 -x6625 = x6624 -x6626 = x6625 -x6627 = x6626 -x6628 = x6627 -x6629 = x6628 -x6630 = x6629 -x6631 = x6630 -x6632 = x6631 -x6633 = x6632 -x6634 = x6633 -x6635 = x6634 -x6636 = x6635 -x6637 = x6636 -x6638 = x6637 -x6639 = x6638 -x6640 = x6639 -x6641 = x6640 -x6642 = x6641 -x6643 = x6642 -x6644 = x6643 -x6645 = x6644 -x6646 = x6645 -x6647 = x6646 -x6648 = x6647 -x6649 = x6648 -x6650 = x6649 -x6651 = x6650 -x6652 = x6651 -x6653 = x6652 -x6654 = x6653 -x6655 = x6654 -x6656 = x6655 -x6657 = x6656 -x6658 = x6657 -x6659 = x6658 -x6660 = x6659 -x6661 = x6660 -x6662 = x6661 -x6663 = x6662 -x6664 = x6663 -x6665 = x6664 -x6666 = x6665 -x6667 = x6666 -x6668 = x6667 -x6669 = x6668 -x6670 = x6669 -x6671 = x6670 -x6672 = x6671 -x6673 = x6672 -x6674 = x6673 -x6675 = x6674 -x6676 = x6675 -x6677 = x6676 -x6678 = x6677 -x6679 = x6678 -x6680 = x6679 -x6681 = x6680 -x6682 = x6681 -x6683 = x6682 -x6684 = x6683 -x6685 = x6684 -x6686 = x6685 -x6687 = x6686 -x6688 = x6687 -x6689 = x6688 -x6690 = x6689 -x6691 = x6690 -x6692 = x6691 -x6693 = x6692 -x6694 = x6693 -x6695 = x6694 -x6696 = x6695 -x6697 = x6696 -x6698 = x6697 -x6699 = x6698 -x6700 = x6699 -x6701 = x6700 -x6702 = x6701 -x6703 = x6702 -x6704 = x6703 -x6705 = x6704 -x6706 = x6705 -x6707 = x6706 -x6708 = x6707 -x6709 = x6708 -x6710 = x6709 -x6711 = x6710 -x6712 = x6711 -x6713 = x6712 -x6714 = x6713 -x6715 = x6714 -x6716 = x6715 -x6717 = x6716 -x6718 = x6717 -x6719 = x6718 -x6720 = x6719 -x6721 = x6720 -x6722 = x6721 -x6723 = x6722 -x6724 = x6723 -x6725 = x6724 -x6726 = x6725 -x6727 = x6726 -x6728 = x6727 -x6729 = x6728 -x6730 = x6729 -x6731 = x6730 -x6732 = x6731 -x6733 = x6732 -x6734 = x6733 -x6735 = x6734 -x6736 = x6735 -x6737 = x6736 -x6738 = x6737 -x6739 = x6738 -x6740 = x6739 -x6741 = x6740 -x6742 = x6741 -x6743 = x6742 -x6744 = x6743 -x6745 = x6744 -x6746 = x6745 -x6747 = x6746 -x6748 = x6747 -x6749 = x6748 -x6750 = x6749 -x6751 = x6750 -x6752 = x6751 -x6753 = x6752 -x6754 = x6753 -x6755 = x6754 -x6756 = x6755 -x6757 = x6756 -x6758 = x6757 -x6759 = x6758 -x6760 = x6759 -x6761 = x6760 -x6762 = x6761 -x6763 = x6762 -x6764 = x6763 -x6765 = x6764 -x6766 = x6765 -x6767 = x6766 -x6768 = x6767 -x6769 = x6768 -x6770 = x6769 -x6771 = x6770 -x6772 = x6771 -x6773 = x6772 -x6774 = x6773 -x6775 = x6774 -x6776 = x6775 -x6777 = x6776 -x6778 = x6777 -x6779 = x6778 -x6780 = x6779 -x6781 = x6780 -x6782 = x6781 -x6783 = x6782 -x6784 = x6783 -x6785 = x6784 -x6786 = x6785 -x6787 = x6786 -x6788 = x6787 -x6789 = x6788 -x6790 = x6789 -x6791 = x6790 -x6792 = x6791 -x6793 = x6792 -x6794 = x6793 -x6795 = x6794 -x6796 = x6795 -x6797 = x6796 -x6798 = x6797 -x6799 = x6798 -x6800 = x6799 -x6801 = x6800 -x6802 = x6801 -x6803 = x6802 -x6804 = x6803 -x6805 = x6804 -x6806 = x6805 -x6807 = x6806 -x6808 = x6807 -x6809 = x6808 -x6810 = x6809 -x6811 = x6810 -x6812 = x6811 -x6813 = x6812 -x6814 = x6813 -x6815 = x6814 -x6816 = x6815 -x6817 = x6816 -x6818 = x6817 -x6819 = x6818 -x6820 = x6819 -x6821 = x6820 -x6822 = x6821 -x6823 = x6822 -x6824 = x6823 -x6825 = x6824 -x6826 = x6825 -x6827 = x6826 -x6828 = x6827 -x6829 = x6828 -x6830 = x6829 -x6831 = x6830 -x6832 = x6831 -x6833 = x6832 -x6834 = x6833 -x6835 = x6834 -x6836 = x6835 -x6837 = x6836 -x6838 = x6837 -x6839 = x6838 -x6840 = x6839 -x6841 = x6840 -x6842 = x6841 -x6843 = x6842 -x6844 = x6843 -x6845 = x6844 -x6846 = x6845 -x6847 = x6846 -x6848 = x6847 -x6849 = x6848 -x6850 = x6849 -x6851 = x6850 -x6852 = x6851 -x6853 = x6852 -x6854 = x6853 -x6855 = x6854 -x6856 = x6855 -x6857 = x6856 -x6858 = x6857 -x6859 = x6858 -x6860 = x6859 -x6861 = x6860 -x6862 = x6861 -x6863 = x6862 -x6864 = x6863 -x6865 = x6864 -x6866 = x6865 -x6867 = x6866 -x6868 = x6867 -x6869 = x6868 -x6870 = x6869 -x6871 = x6870 -x6872 = x6871 -x6873 = x6872 -x6874 = x6873 -x6875 = x6874 -x6876 = x6875 -x6877 = x6876 -x6878 = x6877 -x6879 = x6878 -x6880 = x6879 -x6881 = x6880 -x6882 = x6881 -x6883 = x6882 -x6884 = x6883 -x6885 = x6884 -x6886 = x6885 -x6887 = x6886 -x6888 = x6887 -x6889 = x6888 -x6890 = x6889 -x6891 = x6890 -x6892 = x6891 -x6893 = x6892 -x6894 = x6893 -x6895 = x6894 -x6896 = x6895 -x6897 = x6896 -x6898 = x6897 -x6899 = x6898 -x6900 = x6899 -x6901 = x6900 -x6902 = x6901 -x6903 = x6902 -x6904 = x6903 -x6905 = x6904 -x6906 = x6905 -x6907 = x6906 -x6908 = x6907 -x6909 = x6908 -x6910 = x6909 -x6911 = x6910 -x6912 = x6911 -x6913 = x6912 -x6914 = x6913 -x6915 = x6914 -x6916 = x6915 -x6917 = x6916 -x6918 = x6917 -x6919 = x6918 -x6920 = x6919 -x6921 = x6920 -x6922 = x6921 -x6923 = x6922 -x6924 = x6923 -x6925 = x6924 -x6926 = x6925 -x6927 = x6926 -x6928 = x6927 -x6929 = x6928 -x6930 = x6929 -x6931 = x6930 -x6932 = x6931 -x6933 = x6932 -x6934 = x6933 -x6935 = x6934 -x6936 = x6935 -x6937 = x6936 -x6938 = x6937 -x6939 = x6938 -x6940 = x6939 -x6941 = x6940 -x6942 = x6941 -x6943 = x6942 -x6944 = x6943 -x6945 = x6944 -x6946 = x6945 -x6947 = x6946 -x6948 = x6947 -x6949 = x6948 -x6950 = x6949 -x6951 = x6950 -x6952 = x6951 -x6953 = x6952 -x6954 = x6953 -x6955 = x6954 -x6956 = x6955 -x6957 = x6956 -x6958 = x6957 -x6959 = x6958 -x6960 = x6959 -x6961 = x6960 -x6962 = x6961 -x6963 = x6962 -x6964 = x6963 -x6965 = x6964 -x6966 = x6965 -x6967 = x6966 -x6968 = x6967 -x6969 = x6968 -x6970 = x6969 -x6971 = x6970 -x6972 = x6971 -x6973 = x6972 -x6974 = x6973 -x6975 = x6974 -x6976 = x6975 -x6977 = x6976 -x6978 = x6977 -x6979 = x6978 -x6980 = x6979 -x6981 = x6980 -x6982 = x6981 -x6983 = x6982 -x6984 = x6983 -x6985 = x6984 -x6986 = x6985 -x6987 = x6986 -x6988 = x6987 -x6989 = x6988 -x6990 = x6989 -x6991 = x6990 -x6992 = x6991 -x6993 = x6992 -x6994 = x6993 -x6995 = x6994 -x6996 = x6995 -x6997 = x6996 -x6998 = x6997 -x6999 = x6998 -x7000 = x6999 -x7001 = x7000 -x7002 = x7001 -x7003 = x7002 -x7004 = x7003 -x7005 = x7004 -x7006 = x7005 -x7007 = x7006 -x7008 = x7007 -x7009 = x7008 -x7010 = x7009 -x7011 = x7010 -x7012 = x7011 -x7013 = x7012 -x7014 = x7013 -x7015 = x7014 -x7016 = x7015 -x7017 = x7016 -x7018 = x7017 -x7019 = x7018 -x7020 = x7019 -x7021 = x7020 -x7022 = x7021 -x7023 = x7022 -x7024 = x7023 -x7025 = x7024 -x7026 = x7025 -x7027 = x7026 -x7028 = x7027 -x7029 = x7028 -x7030 = x7029 -x7031 = x7030 -x7032 = x7031 -x7033 = x7032 -x7034 = x7033 -x7035 = x7034 -x7036 = x7035 -x7037 = x7036 -x7038 = x7037 -x7039 = x7038 -x7040 = x7039 -x7041 = x7040 -x7042 = x7041 -x7043 = x7042 -x7044 = x7043 -x7045 = x7044 -x7046 = x7045 -x7047 = x7046 -x7048 = x7047 -x7049 = x7048 -x7050 = x7049 -x7051 = x7050 -x7052 = x7051 -x7053 = x7052 -x7054 = x7053 -x7055 = x7054 -x7056 = x7055 -x7057 = x7056 -x7058 = x7057 -x7059 = x7058 -x7060 = x7059 -x7061 = x7060 -x7062 = x7061 -x7063 = x7062 -x7064 = x7063 -x7065 = x7064 -x7066 = x7065 -x7067 = x7066 -x7068 = x7067 -x7069 = x7068 -x7070 = x7069 -x7071 = x7070 -x7072 = x7071 -x7073 = x7072 -x7074 = x7073 -x7075 = x7074 -x7076 = x7075 -x7077 = x7076 -x7078 = x7077 -x7079 = x7078 -x7080 = x7079 -x7081 = x7080 -x7082 = x7081 -x7083 = x7082 -x7084 = x7083 -x7085 = x7084 -x7086 = x7085 -x7087 = x7086 -x7088 = x7087 -x7089 = x7088 -x7090 = x7089 -x7091 = x7090 -x7092 = x7091 -x7093 = x7092 -x7094 = x7093 -x7095 = x7094 -x7096 = x7095 -x7097 = x7096 -x7098 = x7097 -x7099 = x7098 -x7100 = x7099 -x7101 = x7100 -x7102 = x7101 -x7103 = x7102 -x7104 = x7103 -x7105 = x7104 -x7106 = x7105 -x7107 = x7106 -x7108 = x7107 -x7109 = x7108 -x7110 = x7109 -x7111 = x7110 -x7112 = x7111 -x7113 = x7112 -x7114 = x7113 -x7115 = x7114 -x7116 = x7115 -x7117 = x7116 -x7118 = x7117 -x7119 = x7118 -x7120 = x7119 -x7121 = x7120 -x7122 = x7121 -x7123 = x7122 -x7124 = x7123 -x7125 = x7124 -x7126 = x7125 -x7127 = x7126 -x7128 = x7127 -x7129 = x7128 -x7130 = x7129 -x7131 = x7130 -x7132 = x7131 -x7133 = x7132 -x7134 = x7133 -x7135 = x7134 -x7136 = x7135 -x7137 = x7136 -x7138 = x7137 -x7139 = x7138 -x7140 = x7139 -x7141 = x7140 -x7142 = x7141 -x7143 = x7142 -x7144 = x7143 -x7145 = x7144 -x7146 = x7145 -x7147 = x7146 -x7148 = x7147 -x7149 = x7148 -x7150 = x7149 -x7151 = x7150 -x7152 = x7151 -x7153 = x7152 -x7154 = x7153 -x7155 = x7154 -x7156 = x7155 -x7157 = x7156 -x7158 = x7157 -x7159 = x7158 -x7160 = x7159 -x7161 = x7160 -x7162 = x7161 -x7163 = x7162 -x7164 = x7163 -x7165 = x7164 -x7166 = x7165 -x7167 = x7166 -x7168 = x7167 -x7169 = x7168 -x7170 = x7169 -x7171 = x7170 -x7172 = x7171 -x7173 = x7172 -x7174 = x7173 -x7175 = x7174 -x7176 = x7175 -x7177 = x7176 -x7178 = x7177 -x7179 = x7178 -x7180 = x7179 -x7181 = x7180 -x7182 = x7181 -x7183 = x7182 -x7184 = x7183 -x7185 = x7184 -x7186 = x7185 -x7187 = x7186 -x7188 = x7187 -x7189 = x7188 -x7190 = x7189 -x7191 = x7190 -x7192 = x7191 -x7193 = x7192 -x7194 = x7193 -x7195 = x7194 -x7196 = x7195 -x7197 = x7196 -x7198 = x7197 -x7199 = x7198 -x7200 = x7199 -x7201 = x7200 -x7202 = x7201 -x7203 = x7202 -x7204 = x7203 -x7205 = x7204 -x7206 = x7205 -x7207 = x7206 -x7208 = x7207 -x7209 = x7208 -x7210 = x7209 -x7211 = x7210 -x7212 = x7211 -x7213 = x7212 -x7214 = x7213 -x7215 = x7214 -x7216 = x7215 -x7217 = x7216 -x7218 = x7217 -x7219 = x7218 -x7220 = x7219 -x7221 = x7220 -x7222 = x7221 -x7223 = x7222 -x7224 = x7223 -x7225 = x7224 -x7226 = x7225 -x7227 = x7226 -x7228 = x7227 -x7229 = x7228 -x7230 = x7229 -x7231 = x7230 -x7232 = x7231 -x7233 = x7232 -x7234 = x7233 -x7235 = x7234 -x7236 = x7235 -x7237 = x7236 -x7238 = x7237 -x7239 = x7238 -x7240 = x7239 -x7241 = x7240 -x7242 = x7241 -x7243 = x7242 -x7244 = x7243 -x7245 = x7244 -x7246 = x7245 -x7247 = x7246 -x7248 = x7247 -x7249 = x7248 -x7250 = x7249 -x7251 = x7250 -x7252 = x7251 -x7253 = x7252 -x7254 = x7253 -x7255 = x7254 -x7256 = x7255 -x7257 = x7256 -x7258 = x7257 -x7259 = x7258 -x7260 = x7259 -x7261 = x7260 -x7262 = x7261 -x7263 = x7262 -x7264 = x7263 -x7265 = x7264 -x7266 = x7265 -x7267 = x7266 -x7268 = x7267 -x7269 = x7268 -x7270 = x7269 -x7271 = x7270 -x7272 = x7271 -x7273 = x7272 -x7274 = x7273 -x7275 = x7274 -x7276 = x7275 -x7277 = x7276 -x7278 = x7277 -x7279 = x7278 -x7280 = x7279 -x7281 = x7280 -x7282 = x7281 -x7283 = x7282 -x7284 = x7283 -x7285 = x7284 -x7286 = x7285 -x7287 = x7286 -x7288 = x7287 -x7289 = x7288 -x7290 = x7289 -x7291 = x7290 -x7292 = x7291 -x7293 = x7292 -x7294 = x7293 -x7295 = x7294 -x7296 = x7295 -x7297 = x7296 -x7298 = x7297 -x7299 = x7298 -x7300 = x7299 -x7301 = x7300 -x7302 = x7301 -x7303 = x7302 -x7304 = x7303 -x7305 = x7304 -x7306 = x7305 -x7307 = x7306 -x7308 = x7307 -x7309 = x7308 -x7310 = x7309 -x7311 = x7310 -x7312 = x7311 -x7313 = x7312 -x7314 = x7313 -x7315 = x7314 -x7316 = x7315 -x7317 = x7316 -x7318 = x7317 -x7319 = x7318 -x7320 = x7319 -x7321 = x7320 -x7322 = x7321 -x7323 = x7322 -x7324 = x7323 -x7325 = x7324 -x7326 = x7325 -x7327 = x7326 -x7328 = x7327 -x7329 = x7328 -x7330 = x7329 -x7331 = x7330 -x7332 = x7331 -x7333 = x7332 -x7334 = x7333 -x7335 = x7334 -x7336 = x7335 -x7337 = x7336 -x7338 = x7337 -x7339 = x7338 -x7340 = x7339 -x7341 = x7340 -x7342 = x7341 -x7343 = x7342 -x7344 = x7343 -x7345 = x7344 -x7346 = x7345 -x7347 = x7346 -x7348 = x7347 -x7349 = x7348 -x7350 = x7349 -x7351 = x7350 -x7352 = x7351 -x7353 = x7352 -x7354 = x7353 -x7355 = x7354 -x7356 = x7355 -x7357 = x7356 -x7358 = x7357 -x7359 = x7358 -x7360 = x7359 -x7361 = x7360 -x7362 = x7361 -x7363 = x7362 -x7364 = x7363 -x7365 = x7364 -x7366 = x7365 -x7367 = x7366 -x7368 = x7367 -x7369 = x7368 -x7370 = x7369 -x7371 = x7370 -x7372 = x7371 -x7373 = x7372 -x7374 = x7373 -x7375 = x7374 -x7376 = x7375 -x7377 = x7376 -x7378 = x7377 -x7379 = x7378 -x7380 = x7379 -x7381 = x7380 -x7382 = x7381 -x7383 = x7382 -x7384 = x7383 -x7385 = x7384 -x7386 = x7385 -x7387 = x7386 -x7388 = x7387 -x7389 = x7388 -x7390 = x7389 -x7391 = x7390 -x7392 = x7391 -x7393 = x7392 -x7394 = x7393 -x7395 = x7394 -x7396 = x7395 -x7397 = x7396 -x7398 = x7397 -x7399 = x7398 -x7400 = x7399 -x7401 = x7400 -x7402 = x7401 -x7403 = x7402 -x7404 = x7403 -x7405 = x7404 -x7406 = x7405 -x7407 = x7406 -x7408 = x7407 -x7409 = x7408 -x7410 = x7409 -x7411 = x7410 -x7412 = x7411 -x7413 = x7412 -x7414 = x7413 -x7415 = x7414 -x7416 = x7415 -x7417 = x7416 -x7418 = x7417 -x7419 = x7418 -x7420 = x7419 -x7421 = x7420 -x7422 = x7421 -x7423 = x7422 -x7424 = x7423 -x7425 = x7424 -x7426 = x7425 -x7427 = x7426 -x7428 = x7427 -x7429 = x7428 -x7430 = x7429 -x7431 = x7430 -x7432 = x7431 -x7433 = x7432 -x7434 = x7433 -x7435 = x7434 -x7436 = x7435 -x7437 = x7436 -x7438 = x7437 -x7439 = x7438 -x7440 = x7439 -x7441 = x7440 -x7442 = x7441 -x7443 = x7442 -x7444 = x7443 -x7445 = x7444 -x7446 = x7445 -x7447 = x7446 -x7448 = x7447 -x7449 = x7448 -x7450 = x7449 -x7451 = x7450 -x7452 = x7451 -x7453 = x7452 -x7454 = x7453 -x7455 = x7454 -x7456 = x7455 -x7457 = x7456 -x7458 = x7457 -x7459 = x7458 -x7460 = x7459 -x7461 = x7460 -x7462 = x7461 -x7463 = x7462 -x7464 = x7463 -x7465 = x7464 -x7466 = x7465 -x7467 = x7466 -x7468 = x7467 -x7469 = x7468 -x7470 = x7469 -x7471 = x7470 -x7472 = x7471 -x7473 = x7472 -x7474 = x7473 -x7475 = x7474 -x7476 = x7475 -x7477 = x7476 -x7478 = x7477 -x7479 = x7478 -x7480 = x7479 -x7481 = x7480 -x7482 = x7481 -x7483 = x7482 -x7484 = x7483 -x7485 = x7484 -x7486 = x7485 -x7487 = x7486 -x7488 = x7487 -x7489 = x7488 -x7490 = x7489 -x7491 = x7490 -x7492 = x7491 -x7493 = x7492 -x7494 = x7493 -x7495 = x7494 -x7496 = x7495 -x7497 = x7496 -x7498 = x7497 -x7499 = x7498 -x7500 = x7499 -x7501 = x7500 -x7502 = x7501 -x7503 = x7502 -x7504 = x7503 -x7505 = x7504 -x7506 = x7505 -x7507 = x7506 -x7508 = x7507 -x7509 = x7508 -x7510 = x7509 -x7511 = x7510 -x7512 = x7511 -x7513 = x7512 -x7514 = x7513 -x7515 = x7514 -x7516 = x7515 -x7517 = x7516 -x7518 = x7517 -x7519 = x7518 -x7520 = x7519 -x7521 = x7520 -x7522 = x7521 -x7523 = x7522 -x7524 = x7523 -x7525 = x7524 -x7526 = x7525 -x7527 = x7526 -x7528 = x7527 -x7529 = x7528 -x7530 = x7529 -x7531 = x7530 -x7532 = x7531 -x7533 = x7532 -x7534 = x7533 -x7535 = x7534 -x7536 = x7535 -x7537 = x7536 -x7538 = x7537 -x7539 = x7538 -x7540 = x7539 -x7541 = x7540 -x7542 = x7541 -x7543 = x7542 -x7544 = x7543 -x7545 = x7544 -x7546 = x7545 -x7547 = x7546 -x7548 = x7547 -x7549 = x7548 -x7550 = x7549 -x7551 = x7550 -x7552 = x7551 -x7553 = x7552 -x7554 = x7553 -x7555 = x7554 -x7556 = x7555 -x7557 = x7556 -x7558 = x7557 -x7559 = x7558 -x7560 = x7559 -x7561 = x7560 -x7562 = x7561 -x7563 = x7562 -x7564 = x7563 -x7565 = x7564 -x7566 = x7565 -x7567 = x7566 -x7568 = x7567 -x7569 = x7568 -x7570 = x7569 -x7571 = x7570 -x7572 = x7571 -x7573 = x7572 -x7574 = x7573 -x7575 = x7574 -x7576 = x7575 -x7577 = x7576 -x7578 = x7577 -x7579 = x7578 -x7580 = x7579 -x7581 = x7580 -x7582 = x7581 -x7583 = x7582 -x7584 = x7583 -x7585 = x7584 -x7586 = x7585 -x7587 = x7586 -x7588 = x7587 -x7589 = x7588 -x7590 = x7589 -x7591 = x7590 -x7592 = x7591 -x7593 = x7592 -x7594 = x7593 -x7595 = x7594 -x7596 = x7595 -x7597 = x7596 -x7598 = x7597 -x7599 = x7598 -x7600 = x7599 -x7601 = x7600 -x7602 = x7601 -x7603 = x7602 -x7604 = x7603 -x7605 = x7604 -x7606 = x7605 -x7607 = x7606 -x7608 = x7607 -x7609 = x7608 -x7610 = x7609 -x7611 = x7610 -x7612 = x7611 -x7613 = x7612 -x7614 = x7613 -x7615 = x7614 -x7616 = x7615 -x7617 = x7616 -x7618 = x7617 -x7619 = x7618 -x7620 = x7619 -x7621 = x7620 -x7622 = x7621 -x7623 = x7622 -x7624 = x7623 -x7625 = x7624 -x7626 = x7625 -x7627 = x7626 -x7628 = x7627 -x7629 = x7628 -x7630 = x7629 -x7631 = x7630 -x7632 = x7631 -x7633 = x7632 -x7634 = x7633 -x7635 = x7634 -x7636 = x7635 -x7637 = x7636 -x7638 = x7637 -x7639 = x7638 -x7640 = x7639 -x7641 = x7640 -x7642 = x7641 -x7643 = x7642 -x7644 = x7643 -x7645 = x7644 -x7646 = x7645 -x7647 = x7646 -x7648 = x7647 -x7649 = x7648 -x7650 = x7649 -x7651 = x7650 -x7652 = x7651 -x7653 = x7652 -x7654 = x7653 -x7655 = x7654 -x7656 = x7655 -x7657 = x7656 -x7658 = x7657 -x7659 = x7658 -x7660 = x7659 -x7661 = x7660 -x7662 = x7661 -x7663 = x7662 -x7664 = x7663 -x7665 = x7664 -x7666 = x7665 -x7667 = x7666 -x7668 = x7667 -x7669 = x7668 -x7670 = x7669 -x7671 = x7670 -x7672 = x7671 -x7673 = x7672 -x7674 = x7673 -x7675 = x7674 -x7676 = x7675 -x7677 = x7676 -x7678 = x7677 -x7679 = x7678 -x7680 = x7679 -x7681 = x7680 -x7682 = x7681 -x7683 = x7682 -x7684 = x7683 -x7685 = x7684 -x7686 = x7685 -x7687 = x7686 -x7688 = x7687 -x7689 = x7688 -x7690 = x7689 -x7691 = x7690 -x7692 = x7691 -x7693 = x7692 -x7694 = x7693 -x7695 = x7694 -x7696 = x7695 -x7697 = x7696 -x7698 = x7697 -x7699 = x7698 -x7700 = x7699 -x7701 = x7700 -x7702 = x7701 -x7703 = x7702 -x7704 = x7703 -x7705 = x7704 -x7706 = x7705 -x7707 = x7706 -x7708 = x7707 -x7709 = x7708 -x7710 = x7709 -x7711 = x7710 -x7712 = x7711 -x7713 = x7712 -x7714 = x7713 -x7715 = x7714 -x7716 = x7715 -x7717 = x7716 -x7718 = x7717 -x7719 = x7718 -x7720 = x7719 -x7721 = x7720 -x7722 = x7721 -x7723 = x7722 -x7724 = x7723 -x7725 = x7724 -x7726 = x7725 -x7727 = x7726 -x7728 = x7727 -x7729 = x7728 -x7730 = x7729 -x7731 = x7730 -x7732 = x7731 -x7733 = x7732 -x7734 = x7733 -x7735 = x7734 -x7736 = x7735 -x7737 = x7736 -x7738 = x7737 -x7739 = x7738 -x7740 = x7739 -x7741 = x7740 -x7742 = x7741 -x7743 = x7742 -x7744 = x7743 -x7745 = x7744 -x7746 = x7745 -x7747 = x7746 -x7748 = x7747 -x7749 = x7748 -x7750 = x7749 -x7751 = x7750 -x7752 = x7751 -x7753 = x7752 -x7754 = x7753 -x7755 = x7754 -x7756 = x7755 -x7757 = x7756 -x7758 = x7757 -x7759 = x7758 -x7760 = x7759 -x7761 = x7760 -x7762 = x7761 -x7763 = x7762 -x7764 = x7763 -x7765 = x7764 -x7766 = x7765 -x7767 = x7766 -x7768 = x7767 -x7769 = x7768 -x7770 = x7769 -x7771 = x7770 -x7772 = x7771 -x7773 = x7772 -x7774 = x7773 -x7775 = x7774 -x7776 = x7775 -x7777 = x7776 -x7778 = x7777 -x7779 = x7778 -x7780 = x7779 -x7781 = x7780 -x7782 = x7781 -x7783 = x7782 -x7784 = x7783 -x7785 = x7784 -x7786 = x7785 -x7787 = x7786 -x7788 = x7787 -x7789 = x7788 -x7790 = x7789 -x7791 = x7790 -x7792 = x7791 -x7793 = x7792 -x7794 = x7793 -x7795 = x7794 -x7796 = x7795 -x7797 = x7796 -x7798 = x7797 -x7799 = x7798 -x7800 = x7799 -x7801 = x7800 -x7802 = x7801 -x7803 = x7802 -x7804 = x7803 -x7805 = x7804 -x7806 = x7805 -x7807 = x7806 -x7808 = x7807 -x7809 = x7808 -x7810 = x7809 -x7811 = x7810 -x7812 = x7811 -x7813 = x7812 -x7814 = x7813 -x7815 = x7814 -x7816 = x7815 -x7817 = x7816 -x7818 = x7817 -x7819 = x7818 -x7820 = x7819 -x7821 = x7820 -x7822 = x7821 -x7823 = x7822 -x7824 = x7823 -x7825 = x7824 -x7826 = x7825 -x7827 = x7826 -x7828 = x7827 -x7829 = x7828 -x7830 = x7829 -x7831 = x7830 -x7832 = x7831 -x7833 = x7832 -x7834 = x7833 -x7835 = x7834 -x7836 = x7835 -x7837 = x7836 -x7838 = x7837 -x7839 = x7838 -x7840 = x7839 -x7841 = x7840 -x7842 = x7841 -x7843 = x7842 -x7844 = x7843 -x7845 = x7844 -x7846 = x7845 -x7847 = x7846 -x7848 = x7847 -x7849 = x7848 -x7850 = x7849 -x7851 = x7850 -x7852 = x7851 -x7853 = x7852 -x7854 = x7853 -x7855 = x7854 -x7856 = x7855 -x7857 = x7856 -x7858 = x7857 -x7859 = x7858 -x7860 = x7859 -x7861 = x7860 -x7862 = x7861 -x7863 = x7862 -x7864 = x7863 -x7865 = x7864 -x7866 = x7865 -x7867 = x7866 -x7868 = x7867 -x7869 = x7868 -x7870 = x7869 -x7871 = x7870 -x7872 = x7871 -x7873 = x7872 -x7874 = x7873 -x7875 = x7874 -x7876 = x7875 -x7877 = x7876 -x7878 = x7877 -x7879 = x7878 -x7880 = x7879 -x7881 = x7880 -x7882 = x7881 -x7883 = x7882 -x7884 = x7883 -x7885 = x7884 -x7886 = x7885 -x7887 = x7886 -x7888 = x7887 -x7889 = x7888 -x7890 = x7889 -x7891 = x7890 -x7892 = x7891 -x7893 = x7892 -x7894 = x7893 -x7895 = x7894 -x7896 = x7895 -x7897 = x7896 -x7898 = x7897 -x7899 = x7898 -x7900 = x7899 -x7901 = x7900 -x7902 = x7901 -x7903 = x7902 -x7904 = x7903 -x7905 = x7904 -x7906 = x7905 -x7907 = x7906 -x7908 = x7907 -x7909 = x7908 -x7910 = x7909 -x7911 = x7910 -x7912 = x7911 -x7913 = x7912 -x7914 = x7913 -x7915 = x7914 -x7916 = x7915 -x7917 = x7916 -x7918 = x7917 -x7919 = x7918 -x7920 = x7919 -x7921 = x7920 -x7922 = x7921 -x7923 = x7922 -x7924 = x7923 -x7925 = x7924 -x7926 = x7925 -x7927 = x7926 -x7928 = x7927 -x7929 = x7928 -x7930 = x7929 -x7931 = x7930 -x7932 = x7931 -x7933 = x7932 -x7934 = x7933 -x7935 = x7934 -x7936 = x7935 -x7937 = x7936 -x7938 = x7937 -x7939 = x7938 -x7940 = x7939 -x7941 = x7940 -x7942 = x7941 -x7943 = x7942 -x7944 = x7943 -x7945 = x7944 -x7946 = x7945 -x7947 = x7946 -x7948 = x7947 -x7949 = x7948 -x7950 = x7949 -x7951 = x7950 -x7952 = x7951 -x7953 = x7952 -x7954 = x7953 -x7955 = x7954 -x7956 = x7955 -x7957 = x7956 -x7958 = x7957 -x7959 = x7958 -x7960 = x7959 -x7961 = x7960 -x7962 = x7961 -x7963 = x7962 -x7964 = x7963 -x7965 = x7964 -x7966 = x7965 -x7967 = x7966 -x7968 = x7967 -x7969 = x7968 -x7970 = x7969 -x7971 = x7970 -x7972 = x7971 -x7973 = x7972 -x7974 = x7973 -x7975 = x7974 -x7976 = x7975 -x7977 = x7976 -x7978 = x7977 -x7979 = x7978 -x7980 = x7979 -x7981 = x7980 -x7982 = x7981 -x7983 = x7982 -x7984 = x7983 -x7985 = x7984 -x7986 = x7985 -x7987 = x7986 -x7988 = x7987 -x7989 = x7988 -x7990 = x7989 -x7991 = x7990 -x7992 = x7991 -x7993 = x7992 -x7994 = x7993 -x7995 = x7994 -x7996 = x7995 -x7997 = x7996 -x7998 = x7997 -x7999 = x7998 -x8000 = x7999 -x8001 = x8000 -x8002 = x8001 -x8003 = x8002 -x8004 = x8003 -x8005 = x8004 -x8006 = x8005 -x8007 = x8006 -x8008 = x8007 -x8009 = x8008 -x8010 = x8009 -x8011 = x8010 -x8012 = x8011 -x8013 = x8012 -x8014 = x8013 -x8015 = x8014 -x8016 = x8015 -x8017 = x8016 -x8018 = x8017 -x8019 = x8018 -x8020 = x8019 -x8021 = x8020 -x8022 = x8021 -x8023 = x8022 -x8024 = x8023 -x8025 = x8024 -x8026 = x8025 -x8027 = x8026 -x8028 = x8027 -x8029 = x8028 -x8030 = x8029 -x8031 = x8030 -x8032 = x8031 -x8033 = x8032 -x8034 = x8033 -x8035 = x8034 -x8036 = x8035 -x8037 = x8036 -x8038 = x8037 -x8039 = x8038 -x8040 = x8039 -x8041 = x8040 -x8042 = x8041 -x8043 = x8042 -x8044 = x8043 -x8045 = x8044 -x8046 = x8045 -x8047 = x8046 -x8048 = x8047 -x8049 = x8048 -x8050 = x8049 -x8051 = x8050 -x8052 = x8051 -x8053 = x8052 -x8054 = x8053 -x8055 = x8054 -x8056 = x8055 -x8057 = x8056 -x8058 = x8057 -x8059 = x8058 -x8060 = x8059 -x8061 = x8060 -x8062 = x8061 -x8063 = x8062 -x8064 = x8063 -x8065 = x8064 -x8066 = x8065 -x8067 = x8066 -x8068 = x8067 -x8069 = x8068 -x8070 = x8069 -x8071 = x8070 -x8072 = x8071 -x8073 = x8072 -x8074 = x8073 -x8075 = x8074 -x8076 = x8075 -x8077 = x8076 -x8078 = x8077 -x8079 = x8078 -x8080 = x8079 -x8081 = x8080 -x8082 = x8081 -x8083 = x8082 -x8084 = x8083 -x8085 = x8084 -x8086 = x8085 -x8087 = x8086 -x8088 = x8087 -x8089 = x8088 -x8090 = x8089 -x8091 = x8090 -x8092 = x8091 -x8093 = x8092 -x8094 = x8093 -x8095 = x8094 -x8096 = x8095 -x8097 = x8096 -x8098 = x8097 -x8099 = x8098 -x8100 = x8099 -x8101 = x8100 -x8102 = x8101 -x8103 = x8102 -x8104 = x8103 -x8105 = x8104 -x8106 = x8105 -x8107 = x8106 -x8108 = x8107 -x8109 = x8108 -x8110 = x8109 -x8111 = x8110 -x8112 = x8111 -x8113 = x8112 -x8114 = x8113 -x8115 = x8114 -x8116 = x8115 -x8117 = x8116 -x8118 = x8117 -x8119 = x8118 -x8120 = x8119 -x8121 = x8120 -x8122 = x8121 -x8123 = x8122 -x8124 = x8123 -x8125 = x8124 -x8126 = x8125 -x8127 = x8126 -x8128 = x8127 -x8129 = x8128 -x8130 = x8129 -x8131 = x8130 -x8132 = x8131 -x8133 = x8132 -x8134 = x8133 -x8135 = x8134 -x8136 = x8135 -x8137 = x8136 -x8138 = x8137 -x8139 = x8138 -x8140 = x8139 -x8141 = x8140 -x8142 = x8141 -x8143 = x8142 -x8144 = x8143 -x8145 = x8144 -x8146 = x8145 -x8147 = x8146 -x8148 = x8147 -x8149 = x8148 -x8150 = x8149 -x8151 = x8150 -x8152 = x8151 -x8153 = x8152 -x8154 = x8153 -x8155 = x8154 -x8156 = x8155 -x8157 = x8156 -x8158 = x8157 -x8159 = x8158 -x8160 = x8159 -x8161 = x8160 -x8162 = x8161 -x8163 = x8162 -x8164 = x8163 -x8165 = x8164 -x8166 = x8165 -x8167 = x8166 -x8168 = x8167 -x8169 = x8168 -x8170 = x8169 -x8171 = x8170 -x8172 = x8171 -x8173 = x8172 -x8174 = x8173 -x8175 = x8174 -x8176 = x8175 -x8177 = x8176 -x8178 = x8177 -x8179 = x8178 -x8180 = x8179 -x8181 = x8180 -x8182 = x8181 -x8183 = x8182 -x8184 = x8183 -x8185 = x8184 -x8186 = x8185 -x8187 = x8186 -x8188 = x8187 -x8189 = x8188 -x8190 = x8189 -x8191 = x8190 -x8192 = x8191 -x8193 = x8192 -x8194 = x8193 -x8195 = x8194 -x8196 = x8195 -x8197 = x8196 -x8198 = x8197 -x8199 = x8198 -x8200 = x8199 -x8201 = x8200 -x8202 = x8201 -x8203 = x8202 -x8204 = x8203 -x8205 = x8204 -x8206 = x8205 -x8207 = x8206 -x8208 = x8207 -x8209 = x8208 -x8210 = x8209 -x8211 = x8210 -x8212 = x8211 -x8213 = x8212 -x8214 = x8213 -x8215 = x8214 -x8216 = x8215 -x8217 = x8216 -x8218 = x8217 -x8219 = x8218 -x8220 = x8219 -x8221 = x8220 -x8222 = x8221 -x8223 = x8222 -x8224 = x8223 -x8225 = x8224 -x8226 = x8225 -x8227 = x8226 -x8228 = x8227 -x8229 = x8228 -x8230 = x8229 -x8231 = x8230 -x8232 = x8231 -x8233 = x8232 -x8234 = x8233 -x8235 = x8234 -x8236 = x8235 -x8237 = x8236 -x8238 = x8237 -x8239 = x8238 -x8240 = x8239 -x8241 = x8240 -x8242 = x8241 -x8243 = x8242 -x8244 = x8243 -x8245 = x8244 -x8246 = x8245 -x8247 = x8246 -x8248 = x8247 -x8249 = x8248 -x8250 = x8249 -x8251 = x8250 -x8252 = x8251 -x8253 = x8252 -x8254 = x8253 -x8255 = x8254 -x8256 = x8255 -x8257 = x8256 -x8258 = x8257 -x8259 = x8258 -x8260 = x8259 -x8261 = x8260 -x8262 = x8261 -x8263 = x8262 -x8264 = x8263 -x8265 = x8264 -x8266 = x8265 -x8267 = x8266 -x8268 = x8267 -x8269 = x8268 -x8270 = x8269 -x8271 = x8270 -x8272 = x8271 -x8273 = x8272 -x8274 = x8273 -x8275 = x8274 -x8276 = x8275 -x8277 = x8276 -x8278 = x8277 -x8279 = x8278 -x8280 = x8279 -x8281 = x8280 -x8282 = x8281 -x8283 = x8282 -x8284 = x8283 -x8285 = x8284 -x8286 = x8285 -x8287 = x8286 -x8288 = x8287 -x8289 = x8288 -x8290 = x8289 -x8291 = x8290 -x8292 = x8291 -x8293 = x8292 -x8294 = x8293 -x8295 = x8294 -x8296 = x8295 -x8297 = x8296 -x8298 = x8297 -x8299 = x8298 -x8300 = x8299 -x8301 = x8300 -x8302 = x8301 -x8303 = x8302 -x8304 = x8303 -x8305 = x8304 -x8306 = x8305 -x8307 = x8306 -x8308 = x8307 -x8309 = x8308 -x8310 = x8309 -x8311 = x8310 -x8312 = x8311 -x8313 = x8312 -x8314 = x8313 -x8315 = x8314 -x8316 = x8315 -x8317 = x8316 -x8318 = x8317 -x8319 = x8318 -x8320 = x8319 -x8321 = x8320 -x8322 = x8321 -x8323 = x8322 -x8324 = x8323 -x8325 = x8324 -x8326 = x8325 -x8327 = x8326 -x8328 = x8327 -x8329 = x8328 -x8330 = x8329 -x8331 = x8330 -x8332 = x8331 -x8333 = x8332 -x8334 = x8333 -x8335 = x8334 -x8336 = x8335 -x8337 = x8336 -x8338 = x8337 -x8339 = x8338 -x8340 = x8339 -x8341 = x8340 -x8342 = x8341 -x8343 = x8342 -x8344 = x8343 -x8345 = x8344 -x8346 = x8345 -x8347 = x8346 -x8348 = x8347 -x8349 = x8348 -x8350 = x8349 -x8351 = x8350 -x8352 = x8351 -x8353 = x8352 -x8354 = x8353 -x8355 = x8354 -x8356 = x8355 -x8357 = x8356 -x8358 = x8357 -x8359 = x8358 -x8360 = x8359 -x8361 = x8360 -x8362 = x8361 -x8363 = x8362 -x8364 = x8363 -x8365 = x8364 -x8366 = x8365 -x8367 = x8366 -x8368 = x8367 -x8369 = x8368 -x8370 = x8369 -x8371 = x8370 -x8372 = x8371 -x8373 = x8372 -x8374 = x8373 -x8375 = x8374 -x8376 = x8375 -x8377 = x8376 -x8378 = x8377 -x8379 = x8378 -x8380 = x8379 -x8381 = x8380 -x8382 = x8381 -x8383 = x8382 -x8384 = x8383 -x8385 = x8384 -x8386 = x8385 -x8387 = x8386 -x8388 = x8387 -x8389 = x8388 -x8390 = x8389 -x8391 = x8390 -x8392 = x8391 -x8393 = x8392 -x8394 = x8393 -x8395 = x8394 -x8396 = x8395 -x8397 = x8396 -x8398 = x8397 -x8399 = x8398 -x8400 = x8399 -x8401 = x8400 -x8402 = x8401 -x8403 = x8402 -x8404 = x8403 -x8405 = x8404 -x8406 = x8405 -x8407 = x8406 -x8408 = x8407 -x8409 = x8408 -x8410 = x8409 -x8411 = x8410 -x8412 = x8411 -x8413 = x8412 -x8414 = x8413 -x8415 = x8414 -x8416 = x8415 -x8417 = x8416 -x8418 = x8417 -x8419 = x8418 -x8420 = x8419 -x8421 = x8420 -x8422 = x8421 -x8423 = x8422 -x8424 = x8423 -x8425 = x8424 -x8426 = x8425 -x8427 = x8426 -x8428 = x8427 -x8429 = x8428 -x8430 = x8429 -x8431 = x8430 -x8432 = x8431 -x8433 = x8432 -x8434 = x8433 -x8435 = x8434 -x8436 = x8435 -x8437 = x8436 -x8438 = x8437 -x8439 = x8438 -x8440 = x8439 -x8441 = x8440 -x8442 = x8441 -x8443 = x8442 -x8444 = x8443 -x8445 = x8444 -x8446 = x8445 -x8447 = x8446 -x8448 = x8447 -x8449 = x8448 -x8450 = x8449 -x8451 = x8450 -x8452 = x8451 -x8453 = x8452 -x8454 = x8453 -x8455 = x8454 -x8456 = x8455 -x8457 = x8456 -x8458 = x8457 -x8459 = x8458 -x8460 = x8459 -x8461 = x8460 -x8462 = x8461 -x8463 = x8462 -x8464 = x8463 -x8465 = x8464 -x8466 = x8465 -x8467 = x8466 -x8468 = x8467 -x8469 = x8468 -x8470 = x8469 -x8471 = x8470 -x8472 = x8471 -x8473 = x8472 -x8474 = x8473 -x8475 = x8474 -x8476 = x8475 -x8477 = x8476 -x8478 = x8477 -x8479 = x8478 -x8480 = x8479 -x8481 = x8480 -x8482 = x8481 -x8483 = x8482 -x8484 = x8483 -x8485 = x8484 -x8486 = x8485 -x8487 = x8486 -x8488 = x8487 -x8489 = x8488 -x8490 = x8489 -x8491 = x8490 -x8492 = x8491 -x8493 = x8492 -x8494 = x8493 -x8495 = x8494 -x8496 = x8495 -x8497 = x8496 -x8498 = x8497 -x8499 = x8498 -x8500 = x8499 -x8501 = x8500 -x8502 = x8501 -x8503 = x8502 -x8504 = x8503 -x8505 = x8504 -x8506 = x8505 -x8507 = x8506 -x8508 = x8507 -x8509 = x8508 -x8510 = x8509 -x8511 = x8510 -x8512 = x8511 -x8513 = x8512 -x8514 = x8513 -x8515 = x8514 -x8516 = x8515 -x8517 = x8516 -x8518 = x8517 -x8519 = x8518 -x8520 = x8519 -x8521 = x8520 -x8522 = x8521 -x8523 = x8522 -x8524 = x8523 -x8525 = x8524 -x8526 = x8525 -x8527 = x8526 -x8528 = x8527 -x8529 = x8528 -x8530 = x8529 -x8531 = x8530 -x8532 = x8531 -x8533 = x8532 -x8534 = x8533 -x8535 = x8534 -x8536 = x8535 -x8537 = x8536 -x8538 = x8537 -x8539 = x8538 -x8540 = x8539 -x8541 = x8540 -x8542 = x8541 -x8543 = x8542 -x8544 = x8543 -x8545 = x8544 -x8546 = x8545 -x8547 = x8546 -x8548 = x8547 -x8549 = x8548 -x8550 = x8549 -x8551 = x8550 -x8552 = x8551 -x8553 = x8552 -x8554 = x8553 -x8555 = x8554 -x8556 = x8555 -x8557 = x8556 -x8558 = x8557 -x8559 = x8558 -x8560 = x8559 -x8561 = x8560 -x8562 = x8561 -x8563 = x8562 -x8564 = x8563 -x8565 = x8564 -x8566 = x8565 -x8567 = x8566 -x8568 = x8567 -x8569 = x8568 -x8570 = x8569 -x8571 = x8570 -x8572 = x8571 -x8573 = x8572 -x8574 = x8573 -x8575 = x8574 -x8576 = x8575 -x8577 = x8576 -x8578 = x8577 -x8579 = x8578 -x8580 = x8579 -x8581 = x8580 -x8582 = x8581 -x8583 = x8582 -x8584 = x8583 -x8585 = x8584 -x8586 = x8585 -x8587 = x8586 -x8588 = x8587 -x8589 = x8588 -x8590 = x8589 -x8591 = x8590 -x8592 = x8591 -x8593 = x8592 -x8594 = x8593 -x8595 = x8594 -x8596 = x8595 -x8597 = x8596 -x8598 = x8597 -x8599 = x8598 -x8600 = x8599 -x8601 = x8600 -x8602 = x8601 -x8603 = x8602 -x8604 = x8603 -x8605 = x8604 -x8606 = x8605 -x8607 = x8606 -x8608 = x8607 -x8609 = x8608 -x8610 = x8609 -x8611 = x8610 -x8612 = x8611 -x8613 = x8612 -x8614 = x8613 -x8615 = x8614 -x8616 = x8615 -x8617 = x8616 -x8618 = x8617 -x8619 = x8618 -x8620 = x8619 -x8621 = x8620 -x8622 = x8621 -x8623 = x8622 -x8624 = x8623 -x8625 = x8624 -x8626 = x8625 -x8627 = x8626 -x8628 = x8627 -x8629 = x8628 -x8630 = x8629 -x8631 = x8630 -x8632 = x8631 -x8633 = x8632 -x8634 = x8633 -x8635 = x8634 -x8636 = x8635 -x8637 = x8636 -x8638 = x8637 -x8639 = x8638 -x8640 = x8639 -x8641 = x8640 -x8642 = x8641 -x8643 = x8642 -x8644 = x8643 -x8645 = x8644 -x8646 = x8645 -x8647 = x8646 -x8648 = x8647 -x8649 = x8648 -x8650 = x8649 -x8651 = x8650 -x8652 = x8651 -x8653 = x8652 -x8654 = x8653 -x8655 = x8654 -x8656 = x8655 -x8657 = x8656 -x8658 = x8657 -x8659 = x8658 -x8660 = x8659 -x8661 = x8660 -x8662 = x8661 -x8663 = x8662 -x8664 = x8663 -x8665 = x8664 -x8666 = x8665 -x8667 = x8666 -x8668 = x8667 -x8669 = x8668 -x8670 = x8669 -x8671 = x8670 -x8672 = x8671 -x8673 = x8672 -x8674 = x8673 -x8675 = x8674 -x8676 = x8675 -x8677 = x8676 -x8678 = x8677 -x8679 = x8678 -x8680 = x8679 -x8681 = x8680 -x8682 = x8681 -x8683 = x8682 -x8684 = x8683 -x8685 = x8684 -x8686 = x8685 -x8687 = x8686 -x8688 = x8687 -x8689 = x8688 -x8690 = x8689 -x8691 = x8690 -x8692 = x8691 -x8693 = x8692 -x8694 = x8693 -x8695 = x8694 -x8696 = x8695 -x8697 = x8696 -x8698 = x8697 -x8699 = x8698 -x8700 = x8699 -x8701 = x8700 -x8702 = x8701 -x8703 = x8702 -x8704 = x8703 -x8705 = x8704 -x8706 = x8705 -x8707 = x8706 -x8708 = x8707 -x8709 = x8708 -x8710 = x8709 -x8711 = x8710 -x8712 = x8711 -x8713 = x8712 -x8714 = x8713 -x8715 = x8714 -x8716 = x8715 -x8717 = x8716 -x8718 = x8717 -x8719 = x8718 -x8720 = x8719 -x8721 = x8720 -x8722 = x8721 -x8723 = x8722 -x8724 = x8723 -x8725 = x8724 -x8726 = x8725 -x8727 = x8726 -x8728 = x8727 -x8729 = x8728 -x8730 = x8729 -x8731 = x8730 -x8732 = x8731 -x8733 = x8732 -x8734 = x8733 -x8735 = x8734 -x8736 = x8735 -x8737 = x8736 -x8738 = x8737 -x8739 = x8738 -x8740 = x8739 -x8741 = x8740 -x8742 = x8741 -x8743 = x8742 -x8744 = x8743 -x8745 = x8744 -x8746 = x8745 -x8747 = x8746 -x8748 = x8747 -x8749 = x8748 -x8750 = x8749 -x8751 = x8750 -x8752 = x8751 -x8753 = x8752 -x8754 = x8753 -x8755 = x8754 -x8756 = x8755 -x8757 = x8756 -x8758 = x8757 -x8759 = x8758 -x8760 = x8759 -x8761 = x8760 -x8762 = x8761 -x8763 = x8762 -x8764 = x8763 -x8765 = x8764 -x8766 = x8765 -x8767 = x8766 -x8768 = x8767 -x8769 = x8768 -x8770 = x8769 -x8771 = x8770 -x8772 = x8771 -x8773 = x8772 -x8774 = x8773 -x8775 = x8774 -x8776 = x8775 -x8777 = x8776 -x8778 = x8777 -x8779 = x8778 -x8780 = x8779 -x8781 = x8780 -x8782 = x8781 -x8783 = x8782 -x8784 = x8783 -x8785 = x8784 -x8786 = x8785 -x8787 = x8786 -x8788 = x8787 -x8789 = x8788 -x8790 = x8789 -x8791 = x8790 -x8792 = x8791 -x8793 = x8792 -x8794 = x8793 -x8795 = x8794 -x8796 = x8795 -x8797 = x8796 -x8798 = x8797 -x8799 = x8798 -x8800 = x8799 -x8801 = x8800 -x8802 = x8801 -x8803 = x8802 -x8804 = x8803 -x8805 = x8804 -x8806 = x8805 -x8807 = x8806 -x8808 = x8807 -x8809 = x8808 -x8810 = x8809 -x8811 = x8810 -x8812 = x8811 -x8813 = x8812 -x8814 = x8813 -x8815 = x8814 -x8816 = x8815 -x8817 = x8816 -x8818 = x8817 -x8819 = x8818 -x8820 = x8819 -x8821 = x8820 -x8822 = x8821 -x8823 = x8822 -x8824 = x8823 -x8825 = x8824 -x8826 = x8825 -x8827 = x8826 -x8828 = x8827 -x8829 = x8828 -x8830 = x8829 -x8831 = x8830 -x8832 = x8831 -x8833 = x8832 -x8834 = x8833 -x8835 = x8834 -x8836 = x8835 -x8837 = x8836 -x8838 = x8837 -x8839 = x8838 -x8840 = x8839 -x8841 = x8840 -x8842 = x8841 -x8843 = x8842 -x8844 = x8843 -x8845 = x8844 -x8846 = x8845 -x8847 = x8846 -x8848 = x8847 -x8849 = x8848 -x8850 = x8849 -x8851 = x8850 -x8852 = x8851 -x8853 = x8852 -x8854 = x8853 -x8855 = x8854 -x8856 = x8855 -x8857 = x8856 -x8858 = x8857 -x8859 = x8858 -x8860 = x8859 -x8861 = x8860 -x8862 = x8861 -x8863 = x8862 -x8864 = x8863 -x8865 = x8864 -x8866 = x8865 -x8867 = x8866 -x8868 = x8867 -x8869 = x8868 -x8870 = x8869 -x8871 = x8870 -x8872 = x8871 -x8873 = x8872 -x8874 = x8873 -x8875 = x8874 -x8876 = x8875 -x8877 = x8876 -x8878 = x8877 -x8879 = x8878 -x8880 = x8879 -x8881 = x8880 -x8882 = x8881 -x8883 = x8882 -x8884 = x8883 -x8885 = x8884 -x8886 = x8885 -x8887 = x8886 -x8888 = x8887 -x8889 = x8888 -x8890 = x8889 -x8891 = x8890 -x8892 = x8891 -x8893 = x8892 -x8894 = x8893 -x8895 = x8894 -x8896 = x8895 -x8897 = x8896 -x8898 = x8897 -x8899 = x8898 -x8900 = x8899 -x8901 = x8900 -x8902 = x8901 -x8903 = x8902 -x8904 = x8903 -x8905 = x8904 -x8906 = x8905 -x8907 = x8906 -x8908 = x8907 -x8909 = x8908 -x8910 = x8909 -x8911 = x8910 -x8912 = x8911 -x8913 = x8912 -x8914 = x8913 -x8915 = x8914 -x8916 = x8915 -x8917 = x8916 -x8918 = x8917 -x8919 = x8918 -x8920 = x8919 -x8921 = x8920 -x8922 = x8921 -x8923 = x8922 -x8924 = x8923 -x8925 = x8924 -x8926 = x8925 -x8927 = x8926 -x8928 = x8927 -x8929 = x8928 -x8930 = x8929 -x8931 = x8930 -x8932 = x8931 -x8933 = x8932 -x8934 = x8933 -x8935 = x8934 -x8936 = x8935 -x8937 = x8936 -x8938 = x8937 -x8939 = x8938 -x8940 = x8939 -x8941 = x8940 -x8942 = x8941 -x8943 = x8942 -x8944 = x8943 -x8945 = x8944 -x8946 = x8945 -x8947 = x8946 -x8948 = x8947 -x8949 = x8948 -x8950 = x8949 -x8951 = x8950 -x8952 = x8951 -x8953 = x8952 -x8954 = x8953 -x8955 = x8954 -x8956 = x8955 -x8957 = x8956 -x8958 = x8957 -x8959 = x8958 -x8960 = x8959 -x8961 = x8960 -x8962 = x8961 -x8963 = x8962 -x8964 = x8963 -x8965 = x8964 -x8966 = x8965 -x8967 = x8966 -x8968 = x8967 -x8969 = x8968 -x8970 = x8969 -x8971 = x8970 -x8972 = x8971 -x8973 = x8972 -x8974 = x8973 -x8975 = x8974 -x8976 = x8975 -x8977 = x8976 -x8978 = x8977 -x8979 = x8978 -x8980 = x8979 -x8981 = x8980 -x8982 = x8981 -x8983 = x8982 -x8984 = x8983 -x8985 = x8984 -x8986 = x8985 -x8987 = x8986 -x8988 = x8987 -x8989 = x8988 -x8990 = x8989 -x8991 = x8990 -x8992 = x8991 -x8993 = x8992 -x8994 = x8993 -x8995 = x8994 -x8996 = x8995 -x8997 = x8996 -x8998 = x8997 -x8999 = x8998 -x9000 = x8999 -x9001 = x9000 -x9002 = x9001 -x9003 = x9002 -x9004 = x9003 -x9005 = x9004 -x9006 = x9005 -x9007 = x9006 -x9008 = x9007 -x9009 = x9008 -x9010 = x9009 -x9011 = x9010 -x9012 = x9011 -x9013 = x9012 -x9014 = x9013 -x9015 = x9014 -x9016 = x9015 -x9017 = x9016 -x9018 = x9017 -x9019 = x9018 -x9020 = x9019 -x9021 = x9020 -x9022 = x9021 -x9023 = x9022 -x9024 = x9023 -x9025 = x9024 -x9026 = x9025 -x9027 = x9026 -x9028 = x9027 -x9029 = x9028 -x9030 = x9029 -x9031 = x9030 -x9032 = x9031 -x9033 = x9032 -x9034 = x9033 -x9035 = x9034 -x9036 = x9035 -x9037 = x9036 -x9038 = x9037 -x9039 = x9038 -x9040 = x9039 -x9041 = x9040 -x9042 = x9041 -x9043 = x9042 -x9044 = x9043 -x9045 = x9044 -x9046 = x9045 -x9047 = x9046 -x9048 = x9047 -x9049 = x9048 -x9050 = x9049 -x9051 = x9050 -x9052 = x9051 -x9053 = x9052 -x9054 = x9053 -x9055 = x9054 -x9056 = x9055 -x9057 = x9056 -x9058 = x9057 -x9059 = x9058 -x9060 = x9059 -x9061 = x9060 -x9062 = x9061 -x9063 = x9062 -x9064 = x9063 -x9065 = x9064 -x9066 = x9065 -x9067 = x9066 -x9068 = x9067 -x9069 = x9068 -x9070 = x9069 -x9071 = x9070 -x9072 = x9071 -x9073 = x9072 -x9074 = x9073 -x9075 = x9074 -x9076 = x9075 -x9077 = x9076 -x9078 = x9077 -x9079 = x9078 -x9080 = x9079 -x9081 = x9080 -x9082 = x9081 -x9083 = x9082 -x9084 = x9083 -x9085 = x9084 -x9086 = x9085 -x9087 = x9086 -x9088 = x9087 -x9089 = x9088 -x9090 = x9089 -x9091 = x9090 -x9092 = x9091 -x9093 = x9092 -x9094 = x9093 -x9095 = x9094 -x9096 = x9095 -x9097 = x9096 -x9098 = x9097 -x9099 = x9098 -x9100 = x9099 -x9101 = x9100 -x9102 = x9101 -x9103 = x9102 -x9104 = x9103 -x9105 = x9104 -x9106 = x9105 -x9107 = x9106 -x9108 = x9107 -x9109 = x9108 -x9110 = x9109 -x9111 = x9110 -x9112 = x9111 -x9113 = x9112 -x9114 = x9113 -x9115 = x9114 -x9116 = x9115 -x9117 = x9116 -x9118 = x9117 -x9119 = x9118 -x9120 = x9119 -x9121 = x9120 -x9122 = x9121 -x9123 = x9122 -x9124 = x9123 -x9125 = x9124 -x9126 = x9125 -x9127 = x9126 -x9128 = x9127 -x9129 = x9128 -x9130 = x9129 -x9131 = x9130 -x9132 = x9131 -x9133 = x9132 -x9134 = x9133 -x9135 = x9134 -x9136 = x9135 -x9137 = x9136 -x9138 = x9137 -x9139 = x9138 -x9140 = x9139 -x9141 = x9140 -x9142 = x9141 -x9143 = x9142 -x9144 = x9143 -x9145 = x9144 -x9146 = x9145 -x9147 = x9146 -x9148 = x9147 -x9149 = x9148 -x9150 = x9149 -x9151 = x9150 -x9152 = x9151 -x9153 = x9152 -x9154 = x9153 -x9155 = x9154 -x9156 = x9155 -x9157 = x9156 -x9158 = x9157 -x9159 = x9158 -x9160 = x9159 -x9161 = x9160 -x9162 = x9161 -x9163 = x9162 -x9164 = x9163 -x9165 = x9164 -x9166 = x9165 -x9167 = x9166 -x9168 = x9167 -x9169 = x9168 -x9170 = x9169 -x9171 = x9170 -x9172 = x9171 -x9173 = x9172 -x9174 = x9173 -x9175 = x9174 -x9176 = x9175 -x9177 = x9176 -x9178 = x9177 -x9179 = x9178 -x9180 = x9179 -x9181 = x9180 -x9182 = x9181 -x9183 = x9182 -x9184 = x9183 -x9185 = x9184 -x9186 = x9185 -x9187 = x9186 -x9188 = x9187 -x9189 = x9188 -x9190 = x9189 -x9191 = x9190 -x9192 = x9191 -x9193 = x9192 -x9194 = x9193 -x9195 = x9194 -x9196 = x9195 -x9197 = x9196 -x9198 = x9197 -x9199 = x9198 -x9200 = x9199 -x9201 = x9200 -x9202 = x9201 -x9203 = x9202 -x9204 = x9203 -x9205 = x9204 -x9206 = x9205 -x9207 = x9206 -x9208 = x9207 -x9209 = x9208 -x9210 = x9209 -x9211 = x9210 -x9212 = x9211 -x9213 = x9212 -x9214 = x9213 -x9215 = x9214 -x9216 = x9215 -x9217 = x9216 -x9218 = x9217 -x9219 = x9218 -x9220 = x9219 -x9221 = x9220 -x9222 = x9221 -x9223 = x9222 -x9224 = x9223 -x9225 = x9224 -x9226 = x9225 -x9227 = x9226 -x9228 = x9227 -x9229 = x9228 -x9230 = x9229 -x9231 = x9230 -x9232 = x9231 -x9233 = x9232 -x9234 = x9233 -x9235 = x9234 -x9236 = x9235 -x9237 = x9236 -x9238 = x9237 -x9239 = x9238 -x9240 = x9239 -x9241 = x9240 -x9242 = x9241 -x9243 = x9242 -x9244 = x9243 -x9245 = x9244 -x9246 = x9245 -x9247 = x9246 -x9248 = x9247 -x9249 = x9248 -x9250 = x9249 -x9251 = x9250 -x9252 = x9251 -x9253 = x9252 -x9254 = x9253 -x9255 = x9254 -x9256 = x9255 -x9257 = x9256 -x9258 = x9257 -x9259 = x9258 -x9260 = x9259 -x9261 = x9260 -x9262 = x9261 -x9263 = x9262 -x9264 = x9263 -x9265 = x9264 -x9266 = x9265 -x9267 = x9266 -x9268 = x9267 -x9269 = x9268 -x9270 = x9269 -x9271 = x9270 -x9272 = x9271 -x9273 = x9272 -x9274 = x9273 -x9275 = x9274 -x9276 = x9275 -x9277 = x9276 -x9278 = x9277 -x9279 = x9278 -x9280 = x9279 -x9281 = x9280 -x9282 = x9281 -x9283 = x9282 -x9284 = x9283 -x9285 = x9284 -x9286 = x9285 -x9287 = x9286 -x9288 = x9287 -x9289 = x9288 -x9290 = x9289 -x9291 = x9290 -x9292 = x9291 -x9293 = x9292 -x9294 = x9293 -x9295 = x9294 -x9296 = x9295 -x9297 = x9296 -x9298 = x9297 -x9299 = x9298 -x9300 = x9299 -x9301 = x9300 -x9302 = x9301 -x9303 = x9302 -x9304 = x9303 -x9305 = x9304 -x9306 = x9305 -x9307 = x9306 -x9308 = x9307 -x9309 = x9308 -x9310 = x9309 -x9311 = x9310 -x9312 = x9311 -x9313 = x9312 -x9314 = x9313 -x9315 = x9314 -x9316 = x9315 -x9317 = x9316 -x9318 = x9317 -x9319 = x9318 -x9320 = x9319 -x9321 = x9320 -x9322 = x9321 -x9323 = x9322 -x9324 = x9323 -x9325 = x9324 -x9326 = x9325 -x9327 = x9326 -x9328 = x9327 -x9329 = x9328 -x9330 = x9329 -x9331 = x9330 -x9332 = x9331 -x9333 = x9332 -x9334 = x9333 -x9335 = x9334 -x9336 = x9335 -x9337 = x9336 -x9338 = x9337 -x9339 = x9338 -x9340 = x9339 -x9341 = x9340 -x9342 = x9341 -x9343 = x9342 -x9344 = x9343 -x9345 = x9344 -x9346 = x9345 -x9347 = x9346 -x9348 = x9347 -x9349 = x9348 -x9350 = x9349 -x9351 = x9350 -x9352 = x9351 -x9353 = x9352 -x9354 = x9353 -x9355 = x9354 -x9356 = x9355 -x9357 = x9356 -x9358 = x9357 -x9359 = x9358 -x9360 = x9359 -x9361 = x9360 -x9362 = x9361 -x9363 = x9362 -x9364 = x9363 -x9365 = x9364 -x9366 = x9365 -x9367 = x9366 -x9368 = x9367 -x9369 = x9368 -x9370 = x9369 -x9371 = x9370 -x9372 = x9371 -x9373 = x9372 -x9374 = x9373 -x9375 = x9374 -x9376 = x9375 -x9377 = x9376 -x9378 = x9377 -x9379 = x9378 -x9380 = x9379 -x9381 = x9380 -x9382 = x9381 -x9383 = x9382 -x9384 = x9383 -x9385 = x9384 -x9386 = x9385 -x9387 = x9386 -x9388 = x9387 -x9389 = x9388 -x9390 = x9389 -x9391 = x9390 -x9392 = x9391 -x9393 = x9392 -x9394 = x9393 -x9395 = x9394 -x9396 = x9395 -x9397 = x9396 -x9398 = x9397 -x9399 = x9398 -x9400 = x9399 -x9401 = x9400 -x9402 = x9401 -x9403 = x9402 -x9404 = x9403 -x9405 = x9404 -x9406 = x9405 -x9407 = x9406 -x9408 = x9407 -x9409 = x9408 -x9410 = x9409 -x9411 = x9410 -x9412 = x9411 -x9413 = x9412 -x9414 = x9413 -x9415 = x9414 -x9416 = x9415 -x9417 = x9416 -x9418 = x9417 -x9419 = x9418 -x9420 = x9419 -x9421 = x9420 -x9422 = x9421 -x9423 = x9422 -x9424 = x9423 -x9425 = x9424 -x9426 = x9425 -x9427 = x9426 -x9428 = x9427 -x9429 = x9428 -x9430 = x9429 -x9431 = x9430 -x9432 = x9431 -x9433 = x9432 -x9434 = x9433 -x9435 = x9434 -x9436 = x9435 -x9437 = x9436 -x9438 = x9437 -x9439 = x9438 -x9440 = x9439 -x9441 = x9440 -x9442 = x9441 -x9443 = x9442 -x9444 = x9443 -x9445 = x9444 -x9446 = x9445 -x9447 = x9446 -x9448 = x9447 -x9449 = x9448 -x9450 = x9449 -x9451 = x9450 -x9452 = x9451 -x9453 = x9452 -x9454 = x9453 -x9455 = x9454 -x9456 = x9455 -x9457 = x9456 -x9458 = x9457 -x9459 = x9458 -x9460 = x9459 -x9461 = x9460 -x9462 = x9461 -x9463 = x9462 -x9464 = x9463 -x9465 = x9464 -x9466 = x9465 -x9467 = x9466 -x9468 = x9467 -x9469 = x9468 -x9470 = x9469 -x9471 = x9470 -x9472 = x9471 -x9473 = x9472 -x9474 = x9473 -x9475 = x9474 -x9476 = x9475 -x9477 = x9476 -x9478 = x9477 -x9479 = x9478 -x9480 = x9479 -x9481 = x9480 -x9482 = x9481 -x9483 = x9482 -x9484 = x9483 -x9485 = x9484 -x9486 = x9485 -x9487 = x9486 -x9488 = x9487 -x9489 = x9488 -x9490 = x9489 -x9491 = x9490 -x9492 = x9491 -x9493 = x9492 -x9494 = x9493 -x9495 = x9494 -x9496 = x9495 -x9497 = x9496 -x9498 = x9497 -x9499 = x9498 -x9500 = x9499 -x9501 = x9500 -x9502 = x9501 -x9503 = x9502 -x9504 = x9503 -x9505 = x9504 -x9506 = x9505 -x9507 = x9506 -x9508 = x9507 -x9509 = x9508 -x9510 = x9509 -x9511 = x9510 -x9512 = x9511 -x9513 = x9512 -x9514 = x9513 -x9515 = x9514 -x9516 = x9515 -x9517 = x9516 -x9518 = x9517 -x9519 = x9518 -x9520 = x9519 -x9521 = x9520 -x9522 = x9521 -x9523 = x9522 -x9524 = x9523 -x9525 = x9524 -x9526 = x9525 -x9527 = x9526 -x9528 = x9527 -x9529 = x9528 -x9530 = x9529 -x9531 = x9530 -x9532 = x9531 -x9533 = x9532 -x9534 = x9533 -x9535 = x9534 -x9536 = x9535 -x9537 = x9536 -x9538 = x9537 -x9539 = x9538 -x9540 = x9539 -x9541 = x9540 -x9542 = x9541 -x9543 = x9542 -x9544 = x9543 -x9545 = x9544 -x9546 = x9545 -x9547 = x9546 -x9548 = x9547 -x9549 = x9548 -x9550 = x9549 -x9551 = x9550 -x9552 = x9551 -x9553 = x9552 -x9554 = x9553 -x9555 = x9554 -x9556 = x9555 -x9557 = x9556 -x9558 = x9557 -x9559 = x9558 -x9560 = x9559 -x9561 = x9560 -x9562 = x9561 -x9563 = x9562 -x9564 = x9563 -x9565 = x9564 -x9566 = x9565 -x9567 = x9566 -x9568 = x9567 -x9569 = x9568 -x9570 = x9569 -x9571 = x9570 -x9572 = x9571 -x9573 = x9572 -x9574 = x9573 -x9575 = x9574 -x9576 = x9575 -x9577 = x9576 -x9578 = x9577 -x9579 = x9578 -x9580 = x9579 -x9581 = x9580 -x9582 = x9581 -x9583 = x9582 -x9584 = x9583 -x9585 = x9584 -x9586 = x9585 -x9587 = x9586 -x9588 = x9587 -x9589 = x9588 -x9590 = x9589 -x9591 = x9590 -x9592 = x9591 -x9593 = x9592 -x9594 = x9593 -x9595 = x9594 -x9596 = x9595 -x9597 = x9596 -x9598 = x9597 -x9599 = x9598 -x9600 = x9599 -x9601 = x9600 -x9602 = x9601 -x9603 = x9602 -x9604 = x9603 -x9605 = x9604 -x9606 = x9605 -x9607 = x9606 -x9608 = x9607 -x9609 = x9608 -x9610 = x9609 -x9611 = x9610 -x9612 = x9611 -x9613 = x9612 -x9614 = x9613 -x9615 = x9614 -x9616 = x9615 -x9617 = x9616 -x9618 = x9617 -x9619 = x9618 -x9620 = x9619 -x9621 = x9620 -x9622 = x9621 -x9623 = x9622 -x9624 = x9623 -x9625 = x9624 -x9626 = x9625 -x9627 = x9626 -x9628 = x9627 -x9629 = x9628 -x9630 = x9629 -x9631 = x9630 -x9632 = x9631 -x9633 = x9632 -x9634 = x9633 -x9635 = x9634 -x9636 = x9635 -x9637 = x9636 -x9638 = x9637 -x9639 = x9638 -x9640 = x9639 -x9641 = x9640 -x9642 = x9641 -x9643 = x9642 -x9644 = x9643 -x9645 = x9644 -x9646 = x9645 -x9647 = x9646 -x9648 = x9647 -x9649 = x9648 -x9650 = x9649 -x9651 = x9650 -x9652 = x9651 -x9653 = x9652 -x9654 = x9653 -x9655 = x9654 -x9656 = x9655 -x9657 = x9656 -x9658 = x9657 -x9659 = x9658 -x9660 = x9659 -x9661 = x9660 -x9662 = x9661 -x9663 = x9662 -x9664 = x9663 -x9665 = x9664 -x9666 = x9665 -x9667 = x9666 -x9668 = x9667 -x9669 = x9668 -x9670 = x9669 -x9671 = x9670 -x9672 = x9671 -x9673 = x9672 -x9674 = x9673 -x9675 = x9674 -x9676 = x9675 -x9677 = x9676 -x9678 = x9677 -x9679 = x9678 -x9680 = x9679 -x9681 = x9680 -x9682 = x9681 -x9683 = x9682 -x9684 = x9683 -x9685 = x9684 -x9686 = x9685 -x9687 = x9686 -x9688 = x9687 -x9689 = x9688 -x9690 = x9689 -x9691 = x9690 -x9692 = x9691 -x9693 = x9692 -x9694 = x9693 -x9695 = x9694 -x9696 = x9695 -x9697 = x9696 -x9698 = x9697 -x9699 = x9698 -x9700 = x9699 -x9701 = x9700 -x9702 = x9701 -x9703 = x9702 -x9704 = x9703 -x9705 = x9704 -x9706 = x9705 -x9707 = x9706 -x9708 = x9707 -x9709 = x9708 -x9710 = x9709 -x9711 = x9710 -x9712 = x9711 -x9713 = x9712 -x9714 = x9713 -x9715 = x9714 -x9716 = x9715 -x9717 = x9716 -x9718 = x9717 -x9719 = x9718 -x9720 = x9719 -x9721 = x9720 -x9722 = x9721 -x9723 = x9722 -x9724 = x9723 -x9725 = x9724 -x9726 = x9725 -x9727 = x9726 -x9728 = x9727 -x9729 = x9728 -x9730 = x9729 -x9731 = x9730 -x9732 = x9731 -x9733 = x9732 -x9734 = x9733 -x9735 = x9734 -x9736 = x9735 -x9737 = x9736 -x9738 = x9737 -x9739 = x9738 -x9740 = x9739 -x9741 = x9740 -x9742 = x9741 -x9743 = x9742 -x9744 = x9743 -x9745 = x9744 -x9746 = x9745 -x9747 = x9746 -x9748 = x9747 -x9749 = x9748 -x9750 = x9749 -x9751 = x9750 -x9752 = x9751 -x9753 = x9752 -x9754 = x9753 -x9755 = x9754 -x9756 = x9755 -x9757 = x9756 -x9758 = x9757 -x9759 = x9758 -x9760 = x9759 -x9761 = x9760 -x9762 = x9761 -x9763 = x9762 -x9764 = x9763 -x9765 = x9764 -x9766 = x9765 -x9767 = x9766 -x9768 = x9767 -x9769 = x9768 -x9770 = x9769 -x9771 = x9770 -x9772 = x9771 -x9773 = x9772 -x9774 = x9773 -x9775 = x9774 -x9776 = x9775 -x9777 = x9776 -x9778 = x9777 -x9779 = x9778 -x9780 = x9779 -x9781 = x9780 -x9782 = x9781 -x9783 = x9782 -x9784 = x9783 -x9785 = x9784 -x9786 = x9785 -x9787 = x9786 -x9788 = x9787 -x9789 = x9788 -x9790 = x9789 -x9791 = x9790 -x9792 = x9791 -x9793 = x9792 -x9794 = x9793 -x9795 = x9794 -x9796 = x9795 -x9797 = x9796 -x9798 = x9797 -x9799 = x9798 -x9800 = x9799 -x9801 = x9800 -x9802 = x9801 -x9803 = x9802 -x9804 = x9803 -x9805 = x9804 -x9806 = x9805 -x9807 = x9806 -x9808 = x9807 -x9809 = x9808 -x9810 = x9809 -x9811 = x9810 -x9812 = x9811 -x9813 = x9812 -x9814 = x9813 -x9815 = x9814 -x9816 = x9815 -x9817 = x9816 -x9818 = x9817 -x9819 = x9818 -x9820 = x9819 -x9821 = x9820 -x9822 = x9821 -x9823 = x9822 -x9824 = x9823 -x9825 = x9824 -x9826 = x9825 -x9827 = x9826 -x9828 = x9827 -x9829 = x9828 -x9830 = x9829 -x9831 = x9830 -x9832 = x9831 -x9833 = x9832 -x9834 = x9833 -x9835 = x9834 -x9836 = x9835 -x9837 = x9836 -x9838 = x9837 -x9839 = x9838 -x9840 = x9839 -x9841 = x9840 -x9842 = x9841 -x9843 = x9842 -x9844 = x9843 -x9845 = x9844 -x9846 = x9845 -x9847 = x9846 -x9848 = x9847 -x9849 = x9848 -x9850 = x9849 -x9851 = x9850 -x9852 = x9851 -x9853 = x9852 -x9854 = x9853 -x9855 = x9854 -x9856 = x9855 -x9857 = x9856 -x9858 = x9857 -x9859 = x9858 -x9860 = x9859 -x9861 = x9860 -x9862 = x9861 -x9863 = x9862 -x9864 = x9863 -x9865 = x9864 -x9866 = x9865 -x9867 = x9866 -x9868 = x9867 -x9869 = x9868 -x9870 = x9869 -x9871 = x9870 -x9872 = x9871 -x9873 = x9872 -x9874 = x9873 -x9875 = x9874 -x9876 = x9875 -x9877 = x9876 -x9878 = x9877 -x9879 = x9878 -x9880 = x9879 -x9881 = x9880 -x9882 = x9881 -x9883 = x9882 -x9884 = x9883 -x9885 = x9884 -x9886 = x9885 -x9887 = x9886 -x9888 = x9887 -x9889 = x9888 -x9890 = x9889 -x9891 = x9890 -x9892 = x9891 -x9893 = x9892 -x9894 = x9893 -x9895 = x9894 -x9896 = x9895 -x9897 = x9896 -x9898 = x9897 -x9899 = x9898 -x9900 = x9899 -x9901 = x9900 -x9902 = x9901 -x9903 = x9902 -x9904 = x9903 -x9905 = x9904 -x9906 = x9905 -x9907 = x9906 -x9908 = x9907 -x9909 = x9908 -x9910 = x9909 -x9911 = x9910 -x9912 = x9911 -x9913 = x9912 -x9914 = x9913 -x9915 = x9914 -x9916 = x9915 -x9917 = x9916 -x9918 = x9917 -x9919 = x9918 -x9920 = x9919 -x9921 = x9920 -x9922 = x9921 -x9923 = x9922 -x9924 = x9923 -x9925 = x9924 -x9926 = x9925 -x9927 = x9926 -x9928 = x9927 -x9929 = x9928 -x9930 = x9929 -x9931 = x9930 -x9932 = x9931 -x9933 = x9932 -x9934 = x9933 -x9935 = x9934 -x9936 = x9935 -x9937 = x9936 -x9938 = x9937 -x9939 = x9938 -x9940 = x9939 -x9941 = x9940 -x9942 = x9941 -x9943 = x9942 -x9944 = x9943 -x9945 = x9944 -x9946 = x9945 -x9947 = x9946 -x9948 = x9947 -x9949 = x9948 -x9950 = x9949 -x9951 = x9950 -x9952 = x9951 -x9953 = x9952 -x9954 = x9953 -x9955 = x9954 -x9956 = x9955 -x9957 = x9956 -x9958 = x9957 -x9959 = x9958 -x9960 = x9959 -x9961 = x9960 -x9962 = x9961 -x9963 = x9962 -x9964 = x9963 -x9965 = x9964 -x9966 = x9965 -x9967 = x9966 -x9968 = x9967 -x9969 = x9968 -x9970 = x9969 -x9971 = x9970 -x9972 = x9971 -x9973 = x9972 -x9974 = x9973 -x9975 = x9974 -x9976 = x9975 -x9977 = x9976 -x9978 = x9977 -x9979 = x9978 -x9980 = x9979 -x9981 = x9980 -x9982 = x9981 -x9983 = x9982 -x9984 = x9983 -x9985 = x9984 -x9986 = x9985 -x9987 = x9986 -x9988 = x9987 -x9989 = x9988 -x9990 = x9989 -x9991 = x9990 -x9992 = x9991 -x9993 = x9992 -x9994 = x9993 -x9995 = x9994 -x9996 = x9995 -x9997 = x9996 -x9998 = x9997 -x9999 = x9998 x10000 = x9999 +x9999 = x9998 +x9998 = x9997 +x9997 = x9996 +x9996 = x9995 +x9995 = x9994 +x9994 = x9993 +x9993 = x9992 +x9992 = x9991 +x9991 = x9990 +x9990 = x9989 +x9989 = x9988 +x9988 = x9987 +x9987 = x9986 +x9986 = x9985 +x9985 = x9984 +x9984 = x9983 +x9983 = x9982 +x9982 = x9981 +x9981 = x9980 +x9980 = x9979 +x9979 = x9978 +x9978 = x9977 +x9977 = x9976 +x9976 = x9975 +x9975 = x9974 +x9974 = x9973 +x9973 = x9972 +x9972 = x9971 +x9971 = x9970 +x9970 = x9969 +x9969 = x9968 +x9968 = x9967 +x9967 = x9966 +x9966 = x9965 +x9965 = x9964 +x9964 = x9963 +x9963 = x9962 +x9962 = x9961 +x9961 = x9960 +x9960 = x9959 +x9959 = x9958 +x9958 = x9957 +x9957 = x9956 +x9956 = x9955 +x9955 = x9954 +x9954 = x9953 +x9953 = x9952 +x9952 = x9951 +x9951 = x9950 +x9950 = x9949 +x9949 = x9948 +x9948 = x9947 +x9947 = x9946 +x9946 = x9945 +x9945 = x9944 +x9944 = x9943 +x9943 = x9942 +x9942 = x9941 +x9941 = x9940 +x9940 = x9939 +x9939 = x9938 +x9938 = x9937 +x9937 = x9936 +x9936 = x9935 +x9935 = x9934 +x9934 = x9933 +x9933 = x9932 +x9932 = x9931 +x9931 = x9930 +x9930 = x9929 +x9929 = x9928 +x9928 = x9927 +x9927 = x9926 +x9926 = x9925 +x9925 = x9924 +x9924 = x9923 +x9923 = x9922 +x9922 = x9921 +x9921 = x9920 +x9920 = x9919 +x9919 = x9918 +x9918 = x9917 +x9917 = x9916 +x9916 = x9915 +x9915 = x9914 +x9914 = x9913 +x9913 = x9912 +x9912 = x9911 +x9911 = x9910 +x9910 = x9909 +x9909 = x9908 +x9908 = x9907 +x9907 = x9906 +x9906 = x9905 +x9905 = x9904 +x9904 = x9903 +x9903 = x9902 +x9902 = x9901 +x9901 = x9900 +x9900 = x9899 +x9899 = x9898 +x9898 = x9897 +x9897 = x9896 +x9896 = x9895 +x9895 = x9894 +x9894 = x9893 +x9893 = x9892 +x9892 = x9891 +x9891 = x9890 +x9890 = x9889 +x9889 = x9888 +x9888 = x9887 +x9887 = x9886 +x9886 = x9885 +x9885 = x9884 +x9884 = x9883 +x9883 = x9882 +x9882 = x9881 +x9881 = x9880 +x9880 = x9879 +x9879 = x9878 +x9878 = x9877 +x9877 = x9876 +x9876 = x9875 +x9875 = x9874 +x9874 = x9873 +x9873 = x9872 +x9872 = x9871 +x9871 = x9870 +x9870 = x9869 +x9869 = x9868 +x9868 = x9867 +x9867 = x9866 +x9866 = x9865 +x9865 = x9864 +x9864 = x9863 +x9863 = x9862 +x9862 = x9861 +x9861 = x9860 +x9860 = x9859 +x9859 = x9858 +x9858 = x9857 +x9857 = x9856 +x9856 = x9855 +x9855 = x9854 +x9854 = x9853 +x9853 = x9852 +x9852 = x9851 +x9851 = x9850 +x9850 = x9849 +x9849 = x9848 +x9848 = x9847 +x9847 = x9846 +x9846 = x9845 +x9845 = x9844 +x9844 = x9843 +x9843 = x9842 +x9842 = x9841 +x9841 = x9840 +x9840 = x9839 +x9839 = x9838 +x9838 = x9837 +x9837 = x9836 +x9836 = x9835 +x9835 = x9834 +x9834 = x9833 +x9833 = x9832 +x9832 = x9831 +x9831 = x9830 +x9830 = x9829 +x9829 = x9828 +x9828 = x9827 +x9827 = x9826 +x9826 = x9825 +x9825 = x9824 +x9824 = x9823 +x9823 = x9822 +x9822 = x9821 +x9821 = x9820 +x9820 = x9819 +x9819 = x9818 +x9818 = x9817 +x9817 = x9816 +x9816 = x9815 +x9815 = x9814 +x9814 = x9813 +x9813 = x9812 +x9812 = x9811 +x9811 = x9810 +x9810 = x9809 +x9809 = x9808 +x9808 = x9807 +x9807 = x9806 +x9806 = x9805 +x9805 = x9804 +x9804 = x9803 +x9803 = x9802 +x9802 = x9801 +x9801 = x9800 +x9800 = x9799 +x9799 = x9798 +x9798 = x9797 +x9797 = x9796 +x9796 = x9795 +x9795 = x9794 +x9794 = x9793 +x9793 = x9792 +x9792 = x9791 +x9791 = x9790 +x9790 = x9789 +x9789 = x9788 +x9788 = x9787 +x9787 = x9786 +x9786 = x9785 +x9785 = x9784 +x9784 = x9783 +x9783 = x9782 +x9782 = x9781 +x9781 = x9780 +x9780 = x9779 +x9779 = x9778 +x9778 = x9777 +x9777 = x9776 +x9776 = x9775 +x9775 = x9774 +x9774 = x9773 +x9773 = x9772 +x9772 = x9771 +x9771 = x9770 +x9770 = x9769 +x9769 = x9768 +x9768 = x9767 +x9767 = x9766 +x9766 = x9765 +x9765 = x9764 +x9764 = x9763 +x9763 = x9762 +x9762 = x9761 +x9761 = x9760 +x9760 = x9759 +x9759 = x9758 +x9758 = x9757 +x9757 = x9756 +x9756 = x9755 +x9755 = x9754 +x9754 = x9753 +x9753 = x9752 +x9752 = x9751 +x9751 = x9750 +x9750 = x9749 +x9749 = x9748 +x9748 = x9747 +x9747 = x9746 +x9746 = x9745 +x9745 = x9744 +x9744 = x9743 +x9743 = x9742 +x9742 = x9741 +x9741 = x9740 +x9740 = x9739 +x9739 = x9738 +x9738 = x9737 +x9737 = x9736 +x9736 = x9735 +x9735 = x9734 +x9734 = x9733 +x9733 = x9732 +x9732 = x9731 +x9731 = x9730 +x9730 = x9729 +x9729 = x9728 +x9728 = x9727 +x9727 = x9726 +x9726 = x9725 +x9725 = x9724 +x9724 = x9723 +x9723 = x9722 +x9722 = x9721 +x9721 = x9720 +x9720 = x9719 +x9719 = x9718 +x9718 = x9717 +x9717 = x9716 +x9716 = x9715 +x9715 = x9714 +x9714 = x9713 +x9713 = x9712 +x9712 = x9711 +x9711 = x9710 +x9710 = x9709 +x9709 = x9708 +x9708 = x9707 +x9707 = x9706 +x9706 = x9705 +x9705 = x9704 +x9704 = x9703 +x9703 = x9702 +x9702 = x9701 +x9701 = x9700 +x9700 = x9699 +x9699 = x9698 +x9698 = x9697 +x9697 = x9696 +x9696 = x9695 +x9695 = x9694 +x9694 = x9693 +x9693 = x9692 +x9692 = x9691 +x9691 = x9690 +x9690 = x9689 +x9689 = x9688 +x9688 = x9687 +x9687 = x9686 +x9686 = x9685 +x9685 = x9684 +x9684 = x9683 +x9683 = x9682 +x9682 = x9681 +x9681 = x9680 +x9680 = x9679 +x9679 = x9678 +x9678 = x9677 +x9677 = x9676 +x9676 = x9675 +x9675 = x9674 +x9674 = x9673 +x9673 = x9672 +x9672 = x9671 +x9671 = x9670 +x9670 = x9669 +x9669 = x9668 +x9668 = x9667 +x9667 = x9666 +x9666 = x9665 +x9665 = x9664 +x9664 = x9663 +x9663 = x9662 +x9662 = x9661 +x9661 = x9660 +x9660 = x9659 +x9659 = x9658 +x9658 = x9657 +x9657 = x9656 +x9656 = x9655 +x9655 = x9654 +x9654 = x9653 +x9653 = x9652 +x9652 = x9651 +x9651 = x9650 +x9650 = x9649 +x9649 = x9648 +x9648 = x9647 +x9647 = x9646 +x9646 = x9645 +x9645 = x9644 +x9644 = x9643 +x9643 = x9642 +x9642 = x9641 +x9641 = x9640 +x9640 = x9639 +x9639 = x9638 +x9638 = x9637 +x9637 = x9636 +x9636 = x9635 +x9635 = x9634 +x9634 = x9633 +x9633 = x9632 +x9632 = x9631 +x9631 = x9630 +x9630 = x9629 +x9629 = x9628 +x9628 = x9627 +x9627 = x9626 +x9626 = x9625 +x9625 = x9624 +x9624 = x9623 +x9623 = x9622 +x9622 = x9621 +x9621 = x9620 +x9620 = x9619 +x9619 = x9618 +x9618 = x9617 +x9617 = x9616 +x9616 = x9615 +x9615 = x9614 +x9614 = x9613 +x9613 = x9612 +x9612 = x9611 +x9611 = x9610 +x9610 = x9609 +x9609 = x9608 +x9608 = x9607 +x9607 = x9606 +x9606 = x9605 +x9605 = x9604 +x9604 = x9603 +x9603 = x9602 +x9602 = x9601 +x9601 = x9600 +x9600 = x9599 +x9599 = x9598 +x9598 = x9597 +x9597 = x9596 +x9596 = x9595 +x9595 = x9594 +x9594 = x9593 +x9593 = x9592 +x9592 = x9591 +x9591 = x9590 +x9590 = x9589 +x9589 = x9588 +x9588 = x9587 +x9587 = x9586 +x9586 = x9585 +x9585 = x9584 +x9584 = x9583 +x9583 = x9582 +x9582 = x9581 +x9581 = x9580 +x9580 = x9579 +x9579 = x9578 +x9578 = x9577 +x9577 = x9576 +x9576 = x9575 +x9575 = x9574 +x9574 = x9573 +x9573 = x9572 +x9572 = x9571 +x9571 = x9570 +x9570 = x9569 +x9569 = x9568 +x9568 = x9567 +x9567 = x9566 +x9566 = x9565 +x9565 = x9564 +x9564 = x9563 +x9563 = x9562 +x9562 = x9561 +x9561 = x9560 +x9560 = x9559 +x9559 = x9558 +x9558 = x9557 +x9557 = x9556 +x9556 = x9555 +x9555 = x9554 +x9554 = x9553 +x9553 = x9552 +x9552 = x9551 +x9551 = x9550 +x9550 = x9549 +x9549 = x9548 +x9548 = x9547 +x9547 = x9546 +x9546 = x9545 +x9545 = x9544 +x9544 = x9543 +x9543 = x9542 +x9542 = x9541 +x9541 = x9540 +x9540 = x9539 +x9539 = x9538 +x9538 = x9537 +x9537 = x9536 +x9536 = x9535 +x9535 = x9534 +x9534 = x9533 +x9533 = x9532 +x9532 = x9531 +x9531 = x9530 +x9530 = x9529 +x9529 = x9528 +x9528 = x9527 +x9527 = x9526 +x9526 = x9525 +x9525 = x9524 +x9524 = x9523 +x9523 = x9522 +x9522 = x9521 +x9521 = x9520 +x9520 = x9519 +x9519 = x9518 +x9518 = x9517 +x9517 = x9516 +x9516 = x9515 +x9515 = x9514 +x9514 = x9513 +x9513 = x9512 +x9512 = x9511 +x9511 = x9510 +x9510 = x9509 +x9509 = x9508 +x9508 = x9507 +x9507 = x9506 +x9506 = x9505 +x9505 = x9504 +x9504 = x9503 +x9503 = x9502 +x9502 = x9501 +x9501 = x9500 +x9500 = x9499 +x9499 = x9498 +x9498 = x9497 +x9497 = x9496 +x9496 = x9495 +x9495 = x9494 +x9494 = x9493 +x9493 = x9492 +x9492 = x9491 +x9491 = x9490 +x9490 = x9489 +x9489 = x9488 +x9488 = x9487 +x9487 = x9486 +x9486 = x9485 +x9485 = x9484 +x9484 = x9483 +x9483 = x9482 +x9482 = x9481 +x9481 = x9480 +x9480 = x9479 +x9479 = x9478 +x9478 = x9477 +x9477 = x9476 +x9476 = x9475 +x9475 = x9474 +x9474 = x9473 +x9473 = x9472 +x9472 = x9471 +x9471 = x9470 +x9470 = x9469 +x9469 = x9468 +x9468 = x9467 +x9467 = x9466 +x9466 = x9465 +x9465 = x9464 +x9464 = x9463 +x9463 = x9462 +x9462 = x9461 +x9461 = x9460 +x9460 = x9459 +x9459 = x9458 +x9458 = x9457 +x9457 = x9456 +x9456 = x9455 +x9455 = x9454 +x9454 = x9453 +x9453 = x9452 +x9452 = x9451 +x9451 = x9450 +x9450 = x9449 +x9449 = x9448 +x9448 = x9447 +x9447 = x9446 +x9446 = x9445 +x9445 = x9444 +x9444 = x9443 +x9443 = x9442 +x9442 = x9441 +x9441 = x9440 +x9440 = x9439 +x9439 = x9438 +x9438 = x9437 +x9437 = x9436 +x9436 = x9435 +x9435 = x9434 +x9434 = x9433 +x9433 = x9432 +x9432 = x9431 +x9431 = x9430 +x9430 = x9429 +x9429 = x9428 +x9428 = x9427 +x9427 = x9426 +x9426 = x9425 +x9425 = x9424 +x9424 = x9423 +x9423 = x9422 +x9422 = x9421 +x9421 = x9420 +x9420 = x9419 +x9419 = x9418 +x9418 = x9417 +x9417 = x9416 +x9416 = x9415 +x9415 = x9414 +x9414 = x9413 +x9413 = x9412 +x9412 = x9411 +x9411 = x9410 +x9410 = x9409 +x9409 = x9408 +x9408 = x9407 +x9407 = x9406 +x9406 = x9405 +x9405 = x9404 +x9404 = x9403 +x9403 = x9402 +x9402 = x9401 +x9401 = x9400 +x9400 = x9399 +x9399 = x9398 +x9398 = x9397 +x9397 = x9396 +x9396 = x9395 +x9395 = x9394 +x9394 = x9393 +x9393 = x9392 +x9392 = x9391 +x9391 = x9390 +x9390 = x9389 +x9389 = x9388 +x9388 = x9387 +x9387 = x9386 +x9386 = x9385 +x9385 = x9384 +x9384 = x9383 +x9383 = x9382 +x9382 = x9381 +x9381 = x9380 +x9380 = x9379 +x9379 = x9378 +x9378 = x9377 +x9377 = x9376 +x9376 = x9375 +x9375 = x9374 +x9374 = x9373 +x9373 = x9372 +x9372 = x9371 +x9371 = x9370 +x9370 = x9369 +x9369 = x9368 +x9368 = x9367 +x9367 = x9366 +x9366 = x9365 +x9365 = x9364 +x9364 = x9363 +x9363 = x9362 +x9362 = x9361 +x9361 = x9360 +x9360 = x9359 +x9359 = x9358 +x9358 = x9357 +x9357 = x9356 +x9356 = x9355 +x9355 = x9354 +x9354 = x9353 +x9353 = x9352 +x9352 = x9351 +x9351 = x9350 +x9350 = x9349 +x9349 = x9348 +x9348 = x9347 +x9347 = x9346 +x9346 = x9345 +x9345 = x9344 +x9344 = x9343 +x9343 = x9342 +x9342 = x9341 +x9341 = x9340 +x9340 = x9339 +x9339 = x9338 +x9338 = x9337 +x9337 = x9336 +x9336 = x9335 +x9335 = x9334 +x9334 = x9333 +x9333 = x9332 +x9332 = x9331 +x9331 = x9330 +x9330 = x9329 +x9329 = x9328 +x9328 = x9327 +x9327 = x9326 +x9326 = x9325 +x9325 = x9324 +x9324 = x9323 +x9323 = x9322 +x9322 = x9321 +x9321 = x9320 +x9320 = x9319 +x9319 = x9318 +x9318 = x9317 +x9317 = x9316 +x9316 = x9315 +x9315 = x9314 +x9314 = x9313 +x9313 = x9312 +x9312 = x9311 +x9311 = x9310 +x9310 = x9309 +x9309 = x9308 +x9308 = x9307 +x9307 = x9306 +x9306 = x9305 +x9305 = x9304 +x9304 = x9303 +x9303 = x9302 +x9302 = x9301 +x9301 = x9300 +x9300 = x9299 +x9299 = x9298 +x9298 = x9297 +x9297 = x9296 +x9296 = x9295 +x9295 = x9294 +x9294 = x9293 +x9293 = x9292 +x9292 = x9291 +x9291 = x9290 +x9290 = x9289 +x9289 = x9288 +x9288 = x9287 +x9287 = x9286 +x9286 = x9285 +x9285 = x9284 +x9284 = x9283 +x9283 = x9282 +x9282 = x9281 +x9281 = x9280 +x9280 = x9279 +x9279 = x9278 +x9278 = x9277 +x9277 = x9276 +x9276 = x9275 +x9275 = x9274 +x9274 = x9273 +x9273 = x9272 +x9272 = x9271 +x9271 = x9270 +x9270 = x9269 +x9269 = x9268 +x9268 = x9267 +x9267 = x9266 +x9266 = x9265 +x9265 = x9264 +x9264 = x9263 +x9263 = x9262 +x9262 = x9261 +x9261 = x9260 +x9260 = x9259 +x9259 = x9258 +x9258 = x9257 +x9257 = x9256 +x9256 = x9255 +x9255 = x9254 +x9254 = x9253 +x9253 = x9252 +x9252 = x9251 +x9251 = x9250 +x9250 = x9249 +x9249 = x9248 +x9248 = x9247 +x9247 = x9246 +x9246 = x9245 +x9245 = x9244 +x9244 = x9243 +x9243 = x9242 +x9242 = x9241 +x9241 = x9240 +x9240 = x9239 +x9239 = x9238 +x9238 = x9237 +x9237 = x9236 +x9236 = x9235 +x9235 = x9234 +x9234 = x9233 +x9233 = x9232 +x9232 = x9231 +x9231 = x9230 +x9230 = x9229 +x9229 = x9228 +x9228 = x9227 +x9227 = x9226 +x9226 = x9225 +x9225 = x9224 +x9224 = x9223 +x9223 = x9222 +x9222 = x9221 +x9221 = x9220 +x9220 = x9219 +x9219 = x9218 +x9218 = x9217 +x9217 = x9216 +x9216 = x9215 +x9215 = x9214 +x9214 = x9213 +x9213 = x9212 +x9212 = x9211 +x9211 = x9210 +x9210 = x9209 +x9209 = x9208 +x9208 = x9207 +x9207 = x9206 +x9206 = x9205 +x9205 = x9204 +x9204 = x9203 +x9203 = x9202 +x9202 = x9201 +x9201 = x9200 +x9200 = x9199 +x9199 = x9198 +x9198 = x9197 +x9197 = x9196 +x9196 = x9195 +x9195 = x9194 +x9194 = x9193 +x9193 = x9192 +x9192 = x9191 +x9191 = x9190 +x9190 = x9189 +x9189 = x9188 +x9188 = x9187 +x9187 = x9186 +x9186 = x9185 +x9185 = x9184 +x9184 = x9183 +x9183 = x9182 +x9182 = x9181 +x9181 = x9180 +x9180 = x9179 +x9179 = x9178 +x9178 = x9177 +x9177 = x9176 +x9176 = x9175 +x9175 = x9174 +x9174 = x9173 +x9173 = x9172 +x9172 = x9171 +x9171 = x9170 +x9170 = x9169 +x9169 = x9168 +x9168 = x9167 +x9167 = x9166 +x9166 = x9165 +x9165 = x9164 +x9164 = x9163 +x9163 = x9162 +x9162 = x9161 +x9161 = x9160 +x9160 = x9159 +x9159 = x9158 +x9158 = x9157 +x9157 = x9156 +x9156 = x9155 +x9155 = x9154 +x9154 = x9153 +x9153 = x9152 +x9152 = x9151 +x9151 = x9150 +x9150 = x9149 +x9149 = x9148 +x9148 = x9147 +x9147 = x9146 +x9146 = x9145 +x9145 = x9144 +x9144 = x9143 +x9143 = x9142 +x9142 = x9141 +x9141 = x9140 +x9140 = x9139 +x9139 = x9138 +x9138 = x9137 +x9137 = x9136 +x9136 = x9135 +x9135 = x9134 +x9134 = x9133 +x9133 = x9132 +x9132 = x9131 +x9131 = x9130 +x9130 = x9129 +x9129 = x9128 +x9128 = x9127 +x9127 = x9126 +x9126 = x9125 +x9125 = x9124 +x9124 = x9123 +x9123 = x9122 +x9122 = x9121 +x9121 = x9120 +x9120 = x9119 +x9119 = x9118 +x9118 = x9117 +x9117 = x9116 +x9116 = x9115 +x9115 = x9114 +x9114 = x9113 +x9113 = x9112 +x9112 = x9111 +x9111 = x9110 +x9110 = x9109 +x9109 = x9108 +x9108 = x9107 +x9107 = x9106 +x9106 = x9105 +x9105 = x9104 +x9104 = x9103 +x9103 = x9102 +x9102 = x9101 +x9101 = x9100 +x9100 = x9099 +x9099 = x9098 +x9098 = x9097 +x9097 = x9096 +x9096 = x9095 +x9095 = x9094 +x9094 = x9093 +x9093 = x9092 +x9092 = x9091 +x9091 = x9090 +x9090 = x9089 +x9089 = x9088 +x9088 = x9087 +x9087 = x9086 +x9086 = x9085 +x9085 = x9084 +x9084 = x9083 +x9083 = x9082 +x9082 = x9081 +x9081 = x9080 +x9080 = x9079 +x9079 = x9078 +x9078 = x9077 +x9077 = x9076 +x9076 = x9075 +x9075 = x9074 +x9074 = x9073 +x9073 = x9072 +x9072 = x9071 +x9071 = x9070 +x9070 = x9069 +x9069 = x9068 +x9068 = x9067 +x9067 = x9066 +x9066 = x9065 +x9065 = x9064 +x9064 = x9063 +x9063 = x9062 +x9062 = x9061 +x9061 = x9060 +x9060 = x9059 +x9059 = x9058 +x9058 = x9057 +x9057 = x9056 +x9056 = x9055 +x9055 = x9054 +x9054 = x9053 +x9053 = x9052 +x9052 = x9051 +x9051 = x9050 +x9050 = x9049 +x9049 = x9048 +x9048 = x9047 +x9047 = x9046 +x9046 = x9045 +x9045 = x9044 +x9044 = x9043 +x9043 = x9042 +x9042 = x9041 +x9041 = x9040 +x9040 = x9039 +x9039 = x9038 +x9038 = x9037 +x9037 = x9036 +x9036 = x9035 +x9035 = x9034 +x9034 = x9033 +x9033 = x9032 +x9032 = x9031 +x9031 = x9030 +x9030 = x9029 +x9029 = x9028 +x9028 = x9027 +x9027 = x9026 +x9026 = x9025 +x9025 = x9024 +x9024 = x9023 +x9023 = x9022 +x9022 = x9021 +x9021 = x9020 +x9020 = x9019 +x9019 = x9018 +x9018 = x9017 +x9017 = x9016 +x9016 = x9015 +x9015 = x9014 +x9014 = x9013 +x9013 = x9012 +x9012 = x9011 +x9011 = x9010 +x9010 = x9009 +x9009 = x9008 +x9008 = x9007 +x9007 = x9006 +x9006 = x9005 +x9005 = x9004 +x9004 = x9003 +x9003 = x9002 +x9002 = x9001 +x9001 = x9000 +x9000 = x8999 +x8999 = x8998 +x8998 = x8997 +x8997 = x8996 +x8996 = x8995 +x8995 = x8994 +x8994 = x8993 +x8993 = x8992 +x8992 = x8991 +x8991 = x8990 +x8990 = x8989 +x8989 = x8988 +x8988 = x8987 +x8987 = x8986 +x8986 = x8985 +x8985 = x8984 +x8984 = x8983 +x8983 = x8982 +x8982 = x8981 +x8981 = x8980 +x8980 = x8979 +x8979 = x8978 +x8978 = x8977 +x8977 = x8976 +x8976 = x8975 +x8975 = x8974 +x8974 = x8973 +x8973 = x8972 +x8972 = x8971 +x8971 = x8970 +x8970 = x8969 +x8969 = x8968 +x8968 = x8967 +x8967 = x8966 +x8966 = x8965 +x8965 = x8964 +x8964 = x8963 +x8963 = x8962 +x8962 = x8961 +x8961 = x8960 +x8960 = x8959 +x8959 = x8958 +x8958 = x8957 +x8957 = x8956 +x8956 = x8955 +x8955 = x8954 +x8954 = x8953 +x8953 = x8952 +x8952 = x8951 +x8951 = x8950 +x8950 = x8949 +x8949 = x8948 +x8948 = x8947 +x8947 = x8946 +x8946 = x8945 +x8945 = x8944 +x8944 = x8943 +x8943 = x8942 +x8942 = x8941 +x8941 = x8940 +x8940 = x8939 +x8939 = x8938 +x8938 = x8937 +x8937 = x8936 +x8936 = x8935 +x8935 = x8934 +x8934 = x8933 +x8933 = x8932 +x8932 = x8931 +x8931 = x8930 +x8930 = x8929 +x8929 = x8928 +x8928 = x8927 +x8927 = x8926 +x8926 = x8925 +x8925 = x8924 +x8924 = x8923 +x8923 = x8922 +x8922 = x8921 +x8921 = x8920 +x8920 = x8919 +x8919 = x8918 +x8918 = x8917 +x8917 = x8916 +x8916 = x8915 +x8915 = x8914 +x8914 = x8913 +x8913 = x8912 +x8912 = x8911 +x8911 = x8910 +x8910 = x8909 +x8909 = x8908 +x8908 = x8907 +x8907 = x8906 +x8906 = x8905 +x8905 = x8904 +x8904 = x8903 +x8903 = x8902 +x8902 = x8901 +x8901 = x8900 +x8900 = x8899 +x8899 = x8898 +x8898 = x8897 +x8897 = x8896 +x8896 = x8895 +x8895 = x8894 +x8894 = x8893 +x8893 = x8892 +x8892 = x8891 +x8891 = x8890 +x8890 = x8889 +x8889 = x8888 +x8888 = x8887 +x8887 = x8886 +x8886 = x8885 +x8885 = x8884 +x8884 = x8883 +x8883 = x8882 +x8882 = x8881 +x8881 = x8880 +x8880 = x8879 +x8879 = x8878 +x8878 = x8877 +x8877 = x8876 +x8876 = x8875 +x8875 = x8874 +x8874 = x8873 +x8873 = x8872 +x8872 = x8871 +x8871 = x8870 +x8870 = x8869 +x8869 = x8868 +x8868 = x8867 +x8867 = x8866 +x8866 = x8865 +x8865 = x8864 +x8864 = x8863 +x8863 = x8862 +x8862 = x8861 +x8861 = x8860 +x8860 = x8859 +x8859 = x8858 +x8858 = x8857 +x8857 = x8856 +x8856 = x8855 +x8855 = x8854 +x8854 = x8853 +x8853 = x8852 +x8852 = x8851 +x8851 = x8850 +x8850 = x8849 +x8849 = x8848 +x8848 = x8847 +x8847 = x8846 +x8846 = x8845 +x8845 = x8844 +x8844 = x8843 +x8843 = x8842 +x8842 = x8841 +x8841 = x8840 +x8840 = x8839 +x8839 = x8838 +x8838 = x8837 +x8837 = x8836 +x8836 = x8835 +x8835 = x8834 +x8834 = x8833 +x8833 = x8832 +x8832 = x8831 +x8831 = x8830 +x8830 = x8829 +x8829 = x8828 +x8828 = x8827 +x8827 = x8826 +x8826 = x8825 +x8825 = x8824 +x8824 = x8823 +x8823 = x8822 +x8822 = x8821 +x8821 = x8820 +x8820 = x8819 +x8819 = x8818 +x8818 = x8817 +x8817 = x8816 +x8816 = x8815 +x8815 = x8814 +x8814 = x8813 +x8813 = x8812 +x8812 = x8811 +x8811 = x8810 +x8810 = x8809 +x8809 = x8808 +x8808 = x8807 +x8807 = x8806 +x8806 = x8805 +x8805 = x8804 +x8804 = x8803 +x8803 = x8802 +x8802 = x8801 +x8801 = x8800 +x8800 = x8799 +x8799 = x8798 +x8798 = x8797 +x8797 = x8796 +x8796 = x8795 +x8795 = x8794 +x8794 = x8793 +x8793 = x8792 +x8792 = x8791 +x8791 = x8790 +x8790 = x8789 +x8789 = x8788 +x8788 = x8787 +x8787 = x8786 +x8786 = x8785 +x8785 = x8784 +x8784 = x8783 +x8783 = x8782 +x8782 = x8781 +x8781 = x8780 +x8780 = x8779 +x8779 = x8778 +x8778 = x8777 +x8777 = x8776 +x8776 = x8775 +x8775 = x8774 +x8774 = x8773 +x8773 = x8772 +x8772 = x8771 +x8771 = x8770 +x8770 = x8769 +x8769 = x8768 +x8768 = x8767 +x8767 = x8766 +x8766 = x8765 +x8765 = x8764 +x8764 = x8763 +x8763 = x8762 +x8762 = x8761 +x8761 = x8760 +x8760 = x8759 +x8759 = x8758 +x8758 = x8757 +x8757 = x8756 +x8756 = x8755 +x8755 = x8754 +x8754 = x8753 +x8753 = x8752 +x8752 = x8751 +x8751 = x8750 +x8750 = x8749 +x8749 = x8748 +x8748 = x8747 +x8747 = x8746 +x8746 = x8745 +x8745 = x8744 +x8744 = x8743 +x8743 = x8742 +x8742 = x8741 +x8741 = x8740 +x8740 = x8739 +x8739 = x8738 +x8738 = x8737 +x8737 = x8736 +x8736 = x8735 +x8735 = x8734 +x8734 = x8733 +x8733 = x8732 +x8732 = x8731 +x8731 = x8730 +x8730 = x8729 +x8729 = x8728 +x8728 = x8727 +x8727 = x8726 +x8726 = x8725 +x8725 = x8724 +x8724 = x8723 +x8723 = x8722 +x8722 = x8721 +x8721 = x8720 +x8720 = x8719 +x8719 = x8718 +x8718 = x8717 +x8717 = x8716 +x8716 = x8715 +x8715 = x8714 +x8714 = x8713 +x8713 = x8712 +x8712 = x8711 +x8711 = x8710 +x8710 = x8709 +x8709 = x8708 +x8708 = x8707 +x8707 = x8706 +x8706 = x8705 +x8705 = x8704 +x8704 = x8703 +x8703 = x8702 +x8702 = x8701 +x8701 = x8700 +x8700 = x8699 +x8699 = x8698 +x8698 = x8697 +x8697 = x8696 +x8696 = x8695 +x8695 = x8694 +x8694 = x8693 +x8693 = x8692 +x8692 = x8691 +x8691 = x8690 +x8690 = x8689 +x8689 = x8688 +x8688 = x8687 +x8687 = x8686 +x8686 = x8685 +x8685 = x8684 +x8684 = x8683 +x8683 = x8682 +x8682 = x8681 +x8681 = x8680 +x8680 = x8679 +x8679 = x8678 +x8678 = x8677 +x8677 = x8676 +x8676 = x8675 +x8675 = x8674 +x8674 = x8673 +x8673 = x8672 +x8672 = x8671 +x8671 = x8670 +x8670 = x8669 +x8669 = x8668 +x8668 = x8667 +x8667 = x8666 +x8666 = x8665 +x8665 = x8664 +x8664 = x8663 +x8663 = x8662 +x8662 = x8661 +x8661 = x8660 +x8660 = x8659 +x8659 = x8658 +x8658 = x8657 +x8657 = x8656 +x8656 = x8655 +x8655 = x8654 +x8654 = x8653 +x8653 = x8652 +x8652 = x8651 +x8651 = x8650 +x8650 = x8649 +x8649 = x8648 +x8648 = x8647 +x8647 = x8646 +x8646 = x8645 +x8645 = x8644 +x8644 = x8643 +x8643 = x8642 +x8642 = x8641 +x8641 = x8640 +x8640 = x8639 +x8639 = x8638 +x8638 = x8637 +x8637 = x8636 +x8636 = x8635 +x8635 = x8634 +x8634 = x8633 +x8633 = x8632 +x8632 = x8631 +x8631 = x8630 +x8630 = x8629 +x8629 = x8628 +x8628 = x8627 +x8627 = x8626 +x8626 = x8625 +x8625 = x8624 +x8624 = x8623 +x8623 = x8622 +x8622 = x8621 +x8621 = x8620 +x8620 = x8619 +x8619 = x8618 +x8618 = x8617 +x8617 = x8616 +x8616 = x8615 +x8615 = x8614 +x8614 = x8613 +x8613 = x8612 +x8612 = x8611 +x8611 = x8610 +x8610 = x8609 +x8609 = x8608 +x8608 = x8607 +x8607 = x8606 +x8606 = x8605 +x8605 = x8604 +x8604 = x8603 +x8603 = x8602 +x8602 = x8601 +x8601 = x8600 +x8600 = x8599 +x8599 = x8598 +x8598 = x8597 +x8597 = x8596 +x8596 = x8595 +x8595 = x8594 +x8594 = x8593 +x8593 = x8592 +x8592 = x8591 +x8591 = x8590 +x8590 = x8589 +x8589 = x8588 +x8588 = x8587 +x8587 = x8586 +x8586 = x8585 +x8585 = x8584 +x8584 = x8583 +x8583 = x8582 +x8582 = x8581 +x8581 = x8580 +x8580 = x8579 +x8579 = x8578 +x8578 = x8577 +x8577 = x8576 +x8576 = x8575 +x8575 = x8574 +x8574 = x8573 +x8573 = x8572 +x8572 = x8571 +x8571 = x8570 +x8570 = x8569 +x8569 = x8568 +x8568 = x8567 +x8567 = x8566 +x8566 = x8565 +x8565 = x8564 +x8564 = x8563 +x8563 = x8562 +x8562 = x8561 +x8561 = x8560 +x8560 = x8559 +x8559 = x8558 +x8558 = x8557 +x8557 = x8556 +x8556 = x8555 +x8555 = x8554 +x8554 = x8553 +x8553 = x8552 +x8552 = x8551 +x8551 = x8550 +x8550 = x8549 +x8549 = x8548 +x8548 = x8547 +x8547 = x8546 +x8546 = x8545 +x8545 = x8544 +x8544 = x8543 +x8543 = x8542 +x8542 = x8541 +x8541 = x8540 +x8540 = x8539 +x8539 = x8538 +x8538 = x8537 +x8537 = x8536 +x8536 = x8535 +x8535 = x8534 +x8534 = x8533 +x8533 = x8532 +x8532 = x8531 +x8531 = x8530 +x8530 = x8529 +x8529 = x8528 +x8528 = x8527 +x8527 = x8526 +x8526 = x8525 +x8525 = x8524 +x8524 = x8523 +x8523 = x8522 +x8522 = x8521 +x8521 = x8520 +x8520 = x8519 +x8519 = x8518 +x8518 = x8517 +x8517 = x8516 +x8516 = x8515 +x8515 = x8514 +x8514 = x8513 +x8513 = x8512 +x8512 = x8511 +x8511 = x8510 +x8510 = x8509 +x8509 = x8508 +x8508 = x8507 +x8507 = x8506 +x8506 = x8505 +x8505 = x8504 +x8504 = x8503 +x8503 = x8502 +x8502 = x8501 +x8501 = x8500 +x8500 = x8499 +x8499 = x8498 +x8498 = x8497 +x8497 = x8496 +x8496 = x8495 +x8495 = x8494 +x8494 = x8493 +x8493 = x8492 +x8492 = x8491 +x8491 = x8490 +x8490 = x8489 +x8489 = x8488 +x8488 = x8487 +x8487 = x8486 +x8486 = x8485 +x8485 = x8484 +x8484 = x8483 +x8483 = x8482 +x8482 = x8481 +x8481 = x8480 +x8480 = x8479 +x8479 = x8478 +x8478 = x8477 +x8477 = x8476 +x8476 = x8475 +x8475 = x8474 +x8474 = x8473 +x8473 = x8472 +x8472 = x8471 +x8471 = x8470 +x8470 = x8469 +x8469 = x8468 +x8468 = x8467 +x8467 = x8466 +x8466 = x8465 +x8465 = x8464 +x8464 = x8463 +x8463 = x8462 +x8462 = x8461 +x8461 = x8460 +x8460 = x8459 +x8459 = x8458 +x8458 = x8457 +x8457 = x8456 +x8456 = x8455 +x8455 = x8454 +x8454 = x8453 +x8453 = x8452 +x8452 = x8451 +x8451 = x8450 +x8450 = x8449 +x8449 = x8448 +x8448 = x8447 +x8447 = x8446 +x8446 = x8445 +x8445 = x8444 +x8444 = x8443 +x8443 = x8442 +x8442 = x8441 +x8441 = x8440 +x8440 = x8439 +x8439 = x8438 +x8438 = x8437 +x8437 = x8436 +x8436 = x8435 +x8435 = x8434 +x8434 = x8433 +x8433 = x8432 +x8432 = x8431 +x8431 = x8430 +x8430 = x8429 +x8429 = x8428 +x8428 = x8427 +x8427 = x8426 +x8426 = x8425 +x8425 = x8424 +x8424 = x8423 +x8423 = x8422 +x8422 = x8421 +x8421 = x8420 +x8420 = x8419 +x8419 = x8418 +x8418 = x8417 +x8417 = x8416 +x8416 = x8415 +x8415 = x8414 +x8414 = x8413 +x8413 = x8412 +x8412 = x8411 +x8411 = x8410 +x8410 = x8409 +x8409 = x8408 +x8408 = x8407 +x8407 = x8406 +x8406 = x8405 +x8405 = x8404 +x8404 = x8403 +x8403 = x8402 +x8402 = x8401 +x8401 = x8400 +x8400 = x8399 +x8399 = x8398 +x8398 = x8397 +x8397 = x8396 +x8396 = x8395 +x8395 = x8394 +x8394 = x8393 +x8393 = x8392 +x8392 = x8391 +x8391 = x8390 +x8390 = x8389 +x8389 = x8388 +x8388 = x8387 +x8387 = x8386 +x8386 = x8385 +x8385 = x8384 +x8384 = x8383 +x8383 = x8382 +x8382 = x8381 +x8381 = x8380 +x8380 = x8379 +x8379 = x8378 +x8378 = x8377 +x8377 = x8376 +x8376 = x8375 +x8375 = x8374 +x8374 = x8373 +x8373 = x8372 +x8372 = x8371 +x8371 = x8370 +x8370 = x8369 +x8369 = x8368 +x8368 = x8367 +x8367 = x8366 +x8366 = x8365 +x8365 = x8364 +x8364 = x8363 +x8363 = x8362 +x8362 = x8361 +x8361 = x8360 +x8360 = x8359 +x8359 = x8358 +x8358 = x8357 +x8357 = x8356 +x8356 = x8355 +x8355 = x8354 +x8354 = x8353 +x8353 = x8352 +x8352 = x8351 +x8351 = x8350 +x8350 = x8349 +x8349 = x8348 +x8348 = x8347 +x8347 = x8346 +x8346 = x8345 +x8345 = x8344 +x8344 = x8343 +x8343 = x8342 +x8342 = x8341 +x8341 = x8340 +x8340 = x8339 +x8339 = x8338 +x8338 = x8337 +x8337 = x8336 +x8336 = x8335 +x8335 = x8334 +x8334 = x8333 +x8333 = x8332 +x8332 = x8331 +x8331 = x8330 +x8330 = x8329 +x8329 = x8328 +x8328 = x8327 +x8327 = x8326 +x8326 = x8325 +x8325 = x8324 +x8324 = x8323 +x8323 = x8322 +x8322 = x8321 +x8321 = x8320 +x8320 = x8319 +x8319 = x8318 +x8318 = x8317 +x8317 = x8316 +x8316 = x8315 +x8315 = x8314 +x8314 = x8313 +x8313 = x8312 +x8312 = x8311 +x8311 = x8310 +x8310 = x8309 +x8309 = x8308 +x8308 = x8307 +x8307 = x8306 +x8306 = x8305 +x8305 = x8304 +x8304 = x8303 +x8303 = x8302 +x8302 = x8301 +x8301 = x8300 +x8300 = x8299 +x8299 = x8298 +x8298 = x8297 +x8297 = x8296 +x8296 = x8295 +x8295 = x8294 +x8294 = x8293 +x8293 = x8292 +x8292 = x8291 +x8291 = x8290 +x8290 = x8289 +x8289 = x8288 +x8288 = x8287 +x8287 = x8286 +x8286 = x8285 +x8285 = x8284 +x8284 = x8283 +x8283 = x8282 +x8282 = x8281 +x8281 = x8280 +x8280 = x8279 +x8279 = x8278 +x8278 = x8277 +x8277 = x8276 +x8276 = x8275 +x8275 = x8274 +x8274 = x8273 +x8273 = x8272 +x8272 = x8271 +x8271 = x8270 +x8270 = x8269 +x8269 = x8268 +x8268 = x8267 +x8267 = x8266 +x8266 = x8265 +x8265 = x8264 +x8264 = x8263 +x8263 = x8262 +x8262 = x8261 +x8261 = x8260 +x8260 = x8259 +x8259 = x8258 +x8258 = x8257 +x8257 = x8256 +x8256 = x8255 +x8255 = x8254 +x8254 = x8253 +x8253 = x8252 +x8252 = x8251 +x8251 = x8250 +x8250 = x8249 +x8249 = x8248 +x8248 = x8247 +x8247 = x8246 +x8246 = x8245 +x8245 = x8244 +x8244 = x8243 +x8243 = x8242 +x8242 = x8241 +x8241 = x8240 +x8240 = x8239 +x8239 = x8238 +x8238 = x8237 +x8237 = x8236 +x8236 = x8235 +x8235 = x8234 +x8234 = x8233 +x8233 = x8232 +x8232 = x8231 +x8231 = x8230 +x8230 = x8229 +x8229 = x8228 +x8228 = x8227 +x8227 = x8226 +x8226 = x8225 +x8225 = x8224 +x8224 = x8223 +x8223 = x8222 +x8222 = x8221 +x8221 = x8220 +x8220 = x8219 +x8219 = x8218 +x8218 = x8217 +x8217 = x8216 +x8216 = x8215 +x8215 = x8214 +x8214 = x8213 +x8213 = x8212 +x8212 = x8211 +x8211 = x8210 +x8210 = x8209 +x8209 = x8208 +x8208 = x8207 +x8207 = x8206 +x8206 = x8205 +x8205 = x8204 +x8204 = x8203 +x8203 = x8202 +x8202 = x8201 +x8201 = x8200 +x8200 = x8199 +x8199 = x8198 +x8198 = x8197 +x8197 = x8196 +x8196 = x8195 +x8195 = x8194 +x8194 = x8193 +x8193 = x8192 +x8192 = x8191 +x8191 = x8190 +x8190 = x8189 +x8189 = x8188 +x8188 = x8187 +x8187 = x8186 +x8186 = x8185 +x8185 = x8184 +x8184 = x8183 +x8183 = x8182 +x8182 = x8181 +x8181 = x8180 +x8180 = x8179 +x8179 = x8178 +x8178 = x8177 +x8177 = x8176 +x8176 = x8175 +x8175 = x8174 +x8174 = x8173 +x8173 = x8172 +x8172 = x8171 +x8171 = x8170 +x8170 = x8169 +x8169 = x8168 +x8168 = x8167 +x8167 = x8166 +x8166 = x8165 +x8165 = x8164 +x8164 = x8163 +x8163 = x8162 +x8162 = x8161 +x8161 = x8160 +x8160 = x8159 +x8159 = x8158 +x8158 = x8157 +x8157 = x8156 +x8156 = x8155 +x8155 = x8154 +x8154 = x8153 +x8153 = x8152 +x8152 = x8151 +x8151 = x8150 +x8150 = x8149 +x8149 = x8148 +x8148 = x8147 +x8147 = x8146 +x8146 = x8145 +x8145 = x8144 +x8144 = x8143 +x8143 = x8142 +x8142 = x8141 +x8141 = x8140 +x8140 = x8139 +x8139 = x8138 +x8138 = x8137 +x8137 = x8136 +x8136 = x8135 +x8135 = x8134 +x8134 = x8133 +x8133 = x8132 +x8132 = x8131 +x8131 = x8130 +x8130 = x8129 +x8129 = x8128 +x8128 = x8127 +x8127 = x8126 +x8126 = x8125 +x8125 = x8124 +x8124 = x8123 +x8123 = x8122 +x8122 = x8121 +x8121 = x8120 +x8120 = x8119 +x8119 = x8118 +x8118 = x8117 +x8117 = x8116 +x8116 = x8115 +x8115 = x8114 +x8114 = x8113 +x8113 = x8112 +x8112 = x8111 +x8111 = x8110 +x8110 = x8109 +x8109 = x8108 +x8108 = x8107 +x8107 = x8106 +x8106 = x8105 +x8105 = x8104 +x8104 = x8103 +x8103 = x8102 +x8102 = x8101 +x8101 = x8100 +x8100 = x8099 +x8099 = x8098 +x8098 = x8097 +x8097 = x8096 +x8096 = x8095 +x8095 = x8094 +x8094 = x8093 +x8093 = x8092 +x8092 = x8091 +x8091 = x8090 +x8090 = x8089 +x8089 = x8088 +x8088 = x8087 +x8087 = x8086 +x8086 = x8085 +x8085 = x8084 +x8084 = x8083 +x8083 = x8082 +x8082 = x8081 +x8081 = x8080 +x8080 = x8079 +x8079 = x8078 +x8078 = x8077 +x8077 = x8076 +x8076 = x8075 +x8075 = x8074 +x8074 = x8073 +x8073 = x8072 +x8072 = x8071 +x8071 = x8070 +x8070 = x8069 +x8069 = x8068 +x8068 = x8067 +x8067 = x8066 +x8066 = x8065 +x8065 = x8064 +x8064 = x8063 +x8063 = x8062 +x8062 = x8061 +x8061 = x8060 +x8060 = x8059 +x8059 = x8058 +x8058 = x8057 +x8057 = x8056 +x8056 = x8055 +x8055 = x8054 +x8054 = x8053 +x8053 = x8052 +x8052 = x8051 +x8051 = x8050 +x8050 = x8049 +x8049 = x8048 +x8048 = x8047 +x8047 = x8046 +x8046 = x8045 +x8045 = x8044 +x8044 = x8043 +x8043 = x8042 +x8042 = x8041 +x8041 = x8040 +x8040 = x8039 +x8039 = x8038 +x8038 = x8037 +x8037 = x8036 +x8036 = x8035 +x8035 = x8034 +x8034 = x8033 +x8033 = x8032 +x8032 = x8031 +x8031 = x8030 +x8030 = x8029 +x8029 = x8028 +x8028 = x8027 +x8027 = x8026 +x8026 = x8025 +x8025 = x8024 +x8024 = x8023 +x8023 = x8022 +x8022 = x8021 +x8021 = x8020 +x8020 = x8019 +x8019 = x8018 +x8018 = x8017 +x8017 = x8016 +x8016 = x8015 +x8015 = x8014 +x8014 = x8013 +x8013 = x8012 +x8012 = x8011 +x8011 = x8010 +x8010 = x8009 +x8009 = x8008 +x8008 = x8007 +x8007 = x8006 +x8006 = x8005 +x8005 = x8004 +x8004 = x8003 +x8003 = x8002 +x8002 = x8001 +x8001 = x8000 +x8000 = x7999 +x7999 = x7998 +x7998 = x7997 +x7997 = x7996 +x7996 = x7995 +x7995 = x7994 +x7994 = x7993 +x7993 = x7992 +x7992 = x7991 +x7991 = x7990 +x7990 = x7989 +x7989 = x7988 +x7988 = x7987 +x7987 = x7986 +x7986 = x7985 +x7985 = x7984 +x7984 = x7983 +x7983 = x7982 +x7982 = x7981 +x7981 = x7980 +x7980 = x7979 +x7979 = x7978 +x7978 = x7977 +x7977 = x7976 +x7976 = x7975 +x7975 = x7974 +x7974 = x7973 +x7973 = x7972 +x7972 = x7971 +x7971 = x7970 +x7970 = x7969 +x7969 = x7968 +x7968 = x7967 +x7967 = x7966 +x7966 = x7965 +x7965 = x7964 +x7964 = x7963 +x7963 = x7962 +x7962 = x7961 +x7961 = x7960 +x7960 = x7959 +x7959 = x7958 +x7958 = x7957 +x7957 = x7956 +x7956 = x7955 +x7955 = x7954 +x7954 = x7953 +x7953 = x7952 +x7952 = x7951 +x7951 = x7950 +x7950 = x7949 +x7949 = x7948 +x7948 = x7947 +x7947 = x7946 +x7946 = x7945 +x7945 = x7944 +x7944 = x7943 +x7943 = x7942 +x7942 = x7941 +x7941 = x7940 +x7940 = x7939 +x7939 = x7938 +x7938 = x7937 +x7937 = x7936 +x7936 = x7935 +x7935 = x7934 +x7934 = x7933 +x7933 = x7932 +x7932 = x7931 +x7931 = x7930 +x7930 = x7929 +x7929 = x7928 +x7928 = x7927 +x7927 = x7926 +x7926 = x7925 +x7925 = x7924 +x7924 = x7923 +x7923 = x7922 +x7922 = x7921 +x7921 = x7920 +x7920 = x7919 +x7919 = x7918 +x7918 = x7917 +x7917 = x7916 +x7916 = x7915 +x7915 = x7914 +x7914 = x7913 +x7913 = x7912 +x7912 = x7911 +x7911 = x7910 +x7910 = x7909 +x7909 = x7908 +x7908 = x7907 +x7907 = x7906 +x7906 = x7905 +x7905 = x7904 +x7904 = x7903 +x7903 = x7902 +x7902 = x7901 +x7901 = x7900 +x7900 = x7899 +x7899 = x7898 +x7898 = x7897 +x7897 = x7896 +x7896 = x7895 +x7895 = x7894 +x7894 = x7893 +x7893 = x7892 +x7892 = x7891 +x7891 = x7890 +x7890 = x7889 +x7889 = x7888 +x7888 = x7887 +x7887 = x7886 +x7886 = x7885 +x7885 = x7884 +x7884 = x7883 +x7883 = x7882 +x7882 = x7881 +x7881 = x7880 +x7880 = x7879 +x7879 = x7878 +x7878 = x7877 +x7877 = x7876 +x7876 = x7875 +x7875 = x7874 +x7874 = x7873 +x7873 = x7872 +x7872 = x7871 +x7871 = x7870 +x7870 = x7869 +x7869 = x7868 +x7868 = x7867 +x7867 = x7866 +x7866 = x7865 +x7865 = x7864 +x7864 = x7863 +x7863 = x7862 +x7862 = x7861 +x7861 = x7860 +x7860 = x7859 +x7859 = x7858 +x7858 = x7857 +x7857 = x7856 +x7856 = x7855 +x7855 = x7854 +x7854 = x7853 +x7853 = x7852 +x7852 = x7851 +x7851 = x7850 +x7850 = x7849 +x7849 = x7848 +x7848 = x7847 +x7847 = x7846 +x7846 = x7845 +x7845 = x7844 +x7844 = x7843 +x7843 = x7842 +x7842 = x7841 +x7841 = x7840 +x7840 = x7839 +x7839 = x7838 +x7838 = x7837 +x7837 = x7836 +x7836 = x7835 +x7835 = x7834 +x7834 = x7833 +x7833 = x7832 +x7832 = x7831 +x7831 = x7830 +x7830 = x7829 +x7829 = x7828 +x7828 = x7827 +x7827 = x7826 +x7826 = x7825 +x7825 = x7824 +x7824 = x7823 +x7823 = x7822 +x7822 = x7821 +x7821 = x7820 +x7820 = x7819 +x7819 = x7818 +x7818 = x7817 +x7817 = x7816 +x7816 = x7815 +x7815 = x7814 +x7814 = x7813 +x7813 = x7812 +x7812 = x7811 +x7811 = x7810 +x7810 = x7809 +x7809 = x7808 +x7808 = x7807 +x7807 = x7806 +x7806 = x7805 +x7805 = x7804 +x7804 = x7803 +x7803 = x7802 +x7802 = x7801 +x7801 = x7800 +x7800 = x7799 +x7799 = x7798 +x7798 = x7797 +x7797 = x7796 +x7796 = x7795 +x7795 = x7794 +x7794 = x7793 +x7793 = x7792 +x7792 = x7791 +x7791 = x7790 +x7790 = x7789 +x7789 = x7788 +x7788 = x7787 +x7787 = x7786 +x7786 = x7785 +x7785 = x7784 +x7784 = x7783 +x7783 = x7782 +x7782 = x7781 +x7781 = x7780 +x7780 = x7779 +x7779 = x7778 +x7778 = x7777 +x7777 = x7776 +x7776 = x7775 +x7775 = x7774 +x7774 = x7773 +x7773 = x7772 +x7772 = x7771 +x7771 = x7770 +x7770 = x7769 +x7769 = x7768 +x7768 = x7767 +x7767 = x7766 +x7766 = x7765 +x7765 = x7764 +x7764 = x7763 +x7763 = x7762 +x7762 = x7761 +x7761 = x7760 +x7760 = x7759 +x7759 = x7758 +x7758 = x7757 +x7757 = x7756 +x7756 = x7755 +x7755 = x7754 +x7754 = x7753 +x7753 = x7752 +x7752 = x7751 +x7751 = x7750 +x7750 = x7749 +x7749 = x7748 +x7748 = x7747 +x7747 = x7746 +x7746 = x7745 +x7745 = x7744 +x7744 = x7743 +x7743 = x7742 +x7742 = x7741 +x7741 = x7740 +x7740 = x7739 +x7739 = x7738 +x7738 = x7737 +x7737 = x7736 +x7736 = x7735 +x7735 = x7734 +x7734 = x7733 +x7733 = x7732 +x7732 = x7731 +x7731 = x7730 +x7730 = x7729 +x7729 = x7728 +x7728 = x7727 +x7727 = x7726 +x7726 = x7725 +x7725 = x7724 +x7724 = x7723 +x7723 = x7722 +x7722 = x7721 +x7721 = x7720 +x7720 = x7719 +x7719 = x7718 +x7718 = x7717 +x7717 = x7716 +x7716 = x7715 +x7715 = x7714 +x7714 = x7713 +x7713 = x7712 +x7712 = x7711 +x7711 = x7710 +x7710 = x7709 +x7709 = x7708 +x7708 = x7707 +x7707 = x7706 +x7706 = x7705 +x7705 = x7704 +x7704 = x7703 +x7703 = x7702 +x7702 = x7701 +x7701 = x7700 +x7700 = x7699 +x7699 = x7698 +x7698 = x7697 +x7697 = x7696 +x7696 = x7695 +x7695 = x7694 +x7694 = x7693 +x7693 = x7692 +x7692 = x7691 +x7691 = x7690 +x7690 = x7689 +x7689 = x7688 +x7688 = x7687 +x7687 = x7686 +x7686 = x7685 +x7685 = x7684 +x7684 = x7683 +x7683 = x7682 +x7682 = x7681 +x7681 = x7680 +x7680 = x7679 +x7679 = x7678 +x7678 = x7677 +x7677 = x7676 +x7676 = x7675 +x7675 = x7674 +x7674 = x7673 +x7673 = x7672 +x7672 = x7671 +x7671 = x7670 +x7670 = x7669 +x7669 = x7668 +x7668 = x7667 +x7667 = x7666 +x7666 = x7665 +x7665 = x7664 +x7664 = x7663 +x7663 = x7662 +x7662 = x7661 +x7661 = x7660 +x7660 = x7659 +x7659 = x7658 +x7658 = x7657 +x7657 = x7656 +x7656 = x7655 +x7655 = x7654 +x7654 = x7653 +x7653 = x7652 +x7652 = x7651 +x7651 = x7650 +x7650 = x7649 +x7649 = x7648 +x7648 = x7647 +x7647 = x7646 +x7646 = x7645 +x7645 = x7644 +x7644 = x7643 +x7643 = x7642 +x7642 = x7641 +x7641 = x7640 +x7640 = x7639 +x7639 = x7638 +x7638 = x7637 +x7637 = x7636 +x7636 = x7635 +x7635 = x7634 +x7634 = x7633 +x7633 = x7632 +x7632 = x7631 +x7631 = x7630 +x7630 = x7629 +x7629 = x7628 +x7628 = x7627 +x7627 = x7626 +x7626 = x7625 +x7625 = x7624 +x7624 = x7623 +x7623 = x7622 +x7622 = x7621 +x7621 = x7620 +x7620 = x7619 +x7619 = x7618 +x7618 = x7617 +x7617 = x7616 +x7616 = x7615 +x7615 = x7614 +x7614 = x7613 +x7613 = x7612 +x7612 = x7611 +x7611 = x7610 +x7610 = x7609 +x7609 = x7608 +x7608 = x7607 +x7607 = x7606 +x7606 = x7605 +x7605 = x7604 +x7604 = x7603 +x7603 = x7602 +x7602 = x7601 +x7601 = x7600 +x7600 = x7599 +x7599 = x7598 +x7598 = x7597 +x7597 = x7596 +x7596 = x7595 +x7595 = x7594 +x7594 = x7593 +x7593 = x7592 +x7592 = x7591 +x7591 = x7590 +x7590 = x7589 +x7589 = x7588 +x7588 = x7587 +x7587 = x7586 +x7586 = x7585 +x7585 = x7584 +x7584 = x7583 +x7583 = x7582 +x7582 = x7581 +x7581 = x7580 +x7580 = x7579 +x7579 = x7578 +x7578 = x7577 +x7577 = x7576 +x7576 = x7575 +x7575 = x7574 +x7574 = x7573 +x7573 = x7572 +x7572 = x7571 +x7571 = x7570 +x7570 = x7569 +x7569 = x7568 +x7568 = x7567 +x7567 = x7566 +x7566 = x7565 +x7565 = x7564 +x7564 = x7563 +x7563 = x7562 +x7562 = x7561 +x7561 = x7560 +x7560 = x7559 +x7559 = x7558 +x7558 = x7557 +x7557 = x7556 +x7556 = x7555 +x7555 = x7554 +x7554 = x7553 +x7553 = x7552 +x7552 = x7551 +x7551 = x7550 +x7550 = x7549 +x7549 = x7548 +x7548 = x7547 +x7547 = x7546 +x7546 = x7545 +x7545 = x7544 +x7544 = x7543 +x7543 = x7542 +x7542 = x7541 +x7541 = x7540 +x7540 = x7539 +x7539 = x7538 +x7538 = x7537 +x7537 = x7536 +x7536 = x7535 +x7535 = x7534 +x7534 = x7533 +x7533 = x7532 +x7532 = x7531 +x7531 = x7530 +x7530 = x7529 +x7529 = x7528 +x7528 = x7527 +x7527 = x7526 +x7526 = x7525 +x7525 = x7524 +x7524 = x7523 +x7523 = x7522 +x7522 = x7521 +x7521 = x7520 +x7520 = x7519 +x7519 = x7518 +x7518 = x7517 +x7517 = x7516 +x7516 = x7515 +x7515 = x7514 +x7514 = x7513 +x7513 = x7512 +x7512 = x7511 +x7511 = x7510 +x7510 = x7509 +x7509 = x7508 +x7508 = x7507 +x7507 = x7506 +x7506 = x7505 +x7505 = x7504 +x7504 = x7503 +x7503 = x7502 +x7502 = x7501 +x7501 = x7500 +x7500 = x7499 +x7499 = x7498 +x7498 = x7497 +x7497 = x7496 +x7496 = x7495 +x7495 = x7494 +x7494 = x7493 +x7493 = x7492 +x7492 = x7491 +x7491 = x7490 +x7490 = x7489 +x7489 = x7488 +x7488 = x7487 +x7487 = x7486 +x7486 = x7485 +x7485 = x7484 +x7484 = x7483 +x7483 = x7482 +x7482 = x7481 +x7481 = x7480 +x7480 = x7479 +x7479 = x7478 +x7478 = x7477 +x7477 = x7476 +x7476 = x7475 +x7475 = x7474 +x7474 = x7473 +x7473 = x7472 +x7472 = x7471 +x7471 = x7470 +x7470 = x7469 +x7469 = x7468 +x7468 = x7467 +x7467 = x7466 +x7466 = x7465 +x7465 = x7464 +x7464 = x7463 +x7463 = x7462 +x7462 = x7461 +x7461 = x7460 +x7460 = x7459 +x7459 = x7458 +x7458 = x7457 +x7457 = x7456 +x7456 = x7455 +x7455 = x7454 +x7454 = x7453 +x7453 = x7452 +x7452 = x7451 +x7451 = x7450 +x7450 = x7449 +x7449 = x7448 +x7448 = x7447 +x7447 = x7446 +x7446 = x7445 +x7445 = x7444 +x7444 = x7443 +x7443 = x7442 +x7442 = x7441 +x7441 = x7440 +x7440 = x7439 +x7439 = x7438 +x7438 = x7437 +x7437 = x7436 +x7436 = x7435 +x7435 = x7434 +x7434 = x7433 +x7433 = x7432 +x7432 = x7431 +x7431 = x7430 +x7430 = x7429 +x7429 = x7428 +x7428 = x7427 +x7427 = x7426 +x7426 = x7425 +x7425 = x7424 +x7424 = x7423 +x7423 = x7422 +x7422 = x7421 +x7421 = x7420 +x7420 = x7419 +x7419 = x7418 +x7418 = x7417 +x7417 = x7416 +x7416 = x7415 +x7415 = x7414 +x7414 = x7413 +x7413 = x7412 +x7412 = x7411 +x7411 = x7410 +x7410 = x7409 +x7409 = x7408 +x7408 = x7407 +x7407 = x7406 +x7406 = x7405 +x7405 = x7404 +x7404 = x7403 +x7403 = x7402 +x7402 = x7401 +x7401 = x7400 +x7400 = x7399 +x7399 = x7398 +x7398 = x7397 +x7397 = x7396 +x7396 = x7395 +x7395 = x7394 +x7394 = x7393 +x7393 = x7392 +x7392 = x7391 +x7391 = x7390 +x7390 = x7389 +x7389 = x7388 +x7388 = x7387 +x7387 = x7386 +x7386 = x7385 +x7385 = x7384 +x7384 = x7383 +x7383 = x7382 +x7382 = x7381 +x7381 = x7380 +x7380 = x7379 +x7379 = x7378 +x7378 = x7377 +x7377 = x7376 +x7376 = x7375 +x7375 = x7374 +x7374 = x7373 +x7373 = x7372 +x7372 = x7371 +x7371 = x7370 +x7370 = x7369 +x7369 = x7368 +x7368 = x7367 +x7367 = x7366 +x7366 = x7365 +x7365 = x7364 +x7364 = x7363 +x7363 = x7362 +x7362 = x7361 +x7361 = x7360 +x7360 = x7359 +x7359 = x7358 +x7358 = x7357 +x7357 = x7356 +x7356 = x7355 +x7355 = x7354 +x7354 = x7353 +x7353 = x7352 +x7352 = x7351 +x7351 = x7350 +x7350 = x7349 +x7349 = x7348 +x7348 = x7347 +x7347 = x7346 +x7346 = x7345 +x7345 = x7344 +x7344 = x7343 +x7343 = x7342 +x7342 = x7341 +x7341 = x7340 +x7340 = x7339 +x7339 = x7338 +x7338 = x7337 +x7337 = x7336 +x7336 = x7335 +x7335 = x7334 +x7334 = x7333 +x7333 = x7332 +x7332 = x7331 +x7331 = x7330 +x7330 = x7329 +x7329 = x7328 +x7328 = x7327 +x7327 = x7326 +x7326 = x7325 +x7325 = x7324 +x7324 = x7323 +x7323 = x7322 +x7322 = x7321 +x7321 = x7320 +x7320 = x7319 +x7319 = x7318 +x7318 = x7317 +x7317 = x7316 +x7316 = x7315 +x7315 = x7314 +x7314 = x7313 +x7313 = x7312 +x7312 = x7311 +x7311 = x7310 +x7310 = x7309 +x7309 = x7308 +x7308 = x7307 +x7307 = x7306 +x7306 = x7305 +x7305 = x7304 +x7304 = x7303 +x7303 = x7302 +x7302 = x7301 +x7301 = x7300 +x7300 = x7299 +x7299 = x7298 +x7298 = x7297 +x7297 = x7296 +x7296 = x7295 +x7295 = x7294 +x7294 = x7293 +x7293 = x7292 +x7292 = x7291 +x7291 = x7290 +x7290 = x7289 +x7289 = x7288 +x7288 = x7287 +x7287 = x7286 +x7286 = x7285 +x7285 = x7284 +x7284 = x7283 +x7283 = x7282 +x7282 = x7281 +x7281 = x7280 +x7280 = x7279 +x7279 = x7278 +x7278 = x7277 +x7277 = x7276 +x7276 = x7275 +x7275 = x7274 +x7274 = x7273 +x7273 = x7272 +x7272 = x7271 +x7271 = x7270 +x7270 = x7269 +x7269 = x7268 +x7268 = x7267 +x7267 = x7266 +x7266 = x7265 +x7265 = x7264 +x7264 = x7263 +x7263 = x7262 +x7262 = x7261 +x7261 = x7260 +x7260 = x7259 +x7259 = x7258 +x7258 = x7257 +x7257 = x7256 +x7256 = x7255 +x7255 = x7254 +x7254 = x7253 +x7253 = x7252 +x7252 = x7251 +x7251 = x7250 +x7250 = x7249 +x7249 = x7248 +x7248 = x7247 +x7247 = x7246 +x7246 = x7245 +x7245 = x7244 +x7244 = x7243 +x7243 = x7242 +x7242 = x7241 +x7241 = x7240 +x7240 = x7239 +x7239 = x7238 +x7238 = x7237 +x7237 = x7236 +x7236 = x7235 +x7235 = x7234 +x7234 = x7233 +x7233 = x7232 +x7232 = x7231 +x7231 = x7230 +x7230 = x7229 +x7229 = x7228 +x7228 = x7227 +x7227 = x7226 +x7226 = x7225 +x7225 = x7224 +x7224 = x7223 +x7223 = x7222 +x7222 = x7221 +x7221 = x7220 +x7220 = x7219 +x7219 = x7218 +x7218 = x7217 +x7217 = x7216 +x7216 = x7215 +x7215 = x7214 +x7214 = x7213 +x7213 = x7212 +x7212 = x7211 +x7211 = x7210 +x7210 = x7209 +x7209 = x7208 +x7208 = x7207 +x7207 = x7206 +x7206 = x7205 +x7205 = x7204 +x7204 = x7203 +x7203 = x7202 +x7202 = x7201 +x7201 = x7200 +x7200 = x7199 +x7199 = x7198 +x7198 = x7197 +x7197 = x7196 +x7196 = x7195 +x7195 = x7194 +x7194 = x7193 +x7193 = x7192 +x7192 = x7191 +x7191 = x7190 +x7190 = x7189 +x7189 = x7188 +x7188 = x7187 +x7187 = x7186 +x7186 = x7185 +x7185 = x7184 +x7184 = x7183 +x7183 = x7182 +x7182 = x7181 +x7181 = x7180 +x7180 = x7179 +x7179 = x7178 +x7178 = x7177 +x7177 = x7176 +x7176 = x7175 +x7175 = x7174 +x7174 = x7173 +x7173 = x7172 +x7172 = x7171 +x7171 = x7170 +x7170 = x7169 +x7169 = x7168 +x7168 = x7167 +x7167 = x7166 +x7166 = x7165 +x7165 = x7164 +x7164 = x7163 +x7163 = x7162 +x7162 = x7161 +x7161 = x7160 +x7160 = x7159 +x7159 = x7158 +x7158 = x7157 +x7157 = x7156 +x7156 = x7155 +x7155 = x7154 +x7154 = x7153 +x7153 = x7152 +x7152 = x7151 +x7151 = x7150 +x7150 = x7149 +x7149 = x7148 +x7148 = x7147 +x7147 = x7146 +x7146 = x7145 +x7145 = x7144 +x7144 = x7143 +x7143 = x7142 +x7142 = x7141 +x7141 = x7140 +x7140 = x7139 +x7139 = x7138 +x7138 = x7137 +x7137 = x7136 +x7136 = x7135 +x7135 = x7134 +x7134 = x7133 +x7133 = x7132 +x7132 = x7131 +x7131 = x7130 +x7130 = x7129 +x7129 = x7128 +x7128 = x7127 +x7127 = x7126 +x7126 = x7125 +x7125 = x7124 +x7124 = x7123 +x7123 = x7122 +x7122 = x7121 +x7121 = x7120 +x7120 = x7119 +x7119 = x7118 +x7118 = x7117 +x7117 = x7116 +x7116 = x7115 +x7115 = x7114 +x7114 = x7113 +x7113 = x7112 +x7112 = x7111 +x7111 = x7110 +x7110 = x7109 +x7109 = x7108 +x7108 = x7107 +x7107 = x7106 +x7106 = x7105 +x7105 = x7104 +x7104 = x7103 +x7103 = x7102 +x7102 = x7101 +x7101 = x7100 +x7100 = x7099 +x7099 = x7098 +x7098 = x7097 +x7097 = x7096 +x7096 = x7095 +x7095 = x7094 +x7094 = x7093 +x7093 = x7092 +x7092 = x7091 +x7091 = x7090 +x7090 = x7089 +x7089 = x7088 +x7088 = x7087 +x7087 = x7086 +x7086 = x7085 +x7085 = x7084 +x7084 = x7083 +x7083 = x7082 +x7082 = x7081 +x7081 = x7080 +x7080 = x7079 +x7079 = x7078 +x7078 = x7077 +x7077 = x7076 +x7076 = x7075 +x7075 = x7074 +x7074 = x7073 +x7073 = x7072 +x7072 = x7071 +x7071 = x7070 +x7070 = x7069 +x7069 = x7068 +x7068 = x7067 +x7067 = x7066 +x7066 = x7065 +x7065 = x7064 +x7064 = x7063 +x7063 = x7062 +x7062 = x7061 +x7061 = x7060 +x7060 = x7059 +x7059 = x7058 +x7058 = x7057 +x7057 = x7056 +x7056 = x7055 +x7055 = x7054 +x7054 = x7053 +x7053 = x7052 +x7052 = x7051 +x7051 = x7050 +x7050 = x7049 +x7049 = x7048 +x7048 = x7047 +x7047 = x7046 +x7046 = x7045 +x7045 = x7044 +x7044 = x7043 +x7043 = x7042 +x7042 = x7041 +x7041 = x7040 +x7040 = x7039 +x7039 = x7038 +x7038 = x7037 +x7037 = x7036 +x7036 = x7035 +x7035 = x7034 +x7034 = x7033 +x7033 = x7032 +x7032 = x7031 +x7031 = x7030 +x7030 = x7029 +x7029 = x7028 +x7028 = x7027 +x7027 = x7026 +x7026 = x7025 +x7025 = x7024 +x7024 = x7023 +x7023 = x7022 +x7022 = x7021 +x7021 = x7020 +x7020 = x7019 +x7019 = x7018 +x7018 = x7017 +x7017 = x7016 +x7016 = x7015 +x7015 = x7014 +x7014 = x7013 +x7013 = x7012 +x7012 = x7011 +x7011 = x7010 +x7010 = x7009 +x7009 = x7008 +x7008 = x7007 +x7007 = x7006 +x7006 = x7005 +x7005 = x7004 +x7004 = x7003 +x7003 = x7002 +x7002 = x7001 +x7001 = x7000 +x7000 = x6999 +x6999 = x6998 +x6998 = x6997 +x6997 = x6996 +x6996 = x6995 +x6995 = x6994 +x6994 = x6993 +x6993 = x6992 +x6992 = x6991 +x6991 = x6990 +x6990 = x6989 +x6989 = x6988 +x6988 = x6987 +x6987 = x6986 +x6986 = x6985 +x6985 = x6984 +x6984 = x6983 +x6983 = x6982 +x6982 = x6981 +x6981 = x6980 +x6980 = x6979 +x6979 = x6978 +x6978 = x6977 +x6977 = x6976 +x6976 = x6975 +x6975 = x6974 +x6974 = x6973 +x6973 = x6972 +x6972 = x6971 +x6971 = x6970 +x6970 = x6969 +x6969 = x6968 +x6968 = x6967 +x6967 = x6966 +x6966 = x6965 +x6965 = x6964 +x6964 = x6963 +x6963 = x6962 +x6962 = x6961 +x6961 = x6960 +x6960 = x6959 +x6959 = x6958 +x6958 = x6957 +x6957 = x6956 +x6956 = x6955 +x6955 = x6954 +x6954 = x6953 +x6953 = x6952 +x6952 = x6951 +x6951 = x6950 +x6950 = x6949 +x6949 = x6948 +x6948 = x6947 +x6947 = x6946 +x6946 = x6945 +x6945 = x6944 +x6944 = x6943 +x6943 = x6942 +x6942 = x6941 +x6941 = x6940 +x6940 = x6939 +x6939 = x6938 +x6938 = x6937 +x6937 = x6936 +x6936 = x6935 +x6935 = x6934 +x6934 = x6933 +x6933 = x6932 +x6932 = x6931 +x6931 = x6930 +x6930 = x6929 +x6929 = x6928 +x6928 = x6927 +x6927 = x6926 +x6926 = x6925 +x6925 = x6924 +x6924 = x6923 +x6923 = x6922 +x6922 = x6921 +x6921 = x6920 +x6920 = x6919 +x6919 = x6918 +x6918 = x6917 +x6917 = x6916 +x6916 = x6915 +x6915 = x6914 +x6914 = x6913 +x6913 = x6912 +x6912 = x6911 +x6911 = x6910 +x6910 = x6909 +x6909 = x6908 +x6908 = x6907 +x6907 = x6906 +x6906 = x6905 +x6905 = x6904 +x6904 = x6903 +x6903 = x6902 +x6902 = x6901 +x6901 = x6900 +x6900 = x6899 +x6899 = x6898 +x6898 = x6897 +x6897 = x6896 +x6896 = x6895 +x6895 = x6894 +x6894 = x6893 +x6893 = x6892 +x6892 = x6891 +x6891 = x6890 +x6890 = x6889 +x6889 = x6888 +x6888 = x6887 +x6887 = x6886 +x6886 = x6885 +x6885 = x6884 +x6884 = x6883 +x6883 = x6882 +x6882 = x6881 +x6881 = x6880 +x6880 = x6879 +x6879 = x6878 +x6878 = x6877 +x6877 = x6876 +x6876 = x6875 +x6875 = x6874 +x6874 = x6873 +x6873 = x6872 +x6872 = x6871 +x6871 = x6870 +x6870 = x6869 +x6869 = x6868 +x6868 = x6867 +x6867 = x6866 +x6866 = x6865 +x6865 = x6864 +x6864 = x6863 +x6863 = x6862 +x6862 = x6861 +x6861 = x6860 +x6860 = x6859 +x6859 = x6858 +x6858 = x6857 +x6857 = x6856 +x6856 = x6855 +x6855 = x6854 +x6854 = x6853 +x6853 = x6852 +x6852 = x6851 +x6851 = x6850 +x6850 = x6849 +x6849 = x6848 +x6848 = x6847 +x6847 = x6846 +x6846 = x6845 +x6845 = x6844 +x6844 = x6843 +x6843 = x6842 +x6842 = x6841 +x6841 = x6840 +x6840 = x6839 +x6839 = x6838 +x6838 = x6837 +x6837 = x6836 +x6836 = x6835 +x6835 = x6834 +x6834 = x6833 +x6833 = x6832 +x6832 = x6831 +x6831 = x6830 +x6830 = x6829 +x6829 = x6828 +x6828 = x6827 +x6827 = x6826 +x6826 = x6825 +x6825 = x6824 +x6824 = x6823 +x6823 = x6822 +x6822 = x6821 +x6821 = x6820 +x6820 = x6819 +x6819 = x6818 +x6818 = x6817 +x6817 = x6816 +x6816 = x6815 +x6815 = x6814 +x6814 = x6813 +x6813 = x6812 +x6812 = x6811 +x6811 = x6810 +x6810 = x6809 +x6809 = x6808 +x6808 = x6807 +x6807 = x6806 +x6806 = x6805 +x6805 = x6804 +x6804 = x6803 +x6803 = x6802 +x6802 = x6801 +x6801 = x6800 +x6800 = x6799 +x6799 = x6798 +x6798 = x6797 +x6797 = x6796 +x6796 = x6795 +x6795 = x6794 +x6794 = x6793 +x6793 = x6792 +x6792 = x6791 +x6791 = x6790 +x6790 = x6789 +x6789 = x6788 +x6788 = x6787 +x6787 = x6786 +x6786 = x6785 +x6785 = x6784 +x6784 = x6783 +x6783 = x6782 +x6782 = x6781 +x6781 = x6780 +x6780 = x6779 +x6779 = x6778 +x6778 = x6777 +x6777 = x6776 +x6776 = x6775 +x6775 = x6774 +x6774 = x6773 +x6773 = x6772 +x6772 = x6771 +x6771 = x6770 +x6770 = x6769 +x6769 = x6768 +x6768 = x6767 +x6767 = x6766 +x6766 = x6765 +x6765 = x6764 +x6764 = x6763 +x6763 = x6762 +x6762 = x6761 +x6761 = x6760 +x6760 = x6759 +x6759 = x6758 +x6758 = x6757 +x6757 = x6756 +x6756 = x6755 +x6755 = x6754 +x6754 = x6753 +x6753 = x6752 +x6752 = x6751 +x6751 = x6750 +x6750 = x6749 +x6749 = x6748 +x6748 = x6747 +x6747 = x6746 +x6746 = x6745 +x6745 = x6744 +x6744 = x6743 +x6743 = x6742 +x6742 = x6741 +x6741 = x6740 +x6740 = x6739 +x6739 = x6738 +x6738 = x6737 +x6737 = x6736 +x6736 = x6735 +x6735 = x6734 +x6734 = x6733 +x6733 = x6732 +x6732 = x6731 +x6731 = x6730 +x6730 = x6729 +x6729 = x6728 +x6728 = x6727 +x6727 = x6726 +x6726 = x6725 +x6725 = x6724 +x6724 = x6723 +x6723 = x6722 +x6722 = x6721 +x6721 = x6720 +x6720 = x6719 +x6719 = x6718 +x6718 = x6717 +x6717 = x6716 +x6716 = x6715 +x6715 = x6714 +x6714 = x6713 +x6713 = x6712 +x6712 = x6711 +x6711 = x6710 +x6710 = x6709 +x6709 = x6708 +x6708 = x6707 +x6707 = x6706 +x6706 = x6705 +x6705 = x6704 +x6704 = x6703 +x6703 = x6702 +x6702 = x6701 +x6701 = x6700 +x6700 = x6699 +x6699 = x6698 +x6698 = x6697 +x6697 = x6696 +x6696 = x6695 +x6695 = x6694 +x6694 = x6693 +x6693 = x6692 +x6692 = x6691 +x6691 = x6690 +x6690 = x6689 +x6689 = x6688 +x6688 = x6687 +x6687 = x6686 +x6686 = x6685 +x6685 = x6684 +x6684 = x6683 +x6683 = x6682 +x6682 = x6681 +x6681 = x6680 +x6680 = x6679 +x6679 = x6678 +x6678 = x6677 +x6677 = x6676 +x6676 = x6675 +x6675 = x6674 +x6674 = x6673 +x6673 = x6672 +x6672 = x6671 +x6671 = x6670 +x6670 = x6669 +x6669 = x6668 +x6668 = x6667 +x6667 = x6666 +x6666 = x6665 +x6665 = x6664 +x6664 = x6663 +x6663 = x6662 +x6662 = x6661 +x6661 = x6660 +x6660 = x6659 +x6659 = x6658 +x6658 = x6657 +x6657 = x6656 +x6656 = x6655 +x6655 = x6654 +x6654 = x6653 +x6653 = x6652 +x6652 = x6651 +x6651 = x6650 +x6650 = x6649 +x6649 = x6648 +x6648 = x6647 +x6647 = x6646 +x6646 = x6645 +x6645 = x6644 +x6644 = x6643 +x6643 = x6642 +x6642 = x6641 +x6641 = x6640 +x6640 = x6639 +x6639 = x6638 +x6638 = x6637 +x6637 = x6636 +x6636 = x6635 +x6635 = x6634 +x6634 = x6633 +x6633 = x6632 +x6632 = x6631 +x6631 = x6630 +x6630 = x6629 +x6629 = x6628 +x6628 = x6627 +x6627 = x6626 +x6626 = x6625 +x6625 = x6624 +x6624 = x6623 +x6623 = x6622 +x6622 = x6621 +x6621 = x6620 +x6620 = x6619 +x6619 = x6618 +x6618 = x6617 +x6617 = x6616 +x6616 = x6615 +x6615 = x6614 +x6614 = x6613 +x6613 = x6612 +x6612 = x6611 +x6611 = x6610 +x6610 = x6609 +x6609 = x6608 +x6608 = x6607 +x6607 = x6606 +x6606 = x6605 +x6605 = x6604 +x6604 = x6603 +x6603 = x6602 +x6602 = x6601 +x6601 = x6600 +x6600 = x6599 +x6599 = x6598 +x6598 = x6597 +x6597 = x6596 +x6596 = x6595 +x6595 = x6594 +x6594 = x6593 +x6593 = x6592 +x6592 = x6591 +x6591 = x6590 +x6590 = x6589 +x6589 = x6588 +x6588 = x6587 +x6587 = x6586 +x6586 = x6585 +x6585 = x6584 +x6584 = x6583 +x6583 = x6582 +x6582 = x6581 +x6581 = x6580 +x6580 = x6579 +x6579 = x6578 +x6578 = x6577 +x6577 = x6576 +x6576 = x6575 +x6575 = x6574 +x6574 = x6573 +x6573 = x6572 +x6572 = x6571 +x6571 = x6570 +x6570 = x6569 +x6569 = x6568 +x6568 = x6567 +x6567 = x6566 +x6566 = x6565 +x6565 = x6564 +x6564 = x6563 +x6563 = x6562 +x6562 = x6561 +x6561 = x6560 +x6560 = x6559 +x6559 = x6558 +x6558 = x6557 +x6557 = x6556 +x6556 = x6555 +x6555 = x6554 +x6554 = x6553 +x6553 = x6552 +x6552 = x6551 +x6551 = x6550 +x6550 = x6549 +x6549 = x6548 +x6548 = x6547 +x6547 = x6546 +x6546 = x6545 +x6545 = x6544 +x6544 = x6543 +x6543 = x6542 +x6542 = x6541 +x6541 = x6540 +x6540 = x6539 +x6539 = x6538 +x6538 = x6537 +x6537 = x6536 +x6536 = x6535 +x6535 = x6534 +x6534 = x6533 +x6533 = x6532 +x6532 = x6531 +x6531 = x6530 +x6530 = x6529 +x6529 = x6528 +x6528 = x6527 +x6527 = x6526 +x6526 = x6525 +x6525 = x6524 +x6524 = x6523 +x6523 = x6522 +x6522 = x6521 +x6521 = x6520 +x6520 = x6519 +x6519 = x6518 +x6518 = x6517 +x6517 = x6516 +x6516 = x6515 +x6515 = x6514 +x6514 = x6513 +x6513 = x6512 +x6512 = x6511 +x6511 = x6510 +x6510 = x6509 +x6509 = x6508 +x6508 = x6507 +x6507 = x6506 +x6506 = x6505 +x6505 = x6504 +x6504 = x6503 +x6503 = x6502 +x6502 = x6501 +x6501 = x6500 +x6500 = x6499 +x6499 = x6498 +x6498 = x6497 +x6497 = x6496 +x6496 = x6495 +x6495 = x6494 +x6494 = x6493 +x6493 = x6492 +x6492 = x6491 +x6491 = x6490 +x6490 = x6489 +x6489 = x6488 +x6488 = x6487 +x6487 = x6486 +x6486 = x6485 +x6485 = x6484 +x6484 = x6483 +x6483 = x6482 +x6482 = x6481 +x6481 = x6480 +x6480 = x6479 +x6479 = x6478 +x6478 = x6477 +x6477 = x6476 +x6476 = x6475 +x6475 = x6474 +x6474 = x6473 +x6473 = x6472 +x6472 = x6471 +x6471 = x6470 +x6470 = x6469 +x6469 = x6468 +x6468 = x6467 +x6467 = x6466 +x6466 = x6465 +x6465 = x6464 +x6464 = x6463 +x6463 = x6462 +x6462 = x6461 +x6461 = x6460 +x6460 = x6459 +x6459 = x6458 +x6458 = x6457 +x6457 = x6456 +x6456 = x6455 +x6455 = x6454 +x6454 = x6453 +x6453 = x6452 +x6452 = x6451 +x6451 = x6450 +x6450 = x6449 +x6449 = x6448 +x6448 = x6447 +x6447 = x6446 +x6446 = x6445 +x6445 = x6444 +x6444 = x6443 +x6443 = x6442 +x6442 = x6441 +x6441 = x6440 +x6440 = x6439 +x6439 = x6438 +x6438 = x6437 +x6437 = x6436 +x6436 = x6435 +x6435 = x6434 +x6434 = x6433 +x6433 = x6432 +x6432 = x6431 +x6431 = x6430 +x6430 = x6429 +x6429 = x6428 +x6428 = x6427 +x6427 = x6426 +x6426 = x6425 +x6425 = x6424 +x6424 = x6423 +x6423 = x6422 +x6422 = x6421 +x6421 = x6420 +x6420 = x6419 +x6419 = x6418 +x6418 = x6417 +x6417 = x6416 +x6416 = x6415 +x6415 = x6414 +x6414 = x6413 +x6413 = x6412 +x6412 = x6411 +x6411 = x6410 +x6410 = x6409 +x6409 = x6408 +x6408 = x6407 +x6407 = x6406 +x6406 = x6405 +x6405 = x6404 +x6404 = x6403 +x6403 = x6402 +x6402 = x6401 +x6401 = x6400 +x6400 = x6399 +x6399 = x6398 +x6398 = x6397 +x6397 = x6396 +x6396 = x6395 +x6395 = x6394 +x6394 = x6393 +x6393 = x6392 +x6392 = x6391 +x6391 = x6390 +x6390 = x6389 +x6389 = x6388 +x6388 = x6387 +x6387 = x6386 +x6386 = x6385 +x6385 = x6384 +x6384 = x6383 +x6383 = x6382 +x6382 = x6381 +x6381 = x6380 +x6380 = x6379 +x6379 = x6378 +x6378 = x6377 +x6377 = x6376 +x6376 = x6375 +x6375 = x6374 +x6374 = x6373 +x6373 = x6372 +x6372 = x6371 +x6371 = x6370 +x6370 = x6369 +x6369 = x6368 +x6368 = x6367 +x6367 = x6366 +x6366 = x6365 +x6365 = x6364 +x6364 = x6363 +x6363 = x6362 +x6362 = x6361 +x6361 = x6360 +x6360 = x6359 +x6359 = x6358 +x6358 = x6357 +x6357 = x6356 +x6356 = x6355 +x6355 = x6354 +x6354 = x6353 +x6353 = x6352 +x6352 = x6351 +x6351 = x6350 +x6350 = x6349 +x6349 = x6348 +x6348 = x6347 +x6347 = x6346 +x6346 = x6345 +x6345 = x6344 +x6344 = x6343 +x6343 = x6342 +x6342 = x6341 +x6341 = x6340 +x6340 = x6339 +x6339 = x6338 +x6338 = x6337 +x6337 = x6336 +x6336 = x6335 +x6335 = x6334 +x6334 = x6333 +x6333 = x6332 +x6332 = x6331 +x6331 = x6330 +x6330 = x6329 +x6329 = x6328 +x6328 = x6327 +x6327 = x6326 +x6326 = x6325 +x6325 = x6324 +x6324 = x6323 +x6323 = x6322 +x6322 = x6321 +x6321 = x6320 +x6320 = x6319 +x6319 = x6318 +x6318 = x6317 +x6317 = x6316 +x6316 = x6315 +x6315 = x6314 +x6314 = x6313 +x6313 = x6312 +x6312 = x6311 +x6311 = x6310 +x6310 = x6309 +x6309 = x6308 +x6308 = x6307 +x6307 = x6306 +x6306 = x6305 +x6305 = x6304 +x6304 = x6303 +x6303 = x6302 +x6302 = x6301 +x6301 = x6300 +x6300 = x6299 +x6299 = x6298 +x6298 = x6297 +x6297 = x6296 +x6296 = x6295 +x6295 = x6294 +x6294 = x6293 +x6293 = x6292 +x6292 = x6291 +x6291 = x6290 +x6290 = x6289 +x6289 = x6288 +x6288 = x6287 +x6287 = x6286 +x6286 = x6285 +x6285 = x6284 +x6284 = x6283 +x6283 = x6282 +x6282 = x6281 +x6281 = x6280 +x6280 = x6279 +x6279 = x6278 +x6278 = x6277 +x6277 = x6276 +x6276 = x6275 +x6275 = x6274 +x6274 = x6273 +x6273 = x6272 +x6272 = x6271 +x6271 = x6270 +x6270 = x6269 +x6269 = x6268 +x6268 = x6267 +x6267 = x6266 +x6266 = x6265 +x6265 = x6264 +x6264 = x6263 +x6263 = x6262 +x6262 = x6261 +x6261 = x6260 +x6260 = x6259 +x6259 = x6258 +x6258 = x6257 +x6257 = x6256 +x6256 = x6255 +x6255 = x6254 +x6254 = x6253 +x6253 = x6252 +x6252 = x6251 +x6251 = x6250 +x6250 = x6249 +x6249 = x6248 +x6248 = x6247 +x6247 = x6246 +x6246 = x6245 +x6245 = x6244 +x6244 = x6243 +x6243 = x6242 +x6242 = x6241 +x6241 = x6240 +x6240 = x6239 +x6239 = x6238 +x6238 = x6237 +x6237 = x6236 +x6236 = x6235 +x6235 = x6234 +x6234 = x6233 +x6233 = x6232 +x6232 = x6231 +x6231 = x6230 +x6230 = x6229 +x6229 = x6228 +x6228 = x6227 +x6227 = x6226 +x6226 = x6225 +x6225 = x6224 +x6224 = x6223 +x6223 = x6222 +x6222 = x6221 +x6221 = x6220 +x6220 = x6219 +x6219 = x6218 +x6218 = x6217 +x6217 = x6216 +x6216 = x6215 +x6215 = x6214 +x6214 = x6213 +x6213 = x6212 +x6212 = x6211 +x6211 = x6210 +x6210 = x6209 +x6209 = x6208 +x6208 = x6207 +x6207 = x6206 +x6206 = x6205 +x6205 = x6204 +x6204 = x6203 +x6203 = x6202 +x6202 = x6201 +x6201 = x6200 +x6200 = x6199 +x6199 = x6198 +x6198 = x6197 +x6197 = x6196 +x6196 = x6195 +x6195 = x6194 +x6194 = x6193 +x6193 = x6192 +x6192 = x6191 +x6191 = x6190 +x6190 = x6189 +x6189 = x6188 +x6188 = x6187 +x6187 = x6186 +x6186 = x6185 +x6185 = x6184 +x6184 = x6183 +x6183 = x6182 +x6182 = x6181 +x6181 = x6180 +x6180 = x6179 +x6179 = x6178 +x6178 = x6177 +x6177 = x6176 +x6176 = x6175 +x6175 = x6174 +x6174 = x6173 +x6173 = x6172 +x6172 = x6171 +x6171 = x6170 +x6170 = x6169 +x6169 = x6168 +x6168 = x6167 +x6167 = x6166 +x6166 = x6165 +x6165 = x6164 +x6164 = x6163 +x6163 = x6162 +x6162 = x6161 +x6161 = x6160 +x6160 = x6159 +x6159 = x6158 +x6158 = x6157 +x6157 = x6156 +x6156 = x6155 +x6155 = x6154 +x6154 = x6153 +x6153 = x6152 +x6152 = x6151 +x6151 = x6150 +x6150 = x6149 +x6149 = x6148 +x6148 = x6147 +x6147 = x6146 +x6146 = x6145 +x6145 = x6144 +x6144 = x6143 +x6143 = x6142 +x6142 = x6141 +x6141 = x6140 +x6140 = x6139 +x6139 = x6138 +x6138 = x6137 +x6137 = x6136 +x6136 = x6135 +x6135 = x6134 +x6134 = x6133 +x6133 = x6132 +x6132 = x6131 +x6131 = x6130 +x6130 = x6129 +x6129 = x6128 +x6128 = x6127 +x6127 = x6126 +x6126 = x6125 +x6125 = x6124 +x6124 = x6123 +x6123 = x6122 +x6122 = x6121 +x6121 = x6120 +x6120 = x6119 +x6119 = x6118 +x6118 = x6117 +x6117 = x6116 +x6116 = x6115 +x6115 = x6114 +x6114 = x6113 +x6113 = x6112 +x6112 = x6111 +x6111 = x6110 +x6110 = x6109 +x6109 = x6108 +x6108 = x6107 +x6107 = x6106 +x6106 = x6105 +x6105 = x6104 +x6104 = x6103 +x6103 = x6102 +x6102 = x6101 +x6101 = x6100 +x6100 = x6099 +x6099 = x6098 +x6098 = x6097 +x6097 = x6096 +x6096 = x6095 +x6095 = x6094 +x6094 = x6093 +x6093 = x6092 +x6092 = x6091 +x6091 = x6090 +x6090 = x6089 +x6089 = x6088 +x6088 = x6087 +x6087 = x6086 +x6086 = x6085 +x6085 = x6084 +x6084 = x6083 +x6083 = x6082 +x6082 = x6081 +x6081 = x6080 +x6080 = x6079 +x6079 = x6078 +x6078 = x6077 +x6077 = x6076 +x6076 = x6075 +x6075 = x6074 +x6074 = x6073 +x6073 = x6072 +x6072 = x6071 +x6071 = x6070 +x6070 = x6069 +x6069 = x6068 +x6068 = x6067 +x6067 = x6066 +x6066 = x6065 +x6065 = x6064 +x6064 = x6063 +x6063 = x6062 +x6062 = x6061 +x6061 = x6060 +x6060 = x6059 +x6059 = x6058 +x6058 = x6057 +x6057 = x6056 +x6056 = x6055 +x6055 = x6054 +x6054 = x6053 +x6053 = x6052 +x6052 = x6051 +x6051 = x6050 +x6050 = x6049 +x6049 = x6048 +x6048 = x6047 +x6047 = x6046 +x6046 = x6045 +x6045 = x6044 +x6044 = x6043 +x6043 = x6042 +x6042 = x6041 +x6041 = x6040 +x6040 = x6039 +x6039 = x6038 +x6038 = x6037 +x6037 = x6036 +x6036 = x6035 +x6035 = x6034 +x6034 = x6033 +x6033 = x6032 +x6032 = x6031 +x6031 = x6030 +x6030 = x6029 +x6029 = x6028 +x6028 = x6027 +x6027 = x6026 +x6026 = x6025 +x6025 = x6024 +x6024 = x6023 +x6023 = x6022 +x6022 = x6021 +x6021 = x6020 +x6020 = x6019 +x6019 = x6018 +x6018 = x6017 +x6017 = x6016 +x6016 = x6015 +x6015 = x6014 +x6014 = x6013 +x6013 = x6012 +x6012 = x6011 +x6011 = x6010 +x6010 = x6009 +x6009 = x6008 +x6008 = x6007 +x6007 = x6006 +x6006 = x6005 +x6005 = x6004 +x6004 = x6003 +x6003 = x6002 +x6002 = x6001 +x6001 = x6000 +x6000 = x5999 +x5999 = x5998 +x5998 = x5997 +x5997 = x5996 +x5996 = x5995 +x5995 = x5994 +x5994 = x5993 +x5993 = x5992 +x5992 = x5991 +x5991 = x5990 +x5990 = x5989 +x5989 = x5988 +x5988 = x5987 +x5987 = x5986 +x5986 = x5985 +x5985 = x5984 +x5984 = x5983 +x5983 = x5982 +x5982 = x5981 +x5981 = x5980 +x5980 = x5979 +x5979 = x5978 +x5978 = x5977 +x5977 = x5976 +x5976 = x5975 +x5975 = x5974 +x5974 = x5973 +x5973 = x5972 +x5972 = x5971 +x5971 = x5970 +x5970 = x5969 +x5969 = x5968 +x5968 = x5967 +x5967 = x5966 +x5966 = x5965 +x5965 = x5964 +x5964 = x5963 +x5963 = x5962 +x5962 = x5961 +x5961 = x5960 +x5960 = x5959 +x5959 = x5958 +x5958 = x5957 +x5957 = x5956 +x5956 = x5955 +x5955 = x5954 +x5954 = x5953 +x5953 = x5952 +x5952 = x5951 +x5951 = x5950 +x5950 = x5949 +x5949 = x5948 +x5948 = x5947 +x5947 = x5946 +x5946 = x5945 +x5945 = x5944 +x5944 = x5943 +x5943 = x5942 +x5942 = x5941 +x5941 = x5940 +x5940 = x5939 +x5939 = x5938 +x5938 = x5937 +x5937 = x5936 +x5936 = x5935 +x5935 = x5934 +x5934 = x5933 +x5933 = x5932 +x5932 = x5931 +x5931 = x5930 +x5930 = x5929 +x5929 = x5928 +x5928 = x5927 +x5927 = x5926 +x5926 = x5925 +x5925 = x5924 +x5924 = x5923 +x5923 = x5922 +x5922 = x5921 +x5921 = x5920 +x5920 = x5919 +x5919 = x5918 +x5918 = x5917 +x5917 = x5916 +x5916 = x5915 +x5915 = x5914 +x5914 = x5913 +x5913 = x5912 +x5912 = x5911 +x5911 = x5910 +x5910 = x5909 +x5909 = x5908 +x5908 = x5907 +x5907 = x5906 +x5906 = x5905 +x5905 = x5904 +x5904 = x5903 +x5903 = x5902 +x5902 = x5901 +x5901 = x5900 +x5900 = x5899 +x5899 = x5898 +x5898 = x5897 +x5897 = x5896 +x5896 = x5895 +x5895 = x5894 +x5894 = x5893 +x5893 = x5892 +x5892 = x5891 +x5891 = x5890 +x5890 = x5889 +x5889 = x5888 +x5888 = x5887 +x5887 = x5886 +x5886 = x5885 +x5885 = x5884 +x5884 = x5883 +x5883 = x5882 +x5882 = x5881 +x5881 = x5880 +x5880 = x5879 +x5879 = x5878 +x5878 = x5877 +x5877 = x5876 +x5876 = x5875 +x5875 = x5874 +x5874 = x5873 +x5873 = x5872 +x5872 = x5871 +x5871 = x5870 +x5870 = x5869 +x5869 = x5868 +x5868 = x5867 +x5867 = x5866 +x5866 = x5865 +x5865 = x5864 +x5864 = x5863 +x5863 = x5862 +x5862 = x5861 +x5861 = x5860 +x5860 = x5859 +x5859 = x5858 +x5858 = x5857 +x5857 = x5856 +x5856 = x5855 +x5855 = x5854 +x5854 = x5853 +x5853 = x5852 +x5852 = x5851 +x5851 = x5850 +x5850 = x5849 +x5849 = x5848 +x5848 = x5847 +x5847 = x5846 +x5846 = x5845 +x5845 = x5844 +x5844 = x5843 +x5843 = x5842 +x5842 = x5841 +x5841 = x5840 +x5840 = x5839 +x5839 = x5838 +x5838 = x5837 +x5837 = x5836 +x5836 = x5835 +x5835 = x5834 +x5834 = x5833 +x5833 = x5832 +x5832 = x5831 +x5831 = x5830 +x5830 = x5829 +x5829 = x5828 +x5828 = x5827 +x5827 = x5826 +x5826 = x5825 +x5825 = x5824 +x5824 = x5823 +x5823 = x5822 +x5822 = x5821 +x5821 = x5820 +x5820 = x5819 +x5819 = x5818 +x5818 = x5817 +x5817 = x5816 +x5816 = x5815 +x5815 = x5814 +x5814 = x5813 +x5813 = x5812 +x5812 = x5811 +x5811 = x5810 +x5810 = x5809 +x5809 = x5808 +x5808 = x5807 +x5807 = x5806 +x5806 = x5805 +x5805 = x5804 +x5804 = x5803 +x5803 = x5802 +x5802 = x5801 +x5801 = x5800 +x5800 = x5799 +x5799 = x5798 +x5798 = x5797 +x5797 = x5796 +x5796 = x5795 +x5795 = x5794 +x5794 = x5793 +x5793 = x5792 +x5792 = x5791 +x5791 = x5790 +x5790 = x5789 +x5789 = x5788 +x5788 = x5787 +x5787 = x5786 +x5786 = x5785 +x5785 = x5784 +x5784 = x5783 +x5783 = x5782 +x5782 = x5781 +x5781 = x5780 +x5780 = x5779 +x5779 = x5778 +x5778 = x5777 +x5777 = x5776 +x5776 = x5775 +x5775 = x5774 +x5774 = x5773 +x5773 = x5772 +x5772 = x5771 +x5771 = x5770 +x5770 = x5769 +x5769 = x5768 +x5768 = x5767 +x5767 = x5766 +x5766 = x5765 +x5765 = x5764 +x5764 = x5763 +x5763 = x5762 +x5762 = x5761 +x5761 = x5760 +x5760 = x5759 +x5759 = x5758 +x5758 = x5757 +x5757 = x5756 +x5756 = x5755 +x5755 = x5754 +x5754 = x5753 +x5753 = x5752 +x5752 = x5751 +x5751 = x5750 +x5750 = x5749 +x5749 = x5748 +x5748 = x5747 +x5747 = x5746 +x5746 = x5745 +x5745 = x5744 +x5744 = x5743 +x5743 = x5742 +x5742 = x5741 +x5741 = x5740 +x5740 = x5739 +x5739 = x5738 +x5738 = x5737 +x5737 = x5736 +x5736 = x5735 +x5735 = x5734 +x5734 = x5733 +x5733 = x5732 +x5732 = x5731 +x5731 = x5730 +x5730 = x5729 +x5729 = x5728 +x5728 = x5727 +x5727 = x5726 +x5726 = x5725 +x5725 = x5724 +x5724 = x5723 +x5723 = x5722 +x5722 = x5721 +x5721 = x5720 +x5720 = x5719 +x5719 = x5718 +x5718 = x5717 +x5717 = x5716 +x5716 = x5715 +x5715 = x5714 +x5714 = x5713 +x5713 = x5712 +x5712 = x5711 +x5711 = x5710 +x5710 = x5709 +x5709 = x5708 +x5708 = x5707 +x5707 = x5706 +x5706 = x5705 +x5705 = x5704 +x5704 = x5703 +x5703 = x5702 +x5702 = x5701 +x5701 = x5700 +x5700 = x5699 +x5699 = x5698 +x5698 = x5697 +x5697 = x5696 +x5696 = x5695 +x5695 = x5694 +x5694 = x5693 +x5693 = x5692 +x5692 = x5691 +x5691 = x5690 +x5690 = x5689 +x5689 = x5688 +x5688 = x5687 +x5687 = x5686 +x5686 = x5685 +x5685 = x5684 +x5684 = x5683 +x5683 = x5682 +x5682 = x5681 +x5681 = x5680 +x5680 = x5679 +x5679 = x5678 +x5678 = x5677 +x5677 = x5676 +x5676 = x5675 +x5675 = x5674 +x5674 = x5673 +x5673 = x5672 +x5672 = x5671 +x5671 = x5670 +x5670 = x5669 +x5669 = x5668 +x5668 = x5667 +x5667 = x5666 +x5666 = x5665 +x5665 = x5664 +x5664 = x5663 +x5663 = x5662 +x5662 = x5661 +x5661 = x5660 +x5660 = x5659 +x5659 = x5658 +x5658 = x5657 +x5657 = x5656 +x5656 = x5655 +x5655 = x5654 +x5654 = x5653 +x5653 = x5652 +x5652 = x5651 +x5651 = x5650 +x5650 = x5649 +x5649 = x5648 +x5648 = x5647 +x5647 = x5646 +x5646 = x5645 +x5645 = x5644 +x5644 = x5643 +x5643 = x5642 +x5642 = x5641 +x5641 = x5640 +x5640 = x5639 +x5639 = x5638 +x5638 = x5637 +x5637 = x5636 +x5636 = x5635 +x5635 = x5634 +x5634 = x5633 +x5633 = x5632 +x5632 = x5631 +x5631 = x5630 +x5630 = x5629 +x5629 = x5628 +x5628 = x5627 +x5627 = x5626 +x5626 = x5625 +x5625 = x5624 +x5624 = x5623 +x5623 = x5622 +x5622 = x5621 +x5621 = x5620 +x5620 = x5619 +x5619 = x5618 +x5618 = x5617 +x5617 = x5616 +x5616 = x5615 +x5615 = x5614 +x5614 = x5613 +x5613 = x5612 +x5612 = x5611 +x5611 = x5610 +x5610 = x5609 +x5609 = x5608 +x5608 = x5607 +x5607 = x5606 +x5606 = x5605 +x5605 = x5604 +x5604 = x5603 +x5603 = x5602 +x5602 = x5601 +x5601 = x5600 +x5600 = x5599 +x5599 = x5598 +x5598 = x5597 +x5597 = x5596 +x5596 = x5595 +x5595 = x5594 +x5594 = x5593 +x5593 = x5592 +x5592 = x5591 +x5591 = x5590 +x5590 = x5589 +x5589 = x5588 +x5588 = x5587 +x5587 = x5586 +x5586 = x5585 +x5585 = x5584 +x5584 = x5583 +x5583 = x5582 +x5582 = x5581 +x5581 = x5580 +x5580 = x5579 +x5579 = x5578 +x5578 = x5577 +x5577 = x5576 +x5576 = x5575 +x5575 = x5574 +x5574 = x5573 +x5573 = x5572 +x5572 = x5571 +x5571 = x5570 +x5570 = x5569 +x5569 = x5568 +x5568 = x5567 +x5567 = x5566 +x5566 = x5565 +x5565 = x5564 +x5564 = x5563 +x5563 = x5562 +x5562 = x5561 +x5561 = x5560 +x5560 = x5559 +x5559 = x5558 +x5558 = x5557 +x5557 = x5556 +x5556 = x5555 +x5555 = x5554 +x5554 = x5553 +x5553 = x5552 +x5552 = x5551 +x5551 = x5550 +x5550 = x5549 +x5549 = x5548 +x5548 = x5547 +x5547 = x5546 +x5546 = x5545 +x5545 = x5544 +x5544 = x5543 +x5543 = x5542 +x5542 = x5541 +x5541 = x5540 +x5540 = x5539 +x5539 = x5538 +x5538 = x5537 +x5537 = x5536 +x5536 = x5535 +x5535 = x5534 +x5534 = x5533 +x5533 = x5532 +x5532 = x5531 +x5531 = x5530 +x5530 = x5529 +x5529 = x5528 +x5528 = x5527 +x5527 = x5526 +x5526 = x5525 +x5525 = x5524 +x5524 = x5523 +x5523 = x5522 +x5522 = x5521 +x5521 = x5520 +x5520 = x5519 +x5519 = x5518 +x5518 = x5517 +x5517 = x5516 +x5516 = x5515 +x5515 = x5514 +x5514 = x5513 +x5513 = x5512 +x5512 = x5511 +x5511 = x5510 +x5510 = x5509 +x5509 = x5508 +x5508 = x5507 +x5507 = x5506 +x5506 = x5505 +x5505 = x5504 +x5504 = x5503 +x5503 = x5502 +x5502 = x5501 +x5501 = x5500 +x5500 = x5499 +x5499 = x5498 +x5498 = x5497 +x5497 = x5496 +x5496 = x5495 +x5495 = x5494 +x5494 = x5493 +x5493 = x5492 +x5492 = x5491 +x5491 = x5490 +x5490 = x5489 +x5489 = x5488 +x5488 = x5487 +x5487 = x5486 +x5486 = x5485 +x5485 = x5484 +x5484 = x5483 +x5483 = x5482 +x5482 = x5481 +x5481 = x5480 +x5480 = x5479 +x5479 = x5478 +x5478 = x5477 +x5477 = x5476 +x5476 = x5475 +x5475 = x5474 +x5474 = x5473 +x5473 = x5472 +x5472 = x5471 +x5471 = x5470 +x5470 = x5469 +x5469 = x5468 +x5468 = x5467 +x5467 = x5466 +x5466 = x5465 +x5465 = x5464 +x5464 = x5463 +x5463 = x5462 +x5462 = x5461 +x5461 = x5460 +x5460 = x5459 +x5459 = x5458 +x5458 = x5457 +x5457 = x5456 +x5456 = x5455 +x5455 = x5454 +x5454 = x5453 +x5453 = x5452 +x5452 = x5451 +x5451 = x5450 +x5450 = x5449 +x5449 = x5448 +x5448 = x5447 +x5447 = x5446 +x5446 = x5445 +x5445 = x5444 +x5444 = x5443 +x5443 = x5442 +x5442 = x5441 +x5441 = x5440 +x5440 = x5439 +x5439 = x5438 +x5438 = x5437 +x5437 = x5436 +x5436 = x5435 +x5435 = x5434 +x5434 = x5433 +x5433 = x5432 +x5432 = x5431 +x5431 = x5430 +x5430 = x5429 +x5429 = x5428 +x5428 = x5427 +x5427 = x5426 +x5426 = x5425 +x5425 = x5424 +x5424 = x5423 +x5423 = x5422 +x5422 = x5421 +x5421 = x5420 +x5420 = x5419 +x5419 = x5418 +x5418 = x5417 +x5417 = x5416 +x5416 = x5415 +x5415 = x5414 +x5414 = x5413 +x5413 = x5412 +x5412 = x5411 +x5411 = x5410 +x5410 = x5409 +x5409 = x5408 +x5408 = x5407 +x5407 = x5406 +x5406 = x5405 +x5405 = x5404 +x5404 = x5403 +x5403 = x5402 +x5402 = x5401 +x5401 = x5400 +x5400 = x5399 +x5399 = x5398 +x5398 = x5397 +x5397 = x5396 +x5396 = x5395 +x5395 = x5394 +x5394 = x5393 +x5393 = x5392 +x5392 = x5391 +x5391 = x5390 +x5390 = x5389 +x5389 = x5388 +x5388 = x5387 +x5387 = x5386 +x5386 = x5385 +x5385 = x5384 +x5384 = x5383 +x5383 = x5382 +x5382 = x5381 +x5381 = x5380 +x5380 = x5379 +x5379 = x5378 +x5378 = x5377 +x5377 = x5376 +x5376 = x5375 +x5375 = x5374 +x5374 = x5373 +x5373 = x5372 +x5372 = x5371 +x5371 = x5370 +x5370 = x5369 +x5369 = x5368 +x5368 = x5367 +x5367 = x5366 +x5366 = x5365 +x5365 = x5364 +x5364 = x5363 +x5363 = x5362 +x5362 = x5361 +x5361 = x5360 +x5360 = x5359 +x5359 = x5358 +x5358 = x5357 +x5357 = x5356 +x5356 = x5355 +x5355 = x5354 +x5354 = x5353 +x5353 = x5352 +x5352 = x5351 +x5351 = x5350 +x5350 = x5349 +x5349 = x5348 +x5348 = x5347 +x5347 = x5346 +x5346 = x5345 +x5345 = x5344 +x5344 = x5343 +x5343 = x5342 +x5342 = x5341 +x5341 = x5340 +x5340 = x5339 +x5339 = x5338 +x5338 = x5337 +x5337 = x5336 +x5336 = x5335 +x5335 = x5334 +x5334 = x5333 +x5333 = x5332 +x5332 = x5331 +x5331 = x5330 +x5330 = x5329 +x5329 = x5328 +x5328 = x5327 +x5327 = x5326 +x5326 = x5325 +x5325 = x5324 +x5324 = x5323 +x5323 = x5322 +x5322 = x5321 +x5321 = x5320 +x5320 = x5319 +x5319 = x5318 +x5318 = x5317 +x5317 = x5316 +x5316 = x5315 +x5315 = x5314 +x5314 = x5313 +x5313 = x5312 +x5312 = x5311 +x5311 = x5310 +x5310 = x5309 +x5309 = x5308 +x5308 = x5307 +x5307 = x5306 +x5306 = x5305 +x5305 = x5304 +x5304 = x5303 +x5303 = x5302 +x5302 = x5301 +x5301 = x5300 +x5300 = x5299 +x5299 = x5298 +x5298 = x5297 +x5297 = x5296 +x5296 = x5295 +x5295 = x5294 +x5294 = x5293 +x5293 = x5292 +x5292 = x5291 +x5291 = x5290 +x5290 = x5289 +x5289 = x5288 +x5288 = x5287 +x5287 = x5286 +x5286 = x5285 +x5285 = x5284 +x5284 = x5283 +x5283 = x5282 +x5282 = x5281 +x5281 = x5280 +x5280 = x5279 +x5279 = x5278 +x5278 = x5277 +x5277 = x5276 +x5276 = x5275 +x5275 = x5274 +x5274 = x5273 +x5273 = x5272 +x5272 = x5271 +x5271 = x5270 +x5270 = x5269 +x5269 = x5268 +x5268 = x5267 +x5267 = x5266 +x5266 = x5265 +x5265 = x5264 +x5264 = x5263 +x5263 = x5262 +x5262 = x5261 +x5261 = x5260 +x5260 = x5259 +x5259 = x5258 +x5258 = x5257 +x5257 = x5256 +x5256 = x5255 +x5255 = x5254 +x5254 = x5253 +x5253 = x5252 +x5252 = x5251 +x5251 = x5250 +x5250 = x5249 +x5249 = x5248 +x5248 = x5247 +x5247 = x5246 +x5246 = x5245 +x5245 = x5244 +x5244 = x5243 +x5243 = x5242 +x5242 = x5241 +x5241 = x5240 +x5240 = x5239 +x5239 = x5238 +x5238 = x5237 +x5237 = x5236 +x5236 = x5235 +x5235 = x5234 +x5234 = x5233 +x5233 = x5232 +x5232 = x5231 +x5231 = x5230 +x5230 = x5229 +x5229 = x5228 +x5228 = x5227 +x5227 = x5226 +x5226 = x5225 +x5225 = x5224 +x5224 = x5223 +x5223 = x5222 +x5222 = x5221 +x5221 = x5220 +x5220 = x5219 +x5219 = x5218 +x5218 = x5217 +x5217 = x5216 +x5216 = x5215 +x5215 = x5214 +x5214 = x5213 +x5213 = x5212 +x5212 = x5211 +x5211 = x5210 +x5210 = x5209 +x5209 = x5208 +x5208 = x5207 +x5207 = x5206 +x5206 = x5205 +x5205 = x5204 +x5204 = x5203 +x5203 = x5202 +x5202 = x5201 +x5201 = x5200 +x5200 = x5199 +x5199 = x5198 +x5198 = x5197 +x5197 = x5196 +x5196 = x5195 +x5195 = x5194 +x5194 = x5193 +x5193 = x5192 +x5192 = x5191 +x5191 = x5190 +x5190 = x5189 +x5189 = x5188 +x5188 = x5187 +x5187 = x5186 +x5186 = x5185 +x5185 = x5184 +x5184 = x5183 +x5183 = x5182 +x5182 = x5181 +x5181 = x5180 +x5180 = x5179 +x5179 = x5178 +x5178 = x5177 +x5177 = x5176 +x5176 = x5175 +x5175 = x5174 +x5174 = x5173 +x5173 = x5172 +x5172 = x5171 +x5171 = x5170 +x5170 = x5169 +x5169 = x5168 +x5168 = x5167 +x5167 = x5166 +x5166 = x5165 +x5165 = x5164 +x5164 = x5163 +x5163 = x5162 +x5162 = x5161 +x5161 = x5160 +x5160 = x5159 +x5159 = x5158 +x5158 = x5157 +x5157 = x5156 +x5156 = x5155 +x5155 = x5154 +x5154 = x5153 +x5153 = x5152 +x5152 = x5151 +x5151 = x5150 +x5150 = x5149 +x5149 = x5148 +x5148 = x5147 +x5147 = x5146 +x5146 = x5145 +x5145 = x5144 +x5144 = x5143 +x5143 = x5142 +x5142 = x5141 +x5141 = x5140 +x5140 = x5139 +x5139 = x5138 +x5138 = x5137 +x5137 = x5136 +x5136 = x5135 +x5135 = x5134 +x5134 = x5133 +x5133 = x5132 +x5132 = x5131 +x5131 = x5130 +x5130 = x5129 +x5129 = x5128 +x5128 = x5127 +x5127 = x5126 +x5126 = x5125 +x5125 = x5124 +x5124 = x5123 +x5123 = x5122 +x5122 = x5121 +x5121 = x5120 +x5120 = x5119 +x5119 = x5118 +x5118 = x5117 +x5117 = x5116 +x5116 = x5115 +x5115 = x5114 +x5114 = x5113 +x5113 = x5112 +x5112 = x5111 +x5111 = x5110 +x5110 = x5109 +x5109 = x5108 +x5108 = x5107 +x5107 = x5106 +x5106 = x5105 +x5105 = x5104 +x5104 = x5103 +x5103 = x5102 +x5102 = x5101 +x5101 = x5100 +x5100 = x5099 +x5099 = x5098 +x5098 = x5097 +x5097 = x5096 +x5096 = x5095 +x5095 = x5094 +x5094 = x5093 +x5093 = x5092 +x5092 = x5091 +x5091 = x5090 +x5090 = x5089 +x5089 = x5088 +x5088 = x5087 +x5087 = x5086 +x5086 = x5085 +x5085 = x5084 +x5084 = x5083 +x5083 = x5082 +x5082 = x5081 +x5081 = x5080 +x5080 = x5079 +x5079 = x5078 +x5078 = x5077 +x5077 = x5076 +x5076 = x5075 +x5075 = x5074 +x5074 = x5073 +x5073 = x5072 +x5072 = x5071 +x5071 = x5070 +x5070 = x5069 +x5069 = x5068 +x5068 = x5067 +x5067 = x5066 +x5066 = x5065 +x5065 = x5064 +x5064 = x5063 +x5063 = x5062 +x5062 = x5061 +x5061 = x5060 +x5060 = x5059 +x5059 = x5058 +x5058 = x5057 +x5057 = x5056 +x5056 = x5055 +x5055 = x5054 +x5054 = x5053 +x5053 = x5052 +x5052 = x5051 +x5051 = x5050 +x5050 = x5049 +x5049 = x5048 +x5048 = x5047 +x5047 = x5046 +x5046 = x5045 +x5045 = x5044 +x5044 = x5043 +x5043 = x5042 +x5042 = x5041 +x5041 = x5040 +x5040 = x5039 +x5039 = x5038 +x5038 = x5037 +x5037 = x5036 +x5036 = x5035 +x5035 = x5034 +x5034 = x5033 +x5033 = x5032 +x5032 = x5031 +x5031 = x5030 +x5030 = x5029 +x5029 = x5028 +x5028 = x5027 +x5027 = x5026 +x5026 = x5025 +x5025 = x5024 +x5024 = x5023 +x5023 = x5022 +x5022 = x5021 +x5021 = x5020 +x5020 = x5019 +x5019 = x5018 +x5018 = x5017 +x5017 = x5016 +x5016 = x5015 +x5015 = x5014 +x5014 = x5013 +x5013 = x5012 +x5012 = x5011 +x5011 = x5010 +x5010 = x5009 +x5009 = x5008 +x5008 = x5007 +x5007 = x5006 +x5006 = x5005 +x5005 = x5004 +x5004 = x5003 +x5003 = x5002 +x5002 = x5001 +x5001 = x5000 +x5000 = x4999 +x4999 = x4998 +x4998 = x4997 +x4997 = x4996 +x4996 = x4995 +x4995 = x4994 +x4994 = x4993 +x4993 = x4992 +x4992 = x4991 +x4991 = x4990 +x4990 = x4989 +x4989 = x4988 +x4988 = x4987 +x4987 = x4986 +x4986 = x4985 +x4985 = x4984 +x4984 = x4983 +x4983 = x4982 +x4982 = x4981 +x4981 = x4980 +x4980 = x4979 +x4979 = x4978 +x4978 = x4977 +x4977 = x4976 +x4976 = x4975 +x4975 = x4974 +x4974 = x4973 +x4973 = x4972 +x4972 = x4971 +x4971 = x4970 +x4970 = x4969 +x4969 = x4968 +x4968 = x4967 +x4967 = x4966 +x4966 = x4965 +x4965 = x4964 +x4964 = x4963 +x4963 = x4962 +x4962 = x4961 +x4961 = x4960 +x4960 = x4959 +x4959 = x4958 +x4958 = x4957 +x4957 = x4956 +x4956 = x4955 +x4955 = x4954 +x4954 = x4953 +x4953 = x4952 +x4952 = x4951 +x4951 = x4950 +x4950 = x4949 +x4949 = x4948 +x4948 = x4947 +x4947 = x4946 +x4946 = x4945 +x4945 = x4944 +x4944 = x4943 +x4943 = x4942 +x4942 = x4941 +x4941 = x4940 +x4940 = x4939 +x4939 = x4938 +x4938 = x4937 +x4937 = x4936 +x4936 = x4935 +x4935 = x4934 +x4934 = x4933 +x4933 = x4932 +x4932 = x4931 +x4931 = x4930 +x4930 = x4929 +x4929 = x4928 +x4928 = x4927 +x4927 = x4926 +x4926 = x4925 +x4925 = x4924 +x4924 = x4923 +x4923 = x4922 +x4922 = x4921 +x4921 = x4920 +x4920 = x4919 +x4919 = x4918 +x4918 = x4917 +x4917 = x4916 +x4916 = x4915 +x4915 = x4914 +x4914 = x4913 +x4913 = x4912 +x4912 = x4911 +x4911 = x4910 +x4910 = x4909 +x4909 = x4908 +x4908 = x4907 +x4907 = x4906 +x4906 = x4905 +x4905 = x4904 +x4904 = x4903 +x4903 = x4902 +x4902 = x4901 +x4901 = x4900 +x4900 = x4899 +x4899 = x4898 +x4898 = x4897 +x4897 = x4896 +x4896 = x4895 +x4895 = x4894 +x4894 = x4893 +x4893 = x4892 +x4892 = x4891 +x4891 = x4890 +x4890 = x4889 +x4889 = x4888 +x4888 = x4887 +x4887 = x4886 +x4886 = x4885 +x4885 = x4884 +x4884 = x4883 +x4883 = x4882 +x4882 = x4881 +x4881 = x4880 +x4880 = x4879 +x4879 = x4878 +x4878 = x4877 +x4877 = x4876 +x4876 = x4875 +x4875 = x4874 +x4874 = x4873 +x4873 = x4872 +x4872 = x4871 +x4871 = x4870 +x4870 = x4869 +x4869 = x4868 +x4868 = x4867 +x4867 = x4866 +x4866 = x4865 +x4865 = x4864 +x4864 = x4863 +x4863 = x4862 +x4862 = x4861 +x4861 = x4860 +x4860 = x4859 +x4859 = x4858 +x4858 = x4857 +x4857 = x4856 +x4856 = x4855 +x4855 = x4854 +x4854 = x4853 +x4853 = x4852 +x4852 = x4851 +x4851 = x4850 +x4850 = x4849 +x4849 = x4848 +x4848 = x4847 +x4847 = x4846 +x4846 = x4845 +x4845 = x4844 +x4844 = x4843 +x4843 = x4842 +x4842 = x4841 +x4841 = x4840 +x4840 = x4839 +x4839 = x4838 +x4838 = x4837 +x4837 = x4836 +x4836 = x4835 +x4835 = x4834 +x4834 = x4833 +x4833 = x4832 +x4832 = x4831 +x4831 = x4830 +x4830 = x4829 +x4829 = x4828 +x4828 = x4827 +x4827 = x4826 +x4826 = x4825 +x4825 = x4824 +x4824 = x4823 +x4823 = x4822 +x4822 = x4821 +x4821 = x4820 +x4820 = x4819 +x4819 = x4818 +x4818 = x4817 +x4817 = x4816 +x4816 = x4815 +x4815 = x4814 +x4814 = x4813 +x4813 = x4812 +x4812 = x4811 +x4811 = x4810 +x4810 = x4809 +x4809 = x4808 +x4808 = x4807 +x4807 = x4806 +x4806 = x4805 +x4805 = x4804 +x4804 = x4803 +x4803 = x4802 +x4802 = x4801 +x4801 = x4800 +x4800 = x4799 +x4799 = x4798 +x4798 = x4797 +x4797 = x4796 +x4796 = x4795 +x4795 = x4794 +x4794 = x4793 +x4793 = x4792 +x4792 = x4791 +x4791 = x4790 +x4790 = x4789 +x4789 = x4788 +x4788 = x4787 +x4787 = x4786 +x4786 = x4785 +x4785 = x4784 +x4784 = x4783 +x4783 = x4782 +x4782 = x4781 +x4781 = x4780 +x4780 = x4779 +x4779 = x4778 +x4778 = x4777 +x4777 = x4776 +x4776 = x4775 +x4775 = x4774 +x4774 = x4773 +x4773 = x4772 +x4772 = x4771 +x4771 = x4770 +x4770 = x4769 +x4769 = x4768 +x4768 = x4767 +x4767 = x4766 +x4766 = x4765 +x4765 = x4764 +x4764 = x4763 +x4763 = x4762 +x4762 = x4761 +x4761 = x4760 +x4760 = x4759 +x4759 = x4758 +x4758 = x4757 +x4757 = x4756 +x4756 = x4755 +x4755 = x4754 +x4754 = x4753 +x4753 = x4752 +x4752 = x4751 +x4751 = x4750 +x4750 = x4749 +x4749 = x4748 +x4748 = x4747 +x4747 = x4746 +x4746 = x4745 +x4745 = x4744 +x4744 = x4743 +x4743 = x4742 +x4742 = x4741 +x4741 = x4740 +x4740 = x4739 +x4739 = x4738 +x4738 = x4737 +x4737 = x4736 +x4736 = x4735 +x4735 = x4734 +x4734 = x4733 +x4733 = x4732 +x4732 = x4731 +x4731 = x4730 +x4730 = x4729 +x4729 = x4728 +x4728 = x4727 +x4727 = x4726 +x4726 = x4725 +x4725 = x4724 +x4724 = x4723 +x4723 = x4722 +x4722 = x4721 +x4721 = x4720 +x4720 = x4719 +x4719 = x4718 +x4718 = x4717 +x4717 = x4716 +x4716 = x4715 +x4715 = x4714 +x4714 = x4713 +x4713 = x4712 +x4712 = x4711 +x4711 = x4710 +x4710 = x4709 +x4709 = x4708 +x4708 = x4707 +x4707 = x4706 +x4706 = x4705 +x4705 = x4704 +x4704 = x4703 +x4703 = x4702 +x4702 = x4701 +x4701 = x4700 +x4700 = x4699 +x4699 = x4698 +x4698 = x4697 +x4697 = x4696 +x4696 = x4695 +x4695 = x4694 +x4694 = x4693 +x4693 = x4692 +x4692 = x4691 +x4691 = x4690 +x4690 = x4689 +x4689 = x4688 +x4688 = x4687 +x4687 = x4686 +x4686 = x4685 +x4685 = x4684 +x4684 = x4683 +x4683 = x4682 +x4682 = x4681 +x4681 = x4680 +x4680 = x4679 +x4679 = x4678 +x4678 = x4677 +x4677 = x4676 +x4676 = x4675 +x4675 = x4674 +x4674 = x4673 +x4673 = x4672 +x4672 = x4671 +x4671 = x4670 +x4670 = x4669 +x4669 = x4668 +x4668 = x4667 +x4667 = x4666 +x4666 = x4665 +x4665 = x4664 +x4664 = x4663 +x4663 = x4662 +x4662 = x4661 +x4661 = x4660 +x4660 = x4659 +x4659 = x4658 +x4658 = x4657 +x4657 = x4656 +x4656 = x4655 +x4655 = x4654 +x4654 = x4653 +x4653 = x4652 +x4652 = x4651 +x4651 = x4650 +x4650 = x4649 +x4649 = x4648 +x4648 = x4647 +x4647 = x4646 +x4646 = x4645 +x4645 = x4644 +x4644 = x4643 +x4643 = x4642 +x4642 = x4641 +x4641 = x4640 +x4640 = x4639 +x4639 = x4638 +x4638 = x4637 +x4637 = x4636 +x4636 = x4635 +x4635 = x4634 +x4634 = x4633 +x4633 = x4632 +x4632 = x4631 +x4631 = x4630 +x4630 = x4629 +x4629 = x4628 +x4628 = x4627 +x4627 = x4626 +x4626 = x4625 +x4625 = x4624 +x4624 = x4623 +x4623 = x4622 +x4622 = x4621 +x4621 = x4620 +x4620 = x4619 +x4619 = x4618 +x4618 = x4617 +x4617 = x4616 +x4616 = x4615 +x4615 = x4614 +x4614 = x4613 +x4613 = x4612 +x4612 = x4611 +x4611 = x4610 +x4610 = x4609 +x4609 = x4608 +x4608 = x4607 +x4607 = x4606 +x4606 = x4605 +x4605 = x4604 +x4604 = x4603 +x4603 = x4602 +x4602 = x4601 +x4601 = x4600 +x4600 = x4599 +x4599 = x4598 +x4598 = x4597 +x4597 = x4596 +x4596 = x4595 +x4595 = x4594 +x4594 = x4593 +x4593 = x4592 +x4592 = x4591 +x4591 = x4590 +x4590 = x4589 +x4589 = x4588 +x4588 = x4587 +x4587 = x4586 +x4586 = x4585 +x4585 = x4584 +x4584 = x4583 +x4583 = x4582 +x4582 = x4581 +x4581 = x4580 +x4580 = x4579 +x4579 = x4578 +x4578 = x4577 +x4577 = x4576 +x4576 = x4575 +x4575 = x4574 +x4574 = x4573 +x4573 = x4572 +x4572 = x4571 +x4571 = x4570 +x4570 = x4569 +x4569 = x4568 +x4568 = x4567 +x4567 = x4566 +x4566 = x4565 +x4565 = x4564 +x4564 = x4563 +x4563 = x4562 +x4562 = x4561 +x4561 = x4560 +x4560 = x4559 +x4559 = x4558 +x4558 = x4557 +x4557 = x4556 +x4556 = x4555 +x4555 = x4554 +x4554 = x4553 +x4553 = x4552 +x4552 = x4551 +x4551 = x4550 +x4550 = x4549 +x4549 = x4548 +x4548 = x4547 +x4547 = x4546 +x4546 = x4545 +x4545 = x4544 +x4544 = x4543 +x4543 = x4542 +x4542 = x4541 +x4541 = x4540 +x4540 = x4539 +x4539 = x4538 +x4538 = x4537 +x4537 = x4536 +x4536 = x4535 +x4535 = x4534 +x4534 = x4533 +x4533 = x4532 +x4532 = x4531 +x4531 = x4530 +x4530 = x4529 +x4529 = x4528 +x4528 = x4527 +x4527 = x4526 +x4526 = x4525 +x4525 = x4524 +x4524 = x4523 +x4523 = x4522 +x4522 = x4521 +x4521 = x4520 +x4520 = x4519 +x4519 = x4518 +x4518 = x4517 +x4517 = x4516 +x4516 = x4515 +x4515 = x4514 +x4514 = x4513 +x4513 = x4512 +x4512 = x4511 +x4511 = x4510 +x4510 = x4509 +x4509 = x4508 +x4508 = x4507 +x4507 = x4506 +x4506 = x4505 +x4505 = x4504 +x4504 = x4503 +x4503 = x4502 +x4502 = x4501 +x4501 = x4500 +x4500 = x4499 +x4499 = x4498 +x4498 = x4497 +x4497 = x4496 +x4496 = x4495 +x4495 = x4494 +x4494 = x4493 +x4493 = x4492 +x4492 = x4491 +x4491 = x4490 +x4490 = x4489 +x4489 = x4488 +x4488 = x4487 +x4487 = x4486 +x4486 = x4485 +x4485 = x4484 +x4484 = x4483 +x4483 = x4482 +x4482 = x4481 +x4481 = x4480 +x4480 = x4479 +x4479 = x4478 +x4478 = x4477 +x4477 = x4476 +x4476 = x4475 +x4475 = x4474 +x4474 = x4473 +x4473 = x4472 +x4472 = x4471 +x4471 = x4470 +x4470 = x4469 +x4469 = x4468 +x4468 = x4467 +x4467 = x4466 +x4466 = x4465 +x4465 = x4464 +x4464 = x4463 +x4463 = x4462 +x4462 = x4461 +x4461 = x4460 +x4460 = x4459 +x4459 = x4458 +x4458 = x4457 +x4457 = x4456 +x4456 = x4455 +x4455 = x4454 +x4454 = x4453 +x4453 = x4452 +x4452 = x4451 +x4451 = x4450 +x4450 = x4449 +x4449 = x4448 +x4448 = x4447 +x4447 = x4446 +x4446 = x4445 +x4445 = x4444 +x4444 = x4443 +x4443 = x4442 +x4442 = x4441 +x4441 = x4440 +x4440 = x4439 +x4439 = x4438 +x4438 = x4437 +x4437 = x4436 +x4436 = x4435 +x4435 = x4434 +x4434 = x4433 +x4433 = x4432 +x4432 = x4431 +x4431 = x4430 +x4430 = x4429 +x4429 = x4428 +x4428 = x4427 +x4427 = x4426 +x4426 = x4425 +x4425 = x4424 +x4424 = x4423 +x4423 = x4422 +x4422 = x4421 +x4421 = x4420 +x4420 = x4419 +x4419 = x4418 +x4418 = x4417 +x4417 = x4416 +x4416 = x4415 +x4415 = x4414 +x4414 = x4413 +x4413 = x4412 +x4412 = x4411 +x4411 = x4410 +x4410 = x4409 +x4409 = x4408 +x4408 = x4407 +x4407 = x4406 +x4406 = x4405 +x4405 = x4404 +x4404 = x4403 +x4403 = x4402 +x4402 = x4401 +x4401 = x4400 +x4400 = x4399 +x4399 = x4398 +x4398 = x4397 +x4397 = x4396 +x4396 = x4395 +x4395 = x4394 +x4394 = x4393 +x4393 = x4392 +x4392 = x4391 +x4391 = x4390 +x4390 = x4389 +x4389 = x4388 +x4388 = x4387 +x4387 = x4386 +x4386 = x4385 +x4385 = x4384 +x4384 = x4383 +x4383 = x4382 +x4382 = x4381 +x4381 = x4380 +x4380 = x4379 +x4379 = x4378 +x4378 = x4377 +x4377 = x4376 +x4376 = x4375 +x4375 = x4374 +x4374 = x4373 +x4373 = x4372 +x4372 = x4371 +x4371 = x4370 +x4370 = x4369 +x4369 = x4368 +x4368 = x4367 +x4367 = x4366 +x4366 = x4365 +x4365 = x4364 +x4364 = x4363 +x4363 = x4362 +x4362 = x4361 +x4361 = x4360 +x4360 = x4359 +x4359 = x4358 +x4358 = x4357 +x4357 = x4356 +x4356 = x4355 +x4355 = x4354 +x4354 = x4353 +x4353 = x4352 +x4352 = x4351 +x4351 = x4350 +x4350 = x4349 +x4349 = x4348 +x4348 = x4347 +x4347 = x4346 +x4346 = x4345 +x4345 = x4344 +x4344 = x4343 +x4343 = x4342 +x4342 = x4341 +x4341 = x4340 +x4340 = x4339 +x4339 = x4338 +x4338 = x4337 +x4337 = x4336 +x4336 = x4335 +x4335 = x4334 +x4334 = x4333 +x4333 = x4332 +x4332 = x4331 +x4331 = x4330 +x4330 = x4329 +x4329 = x4328 +x4328 = x4327 +x4327 = x4326 +x4326 = x4325 +x4325 = x4324 +x4324 = x4323 +x4323 = x4322 +x4322 = x4321 +x4321 = x4320 +x4320 = x4319 +x4319 = x4318 +x4318 = x4317 +x4317 = x4316 +x4316 = x4315 +x4315 = x4314 +x4314 = x4313 +x4313 = x4312 +x4312 = x4311 +x4311 = x4310 +x4310 = x4309 +x4309 = x4308 +x4308 = x4307 +x4307 = x4306 +x4306 = x4305 +x4305 = x4304 +x4304 = x4303 +x4303 = x4302 +x4302 = x4301 +x4301 = x4300 +x4300 = x4299 +x4299 = x4298 +x4298 = x4297 +x4297 = x4296 +x4296 = x4295 +x4295 = x4294 +x4294 = x4293 +x4293 = x4292 +x4292 = x4291 +x4291 = x4290 +x4290 = x4289 +x4289 = x4288 +x4288 = x4287 +x4287 = x4286 +x4286 = x4285 +x4285 = x4284 +x4284 = x4283 +x4283 = x4282 +x4282 = x4281 +x4281 = x4280 +x4280 = x4279 +x4279 = x4278 +x4278 = x4277 +x4277 = x4276 +x4276 = x4275 +x4275 = x4274 +x4274 = x4273 +x4273 = x4272 +x4272 = x4271 +x4271 = x4270 +x4270 = x4269 +x4269 = x4268 +x4268 = x4267 +x4267 = x4266 +x4266 = x4265 +x4265 = x4264 +x4264 = x4263 +x4263 = x4262 +x4262 = x4261 +x4261 = x4260 +x4260 = x4259 +x4259 = x4258 +x4258 = x4257 +x4257 = x4256 +x4256 = x4255 +x4255 = x4254 +x4254 = x4253 +x4253 = x4252 +x4252 = x4251 +x4251 = x4250 +x4250 = x4249 +x4249 = x4248 +x4248 = x4247 +x4247 = x4246 +x4246 = x4245 +x4245 = x4244 +x4244 = x4243 +x4243 = x4242 +x4242 = x4241 +x4241 = x4240 +x4240 = x4239 +x4239 = x4238 +x4238 = x4237 +x4237 = x4236 +x4236 = x4235 +x4235 = x4234 +x4234 = x4233 +x4233 = x4232 +x4232 = x4231 +x4231 = x4230 +x4230 = x4229 +x4229 = x4228 +x4228 = x4227 +x4227 = x4226 +x4226 = x4225 +x4225 = x4224 +x4224 = x4223 +x4223 = x4222 +x4222 = x4221 +x4221 = x4220 +x4220 = x4219 +x4219 = x4218 +x4218 = x4217 +x4217 = x4216 +x4216 = x4215 +x4215 = x4214 +x4214 = x4213 +x4213 = x4212 +x4212 = x4211 +x4211 = x4210 +x4210 = x4209 +x4209 = x4208 +x4208 = x4207 +x4207 = x4206 +x4206 = x4205 +x4205 = x4204 +x4204 = x4203 +x4203 = x4202 +x4202 = x4201 +x4201 = x4200 +x4200 = x4199 +x4199 = x4198 +x4198 = x4197 +x4197 = x4196 +x4196 = x4195 +x4195 = x4194 +x4194 = x4193 +x4193 = x4192 +x4192 = x4191 +x4191 = x4190 +x4190 = x4189 +x4189 = x4188 +x4188 = x4187 +x4187 = x4186 +x4186 = x4185 +x4185 = x4184 +x4184 = x4183 +x4183 = x4182 +x4182 = x4181 +x4181 = x4180 +x4180 = x4179 +x4179 = x4178 +x4178 = x4177 +x4177 = x4176 +x4176 = x4175 +x4175 = x4174 +x4174 = x4173 +x4173 = x4172 +x4172 = x4171 +x4171 = x4170 +x4170 = x4169 +x4169 = x4168 +x4168 = x4167 +x4167 = x4166 +x4166 = x4165 +x4165 = x4164 +x4164 = x4163 +x4163 = x4162 +x4162 = x4161 +x4161 = x4160 +x4160 = x4159 +x4159 = x4158 +x4158 = x4157 +x4157 = x4156 +x4156 = x4155 +x4155 = x4154 +x4154 = x4153 +x4153 = x4152 +x4152 = x4151 +x4151 = x4150 +x4150 = x4149 +x4149 = x4148 +x4148 = x4147 +x4147 = x4146 +x4146 = x4145 +x4145 = x4144 +x4144 = x4143 +x4143 = x4142 +x4142 = x4141 +x4141 = x4140 +x4140 = x4139 +x4139 = x4138 +x4138 = x4137 +x4137 = x4136 +x4136 = x4135 +x4135 = x4134 +x4134 = x4133 +x4133 = x4132 +x4132 = x4131 +x4131 = x4130 +x4130 = x4129 +x4129 = x4128 +x4128 = x4127 +x4127 = x4126 +x4126 = x4125 +x4125 = x4124 +x4124 = x4123 +x4123 = x4122 +x4122 = x4121 +x4121 = x4120 +x4120 = x4119 +x4119 = x4118 +x4118 = x4117 +x4117 = x4116 +x4116 = x4115 +x4115 = x4114 +x4114 = x4113 +x4113 = x4112 +x4112 = x4111 +x4111 = x4110 +x4110 = x4109 +x4109 = x4108 +x4108 = x4107 +x4107 = x4106 +x4106 = x4105 +x4105 = x4104 +x4104 = x4103 +x4103 = x4102 +x4102 = x4101 +x4101 = x4100 +x4100 = x4099 +x4099 = x4098 +x4098 = x4097 +x4097 = x4096 +x4096 = x4095 +x4095 = x4094 +x4094 = x4093 +x4093 = x4092 +x4092 = x4091 +x4091 = x4090 +x4090 = x4089 +x4089 = x4088 +x4088 = x4087 +x4087 = x4086 +x4086 = x4085 +x4085 = x4084 +x4084 = x4083 +x4083 = x4082 +x4082 = x4081 +x4081 = x4080 +x4080 = x4079 +x4079 = x4078 +x4078 = x4077 +x4077 = x4076 +x4076 = x4075 +x4075 = x4074 +x4074 = x4073 +x4073 = x4072 +x4072 = x4071 +x4071 = x4070 +x4070 = x4069 +x4069 = x4068 +x4068 = x4067 +x4067 = x4066 +x4066 = x4065 +x4065 = x4064 +x4064 = x4063 +x4063 = x4062 +x4062 = x4061 +x4061 = x4060 +x4060 = x4059 +x4059 = x4058 +x4058 = x4057 +x4057 = x4056 +x4056 = x4055 +x4055 = x4054 +x4054 = x4053 +x4053 = x4052 +x4052 = x4051 +x4051 = x4050 +x4050 = x4049 +x4049 = x4048 +x4048 = x4047 +x4047 = x4046 +x4046 = x4045 +x4045 = x4044 +x4044 = x4043 +x4043 = x4042 +x4042 = x4041 +x4041 = x4040 +x4040 = x4039 +x4039 = x4038 +x4038 = x4037 +x4037 = x4036 +x4036 = x4035 +x4035 = x4034 +x4034 = x4033 +x4033 = x4032 +x4032 = x4031 +x4031 = x4030 +x4030 = x4029 +x4029 = x4028 +x4028 = x4027 +x4027 = x4026 +x4026 = x4025 +x4025 = x4024 +x4024 = x4023 +x4023 = x4022 +x4022 = x4021 +x4021 = x4020 +x4020 = x4019 +x4019 = x4018 +x4018 = x4017 +x4017 = x4016 +x4016 = x4015 +x4015 = x4014 +x4014 = x4013 +x4013 = x4012 +x4012 = x4011 +x4011 = x4010 +x4010 = x4009 +x4009 = x4008 +x4008 = x4007 +x4007 = x4006 +x4006 = x4005 +x4005 = x4004 +x4004 = x4003 +x4003 = x4002 +x4002 = x4001 +x4001 = x4000 +x4000 = x3999 +x3999 = x3998 +x3998 = x3997 +x3997 = x3996 +x3996 = x3995 +x3995 = x3994 +x3994 = x3993 +x3993 = x3992 +x3992 = x3991 +x3991 = x3990 +x3990 = x3989 +x3989 = x3988 +x3988 = x3987 +x3987 = x3986 +x3986 = x3985 +x3985 = x3984 +x3984 = x3983 +x3983 = x3982 +x3982 = x3981 +x3981 = x3980 +x3980 = x3979 +x3979 = x3978 +x3978 = x3977 +x3977 = x3976 +x3976 = x3975 +x3975 = x3974 +x3974 = x3973 +x3973 = x3972 +x3972 = x3971 +x3971 = x3970 +x3970 = x3969 +x3969 = x3968 +x3968 = x3967 +x3967 = x3966 +x3966 = x3965 +x3965 = x3964 +x3964 = x3963 +x3963 = x3962 +x3962 = x3961 +x3961 = x3960 +x3960 = x3959 +x3959 = x3958 +x3958 = x3957 +x3957 = x3956 +x3956 = x3955 +x3955 = x3954 +x3954 = x3953 +x3953 = x3952 +x3952 = x3951 +x3951 = x3950 +x3950 = x3949 +x3949 = x3948 +x3948 = x3947 +x3947 = x3946 +x3946 = x3945 +x3945 = x3944 +x3944 = x3943 +x3943 = x3942 +x3942 = x3941 +x3941 = x3940 +x3940 = x3939 +x3939 = x3938 +x3938 = x3937 +x3937 = x3936 +x3936 = x3935 +x3935 = x3934 +x3934 = x3933 +x3933 = x3932 +x3932 = x3931 +x3931 = x3930 +x3930 = x3929 +x3929 = x3928 +x3928 = x3927 +x3927 = x3926 +x3926 = x3925 +x3925 = x3924 +x3924 = x3923 +x3923 = x3922 +x3922 = x3921 +x3921 = x3920 +x3920 = x3919 +x3919 = x3918 +x3918 = x3917 +x3917 = x3916 +x3916 = x3915 +x3915 = x3914 +x3914 = x3913 +x3913 = x3912 +x3912 = x3911 +x3911 = x3910 +x3910 = x3909 +x3909 = x3908 +x3908 = x3907 +x3907 = x3906 +x3906 = x3905 +x3905 = x3904 +x3904 = x3903 +x3903 = x3902 +x3902 = x3901 +x3901 = x3900 +x3900 = x3899 +x3899 = x3898 +x3898 = x3897 +x3897 = x3896 +x3896 = x3895 +x3895 = x3894 +x3894 = x3893 +x3893 = x3892 +x3892 = x3891 +x3891 = x3890 +x3890 = x3889 +x3889 = x3888 +x3888 = x3887 +x3887 = x3886 +x3886 = x3885 +x3885 = x3884 +x3884 = x3883 +x3883 = x3882 +x3882 = x3881 +x3881 = x3880 +x3880 = x3879 +x3879 = x3878 +x3878 = x3877 +x3877 = x3876 +x3876 = x3875 +x3875 = x3874 +x3874 = x3873 +x3873 = x3872 +x3872 = x3871 +x3871 = x3870 +x3870 = x3869 +x3869 = x3868 +x3868 = x3867 +x3867 = x3866 +x3866 = x3865 +x3865 = x3864 +x3864 = x3863 +x3863 = x3862 +x3862 = x3861 +x3861 = x3860 +x3860 = x3859 +x3859 = x3858 +x3858 = x3857 +x3857 = x3856 +x3856 = x3855 +x3855 = x3854 +x3854 = x3853 +x3853 = x3852 +x3852 = x3851 +x3851 = x3850 +x3850 = x3849 +x3849 = x3848 +x3848 = x3847 +x3847 = x3846 +x3846 = x3845 +x3845 = x3844 +x3844 = x3843 +x3843 = x3842 +x3842 = x3841 +x3841 = x3840 +x3840 = x3839 +x3839 = x3838 +x3838 = x3837 +x3837 = x3836 +x3836 = x3835 +x3835 = x3834 +x3834 = x3833 +x3833 = x3832 +x3832 = x3831 +x3831 = x3830 +x3830 = x3829 +x3829 = x3828 +x3828 = x3827 +x3827 = x3826 +x3826 = x3825 +x3825 = x3824 +x3824 = x3823 +x3823 = x3822 +x3822 = x3821 +x3821 = x3820 +x3820 = x3819 +x3819 = x3818 +x3818 = x3817 +x3817 = x3816 +x3816 = x3815 +x3815 = x3814 +x3814 = x3813 +x3813 = x3812 +x3812 = x3811 +x3811 = x3810 +x3810 = x3809 +x3809 = x3808 +x3808 = x3807 +x3807 = x3806 +x3806 = x3805 +x3805 = x3804 +x3804 = x3803 +x3803 = x3802 +x3802 = x3801 +x3801 = x3800 +x3800 = x3799 +x3799 = x3798 +x3798 = x3797 +x3797 = x3796 +x3796 = x3795 +x3795 = x3794 +x3794 = x3793 +x3793 = x3792 +x3792 = x3791 +x3791 = x3790 +x3790 = x3789 +x3789 = x3788 +x3788 = x3787 +x3787 = x3786 +x3786 = x3785 +x3785 = x3784 +x3784 = x3783 +x3783 = x3782 +x3782 = x3781 +x3781 = x3780 +x3780 = x3779 +x3779 = x3778 +x3778 = x3777 +x3777 = x3776 +x3776 = x3775 +x3775 = x3774 +x3774 = x3773 +x3773 = x3772 +x3772 = x3771 +x3771 = x3770 +x3770 = x3769 +x3769 = x3768 +x3768 = x3767 +x3767 = x3766 +x3766 = x3765 +x3765 = x3764 +x3764 = x3763 +x3763 = x3762 +x3762 = x3761 +x3761 = x3760 +x3760 = x3759 +x3759 = x3758 +x3758 = x3757 +x3757 = x3756 +x3756 = x3755 +x3755 = x3754 +x3754 = x3753 +x3753 = x3752 +x3752 = x3751 +x3751 = x3750 +x3750 = x3749 +x3749 = x3748 +x3748 = x3747 +x3747 = x3746 +x3746 = x3745 +x3745 = x3744 +x3744 = x3743 +x3743 = x3742 +x3742 = x3741 +x3741 = x3740 +x3740 = x3739 +x3739 = x3738 +x3738 = x3737 +x3737 = x3736 +x3736 = x3735 +x3735 = x3734 +x3734 = x3733 +x3733 = x3732 +x3732 = x3731 +x3731 = x3730 +x3730 = x3729 +x3729 = x3728 +x3728 = x3727 +x3727 = x3726 +x3726 = x3725 +x3725 = x3724 +x3724 = x3723 +x3723 = x3722 +x3722 = x3721 +x3721 = x3720 +x3720 = x3719 +x3719 = x3718 +x3718 = x3717 +x3717 = x3716 +x3716 = x3715 +x3715 = x3714 +x3714 = x3713 +x3713 = x3712 +x3712 = x3711 +x3711 = x3710 +x3710 = x3709 +x3709 = x3708 +x3708 = x3707 +x3707 = x3706 +x3706 = x3705 +x3705 = x3704 +x3704 = x3703 +x3703 = x3702 +x3702 = x3701 +x3701 = x3700 +x3700 = x3699 +x3699 = x3698 +x3698 = x3697 +x3697 = x3696 +x3696 = x3695 +x3695 = x3694 +x3694 = x3693 +x3693 = x3692 +x3692 = x3691 +x3691 = x3690 +x3690 = x3689 +x3689 = x3688 +x3688 = x3687 +x3687 = x3686 +x3686 = x3685 +x3685 = x3684 +x3684 = x3683 +x3683 = x3682 +x3682 = x3681 +x3681 = x3680 +x3680 = x3679 +x3679 = x3678 +x3678 = x3677 +x3677 = x3676 +x3676 = x3675 +x3675 = x3674 +x3674 = x3673 +x3673 = x3672 +x3672 = x3671 +x3671 = x3670 +x3670 = x3669 +x3669 = x3668 +x3668 = x3667 +x3667 = x3666 +x3666 = x3665 +x3665 = x3664 +x3664 = x3663 +x3663 = x3662 +x3662 = x3661 +x3661 = x3660 +x3660 = x3659 +x3659 = x3658 +x3658 = x3657 +x3657 = x3656 +x3656 = x3655 +x3655 = x3654 +x3654 = x3653 +x3653 = x3652 +x3652 = x3651 +x3651 = x3650 +x3650 = x3649 +x3649 = x3648 +x3648 = x3647 +x3647 = x3646 +x3646 = x3645 +x3645 = x3644 +x3644 = x3643 +x3643 = x3642 +x3642 = x3641 +x3641 = x3640 +x3640 = x3639 +x3639 = x3638 +x3638 = x3637 +x3637 = x3636 +x3636 = x3635 +x3635 = x3634 +x3634 = x3633 +x3633 = x3632 +x3632 = x3631 +x3631 = x3630 +x3630 = x3629 +x3629 = x3628 +x3628 = x3627 +x3627 = x3626 +x3626 = x3625 +x3625 = x3624 +x3624 = x3623 +x3623 = x3622 +x3622 = x3621 +x3621 = x3620 +x3620 = x3619 +x3619 = x3618 +x3618 = x3617 +x3617 = x3616 +x3616 = x3615 +x3615 = x3614 +x3614 = x3613 +x3613 = x3612 +x3612 = x3611 +x3611 = x3610 +x3610 = x3609 +x3609 = x3608 +x3608 = x3607 +x3607 = x3606 +x3606 = x3605 +x3605 = x3604 +x3604 = x3603 +x3603 = x3602 +x3602 = x3601 +x3601 = x3600 +x3600 = x3599 +x3599 = x3598 +x3598 = x3597 +x3597 = x3596 +x3596 = x3595 +x3595 = x3594 +x3594 = x3593 +x3593 = x3592 +x3592 = x3591 +x3591 = x3590 +x3590 = x3589 +x3589 = x3588 +x3588 = x3587 +x3587 = x3586 +x3586 = x3585 +x3585 = x3584 +x3584 = x3583 +x3583 = x3582 +x3582 = x3581 +x3581 = x3580 +x3580 = x3579 +x3579 = x3578 +x3578 = x3577 +x3577 = x3576 +x3576 = x3575 +x3575 = x3574 +x3574 = x3573 +x3573 = x3572 +x3572 = x3571 +x3571 = x3570 +x3570 = x3569 +x3569 = x3568 +x3568 = x3567 +x3567 = x3566 +x3566 = x3565 +x3565 = x3564 +x3564 = x3563 +x3563 = x3562 +x3562 = x3561 +x3561 = x3560 +x3560 = x3559 +x3559 = x3558 +x3558 = x3557 +x3557 = x3556 +x3556 = x3555 +x3555 = x3554 +x3554 = x3553 +x3553 = x3552 +x3552 = x3551 +x3551 = x3550 +x3550 = x3549 +x3549 = x3548 +x3548 = x3547 +x3547 = x3546 +x3546 = x3545 +x3545 = x3544 +x3544 = x3543 +x3543 = x3542 +x3542 = x3541 +x3541 = x3540 +x3540 = x3539 +x3539 = x3538 +x3538 = x3537 +x3537 = x3536 +x3536 = x3535 +x3535 = x3534 +x3534 = x3533 +x3533 = x3532 +x3532 = x3531 +x3531 = x3530 +x3530 = x3529 +x3529 = x3528 +x3528 = x3527 +x3527 = x3526 +x3526 = x3525 +x3525 = x3524 +x3524 = x3523 +x3523 = x3522 +x3522 = x3521 +x3521 = x3520 +x3520 = x3519 +x3519 = x3518 +x3518 = x3517 +x3517 = x3516 +x3516 = x3515 +x3515 = x3514 +x3514 = x3513 +x3513 = x3512 +x3512 = x3511 +x3511 = x3510 +x3510 = x3509 +x3509 = x3508 +x3508 = x3507 +x3507 = x3506 +x3506 = x3505 +x3505 = x3504 +x3504 = x3503 +x3503 = x3502 +x3502 = x3501 +x3501 = x3500 +x3500 = x3499 +x3499 = x3498 +x3498 = x3497 +x3497 = x3496 +x3496 = x3495 +x3495 = x3494 +x3494 = x3493 +x3493 = x3492 +x3492 = x3491 +x3491 = x3490 +x3490 = x3489 +x3489 = x3488 +x3488 = x3487 +x3487 = x3486 +x3486 = x3485 +x3485 = x3484 +x3484 = x3483 +x3483 = x3482 +x3482 = x3481 +x3481 = x3480 +x3480 = x3479 +x3479 = x3478 +x3478 = x3477 +x3477 = x3476 +x3476 = x3475 +x3475 = x3474 +x3474 = x3473 +x3473 = x3472 +x3472 = x3471 +x3471 = x3470 +x3470 = x3469 +x3469 = x3468 +x3468 = x3467 +x3467 = x3466 +x3466 = x3465 +x3465 = x3464 +x3464 = x3463 +x3463 = x3462 +x3462 = x3461 +x3461 = x3460 +x3460 = x3459 +x3459 = x3458 +x3458 = x3457 +x3457 = x3456 +x3456 = x3455 +x3455 = x3454 +x3454 = x3453 +x3453 = x3452 +x3452 = x3451 +x3451 = x3450 +x3450 = x3449 +x3449 = x3448 +x3448 = x3447 +x3447 = x3446 +x3446 = x3445 +x3445 = x3444 +x3444 = x3443 +x3443 = x3442 +x3442 = x3441 +x3441 = x3440 +x3440 = x3439 +x3439 = x3438 +x3438 = x3437 +x3437 = x3436 +x3436 = x3435 +x3435 = x3434 +x3434 = x3433 +x3433 = x3432 +x3432 = x3431 +x3431 = x3430 +x3430 = x3429 +x3429 = x3428 +x3428 = x3427 +x3427 = x3426 +x3426 = x3425 +x3425 = x3424 +x3424 = x3423 +x3423 = x3422 +x3422 = x3421 +x3421 = x3420 +x3420 = x3419 +x3419 = x3418 +x3418 = x3417 +x3417 = x3416 +x3416 = x3415 +x3415 = x3414 +x3414 = x3413 +x3413 = x3412 +x3412 = x3411 +x3411 = x3410 +x3410 = x3409 +x3409 = x3408 +x3408 = x3407 +x3407 = x3406 +x3406 = x3405 +x3405 = x3404 +x3404 = x3403 +x3403 = x3402 +x3402 = x3401 +x3401 = x3400 +x3400 = x3399 +x3399 = x3398 +x3398 = x3397 +x3397 = x3396 +x3396 = x3395 +x3395 = x3394 +x3394 = x3393 +x3393 = x3392 +x3392 = x3391 +x3391 = x3390 +x3390 = x3389 +x3389 = x3388 +x3388 = x3387 +x3387 = x3386 +x3386 = x3385 +x3385 = x3384 +x3384 = x3383 +x3383 = x3382 +x3382 = x3381 +x3381 = x3380 +x3380 = x3379 +x3379 = x3378 +x3378 = x3377 +x3377 = x3376 +x3376 = x3375 +x3375 = x3374 +x3374 = x3373 +x3373 = x3372 +x3372 = x3371 +x3371 = x3370 +x3370 = x3369 +x3369 = x3368 +x3368 = x3367 +x3367 = x3366 +x3366 = x3365 +x3365 = x3364 +x3364 = x3363 +x3363 = x3362 +x3362 = x3361 +x3361 = x3360 +x3360 = x3359 +x3359 = x3358 +x3358 = x3357 +x3357 = x3356 +x3356 = x3355 +x3355 = x3354 +x3354 = x3353 +x3353 = x3352 +x3352 = x3351 +x3351 = x3350 +x3350 = x3349 +x3349 = x3348 +x3348 = x3347 +x3347 = x3346 +x3346 = x3345 +x3345 = x3344 +x3344 = x3343 +x3343 = x3342 +x3342 = x3341 +x3341 = x3340 +x3340 = x3339 +x3339 = x3338 +x3338 = x3337 +x3337 = x3336 +x3336 = x3335 +x3335 = x3334 +x3334 = x3333 +x3333 = x3332 +x3332 = x3331 +x3331 = x3330 +x3330 = x3329 +x3329 = x3328 +x3328 = x3327 +x3327 = x3326 +x3326 = x3325 +x3325 = x3324 +x3324 = x3323 +x3323 = x3322 +x3322 = x3321 +x3321 = x3320 +x3320 = x3319 +x3319 = x3318 +x3318 = x3317 +x3317 = x3316 +x3316 = x3315 +x3315 = x3314 +x3314 = x3313 +x3313 = x3312 +x3312 = x3311 +x3311 = x3310 +x3310 = x3309 +x3309 = x3308 +x3308 = x3307 +x3307 = x3306 +x3306 = x3305 +x3305 = x3304 +x3304 = x3303 +x3303 = x3302 +x3302 = x3301 +x3301 = x3300 +x3300 = x3299 +x3299 = x3298 +x3298 = x3297 +x3297 = x3296 +x3296 = x3295 +x3295 = x3294 +x3294 = x3293 +x3293 = x3292 +x3292 = x3291 +x3291 = x3290 +x3290 = x3289 +x3289 = x3288 +x3288 = x3287 +x3287 = x3286 +x3286 = x3285 +x3285 = x3284 +x3284 = x3283 +x3283 = x3282 +x3282 = x3281 +x3281 = x3280 +x3280 = x3279 +x3279 = x3278 +x3278 = x3277 +x3277 = x3276 +x3276 = x3275 +x3275 = x3274 +x3274 = x3273 +x3273 = x3272 +x3272 = x3271 +x3271 = x3270 +x3270 = x3269 +x3269 = x3268 +x3268 = x3267 +x3267 = x3266 +x3266 = x3265 +x3265 = x3264 +x3264 = x3263 +x3263 = x3262 +x3262 = x3261 +x3261 = x3260 +x3260 = x3259 +x3259 = x3258 +x3258 = x3257 +x3257 = x3256 +x3256 = x3255 +x3255 = x3254 +x3254 = x3253 +x3253 = x3252 +x3252 = x3251 +x3251 = x3250 +x3250 = x3249 +x3249 = x3248 +x3248 = x3247 +x3247 = x3246 +x3246 = x3245 +x3245 = x3244 +x3244 = x3243 +x3243 = x3242 +x3242 = x3241 +x3241 = x3240 +x3240 = x3239 +x3239 = x3238 +x3238 = x3237 +x3237 = x3236 +x3236 = x3235 +x3235 = x3234 +x3234 = x3233 +x3233 = x3232 +x3232 = x3231 +x3231 = x3230 +x3230 = x3229 +x3229 = x3228 +x3228 = x3227 +x3227 = x3226 +x3226 = x3225 +x3225 = x3224 +x3224 = x3223 +x3223 = x3222 +x3222 = x3221 +x3221 = x3220 +x3220 = x3219 +x3219 = x3218 +x3218 = x3217 +x3217 = x3216 +x3216 = x3215 +x3215 = x3214 +x3214 = x3213 +x3213 = x3212 +x3212 = x3211 +x3211 = x3210 +x3210 = x3209 +x3209 = x3208 +x3208 = x3207 +x3207 = x3206 +x3206 = x3205 +x3205 = x3204 +x3204 = x3203 +x3203 = x3202 +x3202 = x3201 +x3201 = x3200 +x3200 = x3199 +x3199 = x3198 +x3198 = x3197 +x3197 = x3196 +x3196 = x3195 +x3195 = x3194 +x3194 = x3193 +x3193 = x3192 +x3192 = x3191 +x3191 = x3190 +x3190 = x3189 +x3189 = x3188 +x3188 = x3187 +x3187 = x3186 +x3186 = x3185 +x3185 = x3184 +x3184 = x3183 +x3183 = x3182 +x3182 = x3181 +x3181 = x3180 +x3180 = x3179 +x3179 = x3178 +x3178 = x3177 +x3177 = x3176 +x3176 = x3175 +x3175 = x3174 +x3174 = x3173 +x3173 = x3172 +x3172 = x3171 +x3171 = x3170 +x3170 = x3169 +x3169 = x3168 +x3168 = x3167 +x3167 = x3166 +x3166 = x3165 +x3165 = x3164 +x3164 = x3163 +x3163 = x3162 +x3162 = x3161 +x3161 = x3160 +x3160 = x3159 +x3159 = x3158 +x3158 = x3157 +x3157 = x3156 +x3156 = x3155 +x3155 = x3154 +x3154 = x3153 +x3153 = x3152 +x3152 = x3151 +x3151 = x3150 +x3150 = x3149 +x3149 = x3148 +x3148 = x3147 +x3147 = x3146 +x3146 = x3145 +x3145 = x3144 +x3144 = x3143 +x3143 = x3142 +x3142 = x3141 +x3141 = x3140 +x3140 = x3139 +x3139 = x3138 +x3138 = x3137 +x3137 = x3136 +x3136 = x3135 +x3135 = x3134 +x3134 = x3133 +x3133 = x3132 +x3132 = x3131 +x3131 = x3130 +x3130 = x3129 +x3129 = x3128 +x3128 = x3127 +x3127 = x3126 +x3126 = x3125 +x3125 = x3124 +x3124 = x3123 +x3123 = x3122 +x3122 = x3121 +x3121 = x3120 +x3120 = x3119 +x3119 = x3118 +x3118 = x3117 +x3117 = x3116 +x3116 = x3115 +x3115 = x3114 +x3114 = x3113 +x3113 = x3112 +x3112 = x3111 +x3111 = x3110 +x3110 = x3109 +x3109 = x3108 +x3108 = x3107 +x3107 = x3106 +x3106 = x3105 +x3105 = x3104 +x3104 = x3103 +x3103 = x3102 +x3102 = x3101 +x3101 = x3100 +x3100 = x3099 +x3099 = x3098 +x3098 = x3097 +x3097 = x3096 +x3096 = x3095 +x3095 = x3094 +x3094 = x3093 +x3093 = x3092 +x3092 = x3091 +x3091 = x3090 +x3090 = x3089 +x3089 = x3088 +x3088 = x3087 +x3087 = x3086 +x3086 = x3085 +x3085 = x3084 +x3084 = x3083 +x3083 = x3082 +x3082 = x3081 +x3081 = x3080 +x3080 = x3079 +x3079 = x3078 +x3078 = x3077 +x3077 = x3076 +x3076 = x3075 +x3075 = x3074 +x3074 = x3073 +x3073 = x3072 +x3072 = x3071 +x3071 = x3070 +x3070 = x3069 +x3069 = x3068 +x3068 = x3067 +x3067 = x3066 +x3066 = x3065 +x3065 = x3064 +x3064 = x3063 +x3063 = x3062 +x3062 = x3061 +x3061 = x3060 +x3060 = x3059 +x3059 = x3058 +x3058 = x3057 +x3057 = x3056 +x3056 = x3055 +x3055 = x3054 +x3054 = x3053 +x3053 = x3052 +x3052 = x3051 +x3051 = x3050 +x3050 = x3049 +x3049 = x3048 +x3048 = x3047 +x3047 = x3046 +x3046 = x3045 +x3045 = x3044 +x3044 = x3043 +x3043 = x3042 +x3042 = x3041 +x3041 = x3040 +x3040 = x3039 +x3039 = x3038 +x3038 = x3037 +x3037 = x3036 +x3036 = x3035 +x3035 = x3034 +x3034 = x3033 +x3033 = x3032 +x3032 = x3031 +x3031 = x3030 +x3030 = x3029 +x3029 = x3028 +x3028 = x3027 +x3027 = x3026 +x3026 = x3025 +x3025 = x3024 +x3024 = x3023 +x3023 = x3022 +x3022 = x3021 +x3021 = x3020 +x3020 = x3019 +x3019 = x3018 +x3018 = x3017 +x3017 = x3016 +x3016 = x3015 +x3015 = x3014 +x3014 = x3013 +x3013 = x3012 +x3012 = x3011 +x3011 = x3010 +x3010 = x3009 +x3009 = x3008 +x3008 = x3007 +x3007 = x3006 +x3006 = x3005 +x3005 = x3004 +x3004 = x3003 +x3003 = x3002 +x3002 = x3001 +x3001 = x3000 +x3000 = x2999 +x2999 = x2998 +x2998 = x2997 +x2997 = x2996 +x2996 = x2995 +x2995 = x2994 +x2994 = x2993 +x2993 = x2992 +x2992 = x2991 +x2991 = x2990 +x2990 = x2989 +x2989 = x2988 +x2988 = x2987 +x2987 = x2986 +x2986 = x2985 +x2985 = x2984 +x2984 = x2983 +x2983 = x2982 +x2982 = x2981 +x2981 = x2980 +x2980 = x2979 +x2979 = x2978 +x2978 = x2977 +x2977 = x2976 +x2976 = x2975 +x2975 = x2974 +x2974 = x2973 +x2973 = x2972 +x2972 = x2971 +x2971 = x2970 +x2970 = x2969 +x2969 = x2968 +x2968 = x2967 +x2967 = x2966 +x2966 = x2965 +x2965 = x2964 +x2964 = x2963 +x2963 = x2962 +x2962 = x2961 +x2961 = x2960 +x2960 = x2959 +x2959 = x2958 +x2958 = x2957 +x2957 = x2956 +x2956 = x2955 +x2955 = x2954 +x2954 = x2953 +x2953 = x2952 +x2952 = x2951 +x2951 = x2950 +x2950 = x2949 +x2949 = x2948 +x2948 = x2947 +x2947 = x2946 +x2946 = x2945 +x2945 = x2944 +x2944 = x2943 +x2943 = x2942 +x2942 = x2941 +x2941 = x2940 +x2940 = x2939 +x2939 = x2938 +x2938 = x2937 +x2937 = x2936 +x2936 = x2935 +x2935 = x2934 +x2934 = x2933 +x2933 = x2932 +x2932 = x2931 +x2931 = x2930 +x2930 = x2929 +x2929 = x2928 +x2928 = x2927 +x2927 = x2926 +x2926 = x2925 +x2925 = x2924 +x2924 = x2923 +x2923 = x2922 +x2922 = x2921 +x2921 = x2920 +x2920 = x2919 +x2919 = x2918 +x2918 = x2917 +x2917 = x2916 +x2916 = x2915 +x2915 = x2914 +x2914 = x2913 +x2913 = x2912 +x2912 = x2911 +x2911 = x2910 +x2910 = x2909 +x2909 = x2908 +x2908 = x2907 +x2907 = x2906 +x2906 = x2905 +x2905 = x2904 +x2904 = x2903 +x2903 = x2902 +x2902 = x2901 +x2901 = x2900 +x2900 = x2899 +x2899 = x2898 +x2898 = x2897 +x2897 = x2896 +x2896 = x2895 +x2895 = x2894 +x2894 = x2893 +x2893 = x2892 +x2892 = x2891 +x2891 = x2890 +x2890 = x2889 +x2889 = x2888 +x2888 = x2887 +x2887 = x2886 +x2886 = x2885 +x2885 = x2884 +x2884 = x2883 +x2883 = x2882 +x2882 = x2881 +x2881 = x2880 +x2880 = x2879 +x2879 = x2878 +x2878 = x2877 +x2877 = x2876 +x2876 = x2875 +x2875 = x2874 +x2874 = x2873 +x2873 = x2872 +x2872 = x2871 +x2871 = x2870 +x2870 = x2869 +x2869 = x2868 +x2868 = x2867 +x2867 = x2866 +x2866 = x2865 +x2865 = x2864 +x2864 = x2863 +x2863 = x2862 +x2862 = x2861 +x2861 = x2860 +x2860 = x2859 +x2859 = x2858 +x2858 = x2857 +x2857 = x2856 +x2856 = x2855 +x2855 = x2854 +x2854 = x2853 +x2853 = x2852 +x2852 = x2851 +x2851 = x2850 +x2850 = x2849 +x2849 = x2848 +x2848 = x2847 +x2847 = x2846 +x2846 = x2845 +x2845 = x2844 +x2844 = x2843 +x2843 = x2842 +x2842 = x2841 +x2841 = x2840 +x2840 = x2839 +x2839 = x2838 +x2838 = x2837 +x2837 = x2836 +x2836 = x2835 +x2835 = x2834 +x2834 = x2833 +x2833 = x2832 +x2832 = x2831 +x2831 = x2830 +x2830 = x2829 +x2829 = x2828 +x2828 = x2827 +x2827 = x2826 +x2826 = x2825 +x2825 = x2824 +x2824 = x2823 +x2823 = x2822 +x2822 = x2821 +x2821 = x2820 +x2820 = x2819 +x2819 = x2818 +x2818 = x2817 +x2817 = x2816 +x2816 = x2815 +x2815 = x2814 +x2814 = x2813 +x2813 = x2812 +x2812 = x2811 +x2811 = x2810 +x2810 = x2809 +x2809 = x2808 +x2808 = x2807 +x2807 = x2806 +x2806 = x2805 +x2805 = x2804 +x2804 = x2803 +x2803 = x2802 +x2802 = x2801 +x2801 = x2800 +x2800 = x2799 +x2799 = x2798 +x2798 = x2797 +x2797 = x2796 +x2796 = x2795 +x2795 = x2794 +x2794 = x2793 +x2793 = x2792 +x2792 = x2791 +x2791 = x2790 +x2790 = x2789 +x2789 = x2788 +x2788 = x2787 +x2787 = x2786 +x2786 = x2785 +x2785 = x2784 +x2784 = x2783 +x2783 = x2782 +x2782 = x2781 +x2781 = x2780 +x2780 = x2779 +x2779 = x2778 +x2778 = x2777 +x2777 = x2776 +x2776 = x2775 +x2775 = x2774 +x2774 = x2773 +x2773 = x2772 +x2772 = x2771 +x2771 = x2770 +x2770 = x2769 +x2769 = x2768 +x2768 = x2767 +x2767 = x2766 +x2766 = x2765 +x2765 = x2764 +x2764 = x2763 +x2763 = x2762 +x2762 = x2761 +x2761 = x2760 +x2760 = x2759 +x2759 = x2758 +x2758 = x2757 +x2757 = x2756 +x2756 = x2755 +x2755 = x2754 +x2754 = x2753 +x2753 = x2752 +x2752 = x2751 +x2751 = x2750 +x2750 = x2749 +x2749 = x2748 +x2748 = x2747 +x2747 = x2746 +x2746 = x2745 +x2745 = x2744 +x2744 = x2743 +x2743 = x2742 +x2742 = x2741 +x2741 = x2740 +x2740 = x2739 +x2739 = x2738 +x2738 = x2737 +x2737 = x2736 +x2736 = x2735 +x2735 = x2734 +x2734 = x2733 +x2733 = x2732 +x2732 = x2731 +x2731 = x2730 +x2730 = x2729 +x2729 = x2728 +x2728 = x2727 +x2727 = x2726 +x2726 = x2725 +x2725 = x2724 +x2724 = x2723 +x2723 = x2722 +x2722 = x2721 +x2721 = x2720 +x2720 = x2719 +x2719 = x2718 +x2718 = x2717 +x2717 = x2716 +x2716 = x2715 +x2715 = x2714 +x2714 = x2713 +x2713 = x2712 +x2712 = x2711 +x2711 = x2710 +x2710 = x2709 +x2709 = x2708 +x2708 = x2707 +x2707 = x2706 +x2706 = x2705 +x2705 = x2704 +x2704 = x2703 +x2703 = x2702 +x2702 = x2701 +x2701 = x2700 +x2700 = x2699 +x2699 = x2698 +x2698 = x2697 +x2697 = x2696 +x2696 = x2695 +x2695 = x2694 +x2694 = x2693 +x2693 = x2692 +x2692 = x2691 +x2691 = x2690 +x2690 = x2689 +x2689 = x2688 +x2688 = x2687 +x2687 = x2686 +x2686 = x2685 +x2685 = x2684 +x2684 = x2683 +x2683 = x2682 +x2682 = x2681 +x2681 = x2680 +x2680 = x2679 +x2679 = x2678 +x2678 = x2677 +x2677 = x2676 +x2676 = x2675 +x2675 = x2674 +x2674 = x2673 +x2673 = x2672 +x2672 = x2671 +x2671 = x2670 +x2670 = x2669 +x2669 = x2668 +x2668 = x2667 +x2667 = x2666 +x2666 = x2665 +x2665 = x2664 +x2664 = x2663 +x2663 = x2662 +x2662 = x2661 +x2661 = x2660 +x2660 = x2659 +x2659 = x2658 +x2658 = x2657 +x2657 = x2656 +x2656 = x2655 +x2655 = x2654 +x2654 = x2653 +x2653 = x2652 +x2652 = x2651 +x2651 = x2650 +x2650 = x2649 +x2649 = x2648 +x2648 = x2647 +x2647 = x2646 +x2646 = x2645 +x2645 = x2644 +x2644 = x2643 +x2643 = x2642 +x2642 = x2641 +x2641 = x2640 +x2640 = x2639 +x2639 = x2638 +x2638 = x2637 +x2637 = x2636 +x2636 = x2635 +x2635 = x2634 +x2634 = x2633 +x2633 = x2632 +x2632 = x2631 +x2631 = x2630 +x2630 = x2629 +x2629 = x2628 +x2628 = x2627 +x2627 = x2626 +x2626 = x2625 +x2625 = x2624 +x2624 = x2623 +x2623 = x2622 +x2622 = x2621 +x2621 = x2620 +x2620 = x2619 +x2619 = x2618 +x2618 = x2617 +x2617 = x2616 +x2616 = x2615 +x2615 = x2614 +x2614 = x2613 +x2613 = x2612 +x2612 = x2611 +x2611 = x2610 +x2610 = x2609 +x2609 = x2608 +x2608 = x2607 +x2607 = x2606 +x2606 = x2605 +x2605 = x2604 +x2604 = x2603 +x2603 = x2602 +x2602 = x2601 +x2601 = x2600 +x2600 = x2599 +x2599 = x2598 +x2598 = x2597 +x2597 = x2596 +x2596 = x2595 +x2595 = x2594 +x2594 = x2593 +x2593 = x2592 +x2592 = x2591 +x2591 = x2590 +x2590 = x2589 +x2589 = x2588 +x2588 = x2587 +x2587 = x2586 +x2586 = x2585 +x2585 = x2584 +x2584 = x2583 +x2583 = x2582 +x2582 = x2581 +x2581 = x2580 +x2580 = x2579 +x2579 = x2578 +x2578 = x2577 +x2577 = x2576 +x2576 = x2575 +x2575 = x2574 +x2574 = x2573 +x2573 = x2572 +x2572 = x2571 +x2571 = x2570 +x2570 = x2569 +x2569 = x2568 +x2568 = x2567 +x2567 = x2566 +x2566 = x2565 +x2565 = x2564 +x2564 = x2563 +x2563 = x2562 +x2562 = x2561 +x2561 = x2560 +x2560 = x2559 +x2559 = x2558 +x2558 = x2557 +x2557 = x2556 +x2556 = x2555 +x2555 = x2554 +x2554 = x2553 +x2553 = x2552 +x2552 = x2551 +x2551 = x2550 +x2550 = x2549 +x2549 = x2548 +x2548 = x2547 +x2547 = x2546 +x2546 = x2545 +x2545 = x2544 +x2544 = x2543 +x2543 = x2542 +x2542 = x2541 +x2541 = x2540 +x2540 = x2539 +x2539 = x2538 +x2538 = x2537 +x2537 = x2536 +x2536 = x2535 +x2535 = x2534 +x2534 = x2533 +x2533 = x2532 +x2532 = x2531 +x2531 = x2530 +x2530 = x2529 +x2529 = x2528 +x2528 = x2527 +x2527 = x2526 +x2526 = x2525 +x2525 = x2524 +x2524 = x2523 +x2523 = x2522 +x2522 = x2521 +x2521 = x2520 +x2520 = x2519 +x2519 = x2518 +x2518 = x2517 +x2517 = x2516 +x2516 = x2515 +x2515 = x2514 +x2514 = x2513 +x2513 = x2512 +x2512 = x2511 +x2511 = x2510 +x2510 = x2509 +x2509 = x2508 +x2508 = x2507 +x2507 = x2506 +x2506 = x2505 +x2505 = x2504 +x2504 = x2503 +x2503 = x2502 +x2502 = x2501 +x2501 = x2500 +x2500 = x2499 +x2499 = x2498 +x2498 = x2497 +x2497 = x2496 +x2496 = x2495 +x2495 = x2494 +x2494 = x2493 +x2493 = x2492 +x2492 = x2491 +x2491 = x2490 +x2490 = x2489 +x2489 = x2488 +x2488 = x2487 +x2487 = x2486 +x2486 = x2485 +x2485 = x2484 +x2484 = x2483 +x2483 = x2482 +x2482 = x2481 +x2481 = x2480 +x2480 = x2479 +x2479 = x2478 +x2478 = x2477 +x2477 = x2476 +x2476 = x2475 +x2475 = x2474 +x2474 = x2473 +x2473 = x2472 +x2472 = x2471 +x2471 = x2470 +x2470 = x2469 +x2469 = x2468 +x2468 = x2467 +x2467 = x2466 +x2466 = x2465 +x2465 = x2464 +x2464 = x2463 +x2463 = x2462 +x2462 = x2461 +x2461 = x2460 +x2460 = x2459 +x2459 = x2458 +x2458 = x2457 +x2457 = x2456 +x2456 = x2455 +x2455 = x2454 +x2454 = x2453 +x2453 = x2452 +x2452 = x2451 +x2451 = x2450 +x2450 = x2449 +x2449 = x2448 +x2448 = x2447 +x2447 = x2446 +x2446 = x2445 +x2445 = x2444 +x2444 = x2443 +x2443 = x2442 +x2442 = x2441 +x2441 = x2440 +x2440 = x2439 +x2439 = x2438 +x2438 = x2437 +x2437 = x2436 +x2436 = x2435 +x2435 = x2434 +x2434 = x2433 +x2433 = x2432 +x2432 = x2431 +x2431 = x2430 +x2430 = x2429 +x2429 = x2428 +x2428 = x2427 +x2427 = x2426 +x2426 = x2425 +x2425 = x2424 +x2424 = x2423 +x2423 = x2422 +x2422 = x2421 +x2421 = x2420 +x2420 = x2419 +x2419 = x2418 +x2418 = x2417 +x2417 = x2416 +x2416 = x2415 +x2415 = x2414 +x2414 = x2413 +x2413 = x2412 +x2412 = x2411 +x2411 = x2410 +x2410 = x2409 +x2409 = x2408 +x2408 = x2407 +x2407 = x2406 +x2406 = x2405 +x2405 = x2404 +x2404 = x2403 +x2403 = x2402 +x2402 = x2401 +x2401 = x2400 +x2400 = x2399 +x2399 = x2398 +x2398 = x2397 +x2397 = x2396 +x2396 = x2395 +x2395 = x2394 +x2394 = x2393 +x2393 = x2392 +x2392 = x2391 +x2391 = x2390 +x2390 = x2389 +x2389 = x2388 +x2388 = x2387 +x2387 = x2386 +x2386 = x2385 +x2385 = x2384 +x2384 = x2383 +x2383 = x2382 +x2382 = x2381 +x2381 = x2380 +x2380 = x2379 +x2379 = x2378 +x2378 = x2377 +x2377 = x2376 +x2376 = x2375 +x2375 = x2374 +x2374 = x2373 +x2373 = x2372 +x2372 = x2371 +x2371 = x2370 +x2370 = x2369 +x2369 = x2368 +x2368 = x2367 +x2367 = x2366 +x2366 = x2365 +x2365 = x2364 +x2364 = x2363 +x2363 = x2362 +x2362 = x2361 +x2361 = x2360 +x2360 = x2359 +x2359 = x2358 +x2358 = x2357 +x2357 = x2356 +x2356 = x2355 +x2355 = x2354 +x2354 = x2353 +x2353 = x2352 +x2352 = x2351 +x2351 = x2350 +x2350 = x2349 +x2349 = x2348 +x2348 = x2347 +x2347 = x2346 +x2346 = x2345 +x2345 = x2344 +x2344 = x2343 +x2343 = x2342 +x2342 = x2341 +x2341 = x2340 +x2340 = x2339 +x2339 = x2338 +x2338 = x2337 +x2337 = x2336 +x2336 = x2335 +x2335 = x2334 +x2334 = x2333 +x2333 = x2332 +x2332 = x2331 +x2331 = x2330 +x2330 = x2329 +x2329 = x2328 +x2328 = x2327 +x2327 = x2326 +x2326 = x2325 +x2325 = x2324 +x2324 = x2323 +x2323 = x2322 +x2322 = x2321 +x2321 = x2320 +x2320 = x2319 +x2319 = x2318 +x2318 = x2317 +x2317 = x2316 +x2316 = x2315 +x2315 = x2314 +x2314 = x2313 +x2313 = x2312 +x2312 = x2311 +x2311 = x2310 +x2310 = x2309 +x2309 = x2308 +x2308 = x2307 +x2307 = x2306 +x2306 = x2305 +x2305 = x2304 +x2304 = x2303 +x2303 = x2302 +x2302 = x2301 +x2301 = x2300 +x2300 = x2299 +x2299 = x2298 +x2298 = x2297 +x2297 = x2296 +x2296 = x2295 +x2295 = x2294 +x2294 = x2293 +x2293 = x2292 +x2292 = x2291 +x2291 = x2290 +x2290 = x2289 +x2289 = x2288 +x2288 = x2287 +x2287 = x2286 +x2286 = x2285 +x2285 = x2284 +x2284 = x2283 +x2283 = x2282 +x2282 = x2281 +x2281 = x2280 +x2280 = x2279 +x2279 = x2278 +x2278 = x2277 +x2277 = x2276 +x2276 = x2275 +x2275 = x2274 +x2274 = x2273 +x2273 = x2272 +x2272 = x2271 +x2271 = x2270 +x2270 = x2269 +x2269 = x2268 +x2268 = x2267 +x2267 = x2266 +x2266 = x2265 +x2265 = x2264 +x2264 = x2263 +x2263 = x2262 +x2262 = x2261 +x2261 = x2260 +x2260 = x2259 +x2259 = x2258 +x2258 = x2257 +x2257 = x2256 +x2256 = x2255 +x2255 = x2254 +x2254 = x2253 +x2253 = x2252 +x2252 = x2251 +x2251 = x2250 +x2250 = x2249 +x2249 = x2248 +x2248 = x2247 +x2247 = x2246 +x2246 = x2245 +x2245 = x2244 +x2244 = x2243 +x2243 = x2242 +x2242 = x2241 +x2241 = x2240 +x2240 = x2239 +x2239 = x2238 +x2238 = x2237 +x2237 = x2236 +x2236 = x2235 +x2235 = x2234 +x2234 = x2233 +x2233 = x2232 +x2232 = x2231 +x2231 = x2230 +x2230 = x2229 +x2229 = x2228 +x2228 = x2227 +x2227 = x2226 +x2226 = x2225 +x2225 = x2224 +x2224 = x2223 +x2223 = x2222 +x2222 = x2221 +x2221 = x2220 +x2220 = x2219 +x2219 = x2218 +x2218 = x2217 +x2217 = x2216 +x2216 = x2215 +x2215 = x2214 +x2214 = x2213 +x2213 = x2212 +x2212 = x2211 +x2211 = x2210 +x2210 = x2209 +x2209 = x2208 +x2208 = x2207 +x2207 = x2206 +x2206 = x2205 +x2205 = x2204 +x2204 = x2203 +x2203 = x2202 +x2202 = x2201 +x2201 = x2200 +x2200 = x2199 +x2199 = x2198 +x2198 = x2197 +x2197 = x2196 +x2196 = x2195 +x2195 = x2194 +x2194 = x2193 +x2193 = x2192 +x2192 = x2191 +x2191 = x2190 +x2190 = x2189 +x2189 = x2188 +x2188 = x2187 +x2187 = x2186 +x2186 = x2185 +x2185 = x2184 +x2184 = x2183 +x2183 = x2182 +x2182 = x2181 +x2181 = x2180 +x2180 = x2179 +x2179 = x2178 +x2178 = x2177 +x2177 = x2176 +x2176 = x2175 +x2175 = x2174 +x2174 = x2173 +x2173 = x2172 +x2172 = x2171 +x2171 = x2170 +x2170 = x2169 +x2169 = x2168 +x2168 = x2167 +x2167 = x2166 +x2166 = x2165 +x2165 = x2164 +x2164 = x2163 +x2163 = x2162 +x2162 = x2161 +x2161 = x2160 +x2160 = x2159 +x2159 = x2158 +x2158 = x2157 +x2157 = x2156 +x2156 = x2155 +x2155 = x2154 +x2154 = x2153 +x2153 = x2152 +x2152 = x2151 +x2151 = x2150 +x2150 = x2149 +x2149 = x2148 +x2148 = x2147 +x2147 = x2146 +x2146 = x2145 +x2145 = x2144 +x2144 = x2143 +x2143 = x2142 +x2142 = x2141 +x2141 = x2140 +x2140 = x2139 +x2139 = x2138 +x2138 = x2137 +x2137 = x2136 +x2136 = x2135 +x2135 = x2134 +x2134 = x2133 +x2133 = x2132 +x2132 = x2131 +x2131 = x2130 +x2130 = x2129 +x2129 = x2128 +x2128 = x2127 +x2127 = x2126 +x2126 = x2125 +x2125 = x2124 +x2124 = x2123 +x2123 = x2122 +x2122 = x2121 +x2121 = x2120 +x2120 = x2119 +x2119 = x2118 +x2118 = x2117 +x2117 = x2116 +x2116 = x2115 +x2115 = x2114 +x2114 = x2113 +x2113 = x2112 +x2112 = x2111 +x2111 = x2110 +x2110 = x2109 +x2109 = x2108 +x2108 = x2107 +x2107 = x2106 +x2106 = x2105 +x2105 = x2104 +x2104 = x2103 +x2103 = x2102 +x2102 = x2101 +x2101 = x2100 +x2100 = x2099 +x2099 = x2098 +x2098 = x2097 +x2097 = x2096 +x2096 = x2095 +x2095 = x2094 +x2094 = x2093 +x2093 = x2092 +x2092 = x2091 +x2091 = x2090 +x2090 = x2089 +x2089 = x2088 +x2088 = x2087 +x2087 = x2086 +x2086 = x2085 +x2085 = x2084 +x2084 = x2083 +x2083 = x2082 +x2082 = x2081 +x2081 = x2080 +x2080 = x2079 +x2079 = x2078 +x2078 = x2077 +x2077 = x2076 +x2076 = x2075 +x2075 = x2074 +x2074 = x2073 +x2073 = x2072 +x2072 = x2071 +x2071 = x2070 +x2070 = x2069 +x2069 = x2068 +x2068 = x2067 +x2067 = x2066 +x2066 = x2065 +x2065 = x2064 +x2064 = x2063 +x2063 = x2062 +x2062 = x2061 +x2061 = x2060 +x2060 = x2059 +x2059 = x2058 +x2058 = x2057 +x2057 = x2056 +x2056 = x2055 +x2055 = x2054 +x2054 = x2053 +x2053 = x2052 +x2052 = x2051 +x2051 = x2050 +x2050 = x2049 +x2049 = x2048 +x2048 = x2047 +x2047 = x2046 +x2046 = x2045 +x2045 = x2044 +x2044 = x2043 +x2043 = x2042 +x2042 = x2041 +x2041 = x2040 +x2040 = x2039 +x2039 = x2038 +x2038 = x2037 +x2037 = x2036 +x2036 = x2035 +x2035 = x2034 +x2034 = x2033 +x2033 = x2032 +x2032 = x2031 +x2031 = x2030 +x2030 = x2029 +x2029 = x2028 +x2028 = x2027 +x2027 = x2026 +x2026 = x2025 +x2025 = x2024 +x2024 = x2023 +x2023 = x2022 +x2022 = x2021 +x2021 = x2020 +x2020 = x2019 +x2019 = x2018 +x2018 = x2017 +x2017 = x2016 +x2016 = x2015 +x2015 = x2014 +x2014 = x2013 +x2013 = x2012 +x2012 = x2011 +x2011 = x2010 +x2010 = x2009 +x2009 = x2008 +x2008 = x2007 +x2007 = x2006 +x2006 = x2005 +x2005 = x2004 +x2004 = x2003 +x2003 = x2002 +x2002 = x2001 +x2001 = x2000 +x2000 = x1999 +x1999 = x1998 +x1998 = x1997 +x1997 = x1996 +x1996 = x1995 +x1995 = x1994 +x1994 = x1993 +x1993 = x1992 +x1992 = x1991 +x1991 = x1990 +x1990 = x1989 +x1989 = x1988 +x1988 = x1987 +x1987 = x1986 +x1986 = x1985 +x1985 = x1984 +x1984 = x1983 +x1983 = x1982 +x1982 = x1981 +x1981 = x1980 +x1980 = x1979 +x1979 = x1978 +x1978 = x1977 +x1977 = x1976 +x1976 = x1975 +x1975 = x1974 +x1974 = x1973 +x1973 = x1972 +x1972 = x1971 +x1971 = x1970 +x1970 = x1969 +x1969 = x1968 +x1968 = x1967 +x1967 = x1966 +x1966 = x1965 +x1965 = x1964 +x1964 = x1963 +x1963 = x1962 +x1962 = x1961 +x1961 = x1960 +x1960 = x1959 +x1959 = x1958 +x1958 = x1957 +x1957 = x1956 +x1956 = x1955 +x1955 = x1954 +x1954 = x1953 +x1953 = x1952 +x1952 = x1951 +x1951 = x1950 +x1950 = x1949 +x1949 = x1948 +x1948 = x1947 +x1947 = x1946 +x1946 = x1945 +x1945 = x1944 +x1944 = x1943 +x1943 = x1942 +x1942 = x1941 +x1941 = x1940 +x1940 = x1939 +x1939 = x1938 +x1938 = x1937 +x1937 = x1936 +x1936 = x1935 +x1935 = x1934 +x1934 = x1933 +x1933 = x1932 +x1932 = x1931 +x1931 = x1930 +x1930 = x1929 +x1929 = x1928 +x1928 = x1927 +x1927 = x1926 +x1926 = x1925 +x1925 = x1924 +x1924 = x1923 +x1923 = x1922 +x1922 = x1921 +x1921 = x1920 +x1920 = x1919 +x1919 = x1918 +x1918 = x1917 +x1917 = x1916 +x1916 = x1915 +x1915 = x1914 +x1914 = x1913 +x1913 = x1912 +x1912 = x1911 +x1911 = x1910 +x1910 = x1909 +x1909 = x1908 +x1908 = x1907 +x1907 = x1906 +x1906 = x1905 +x1905 = x1904 +x1904 = x1903 +x1903 = x1902 +x1902 = x1901 +x1901 = x1900 +x1900 = x1899 +x1899 = x1898 +x1898 = x1897 +x1897 = x1896 +x1896 = x1895 +x1895 = x1894 +x1894 = x1893 +x1893 = x1892 +x1892 = x1891 +x1891 = x1890 +x1890 = x1889 +x1889 = x1888 +x1888 = x1887 +x1887 = x1886 +x1886 = x1885 +x1885 = x1884 +x1884 = x1883 +x1883 = x1882 +x1882 = x1881 +x1881 = x1880 +x1880 = x1879 +x1879 = x1878 +x1878 = x1877 +x1877 = x1876 +x1876 = x1875 +x1875 = x1874 +x1874 = x1873 +x1873 = x1872 +x1872 = x1871 +x1871 = x1870 +x1870 = x1869 +x1869 = x1868 +x1868 = x1867 +x1867 = x1866 +x1866 = x1865 +x1865 = x1864 +x1864 = x1863 +x1863 = x1862 +x1862 = x1861 +x1861 = x1860 +x1860 = x1859 +x1859 = x1858 +x1858 = x1857 +x1857 = x1856 +x1856 = x1855 +x1855 = x1854 +x1854 = x1853 +x1853 = x1852 +x1852 = x1851 +x1851 = x1850 +x1850 = x1849 +x1849 = x1848 +x1848 = x1847 +x1847 = x1846 +x1846 = x1845 +x1845 = x1844 +x1844 = x1843 +x1843 = x1842 +x1842 = x1841 +x1841 = x1840 +x1840 = x1839 +x1839 = x1838 +x1838 = x1837 +x1837 = x1836 +x1836 = x1835 +x1835 = x1834 +x1834 = x1833 +x1833 = x1832 +x1832 = x1831 +x1831 = x1830 +x1830 = x1829 +x1829 = x1828 +x1828 = x1827 +x1827 = x1826 +x1826 = x1825 +x1825 = x1824 +x1824 = x1823 +x1823 = x1822 +x1822 = x1821 +x1821 = x1820 +x1820 = x1819 +x1819 = x1818 +x1818 = x1817 +x1817 = x1816 +x1816 = x1815 +x1815 = x1814 +x1814 = x1813 +x1813 = x1812 +x1812 = x1811 +x1811 = x1810 +x1810 = x1809 +x1809 = x1808 +x1808 = x1807 +x1807 = x1806 +x1806 = x1805 +x1805 = x1804 +x1804 = x1803 +x1803 = x1802 +x1802 = x1801 +x1801 = x1800 +x1800 = x1799 +x1799 = x1798 +x1798 = x1797 +x1797 = x1796 +x1796 = x1795 +x1795 = x1794 +x1794 = x1793 +x1793 = x1792 +x1792 = x1791 +x1791 = x1790 +x1790 = x1789 +x1789 = x1788 +x1788 = x1787 +x1787 = x1786 +x1786 = x1785 +x1785 = x1784 +x1784 = x1783 +x1783 = x1782 +x1782 = x1781 +x1781 = x1780 +x1780 = x1779 +x1779 = x1778 +x1778 = x1777 +x1777 = x1776 +x1776 = x1775 +x1775 = x1774 +x1774 = x1773 +x1773 = x1772 +x1772 = x1771 +x1771 = x1770 +x1770 = x1769 +x1769 = x1768 +x1768 = x1767 +x1767 = x1766 +x1766 = x1765 +x1765 = x1764 +x1764 = x1763 +x1763 = x1762 +x1762 = x1761 +x1761 = x1760 +x1760 = x1759 +x1759 = x1758 +x1758 = x1757 +x1757 = x1756 +x1756 = x1755 +x1755 = x1754 +x1754 = x1753 +x1753 = x1752 +x1752 = x1751 +x1751 = x1750 +x1750 = x1749 +x1749 = x1748 +x1748 = x1747 +x1747 = x1746 +x1746 = x1745 +x1745 = x1744 +x1744 = x1743 +x1743 = x1742 +x1742 = x1741 +x1741 = x1740 +x1740 = x1739 +x1739 = x1738 +x1738 = x1737 +x1737 = x1736 +x1736 = x1735 +x1735 = x1734 +x1734 = x1733 +x1733 = x1732 +x1732 = x1731 +x1731 = x1730 +x1730 = x1729 +x1729 = x1728 +x1728 = x1727 +x1727 = x1726 +x1726 = x1725 +x1725 = x1724 +x1724 = x1723 +x1723 = x1722 +x1722 = x1721 +x1721 = x1720 +x1720 = x1719 +x1719 = x1718 +x1718 = x1717 +x1717 = x1716 +x1716 = x1715 +x1715 = x1714 +x1714 = x1713 +x1713 = x1712 +x1712 = x1711 +x1711 = x1710 +x1710 = x1709 +x1709 = x1708 +x1708 = x1707 +x1707 = x1706 +x1706 = x1705 +x1705 = x1704 +x1704 = x1703 +x1703 = x1702 +x1702 = x1701 +x1701 = x1700 +x1700 = x1699 +x1699 = x1698 +x1698 = x1697 +x1697 = x1696 +x1696 = x1695 +x1695 = x1694 +x1694 = x1693 +x1693 = x1692 +x1692 = x1691 +x1691 = x1690 +x1690 = x1689 +x1689 = x1688 +x1688 = x1687 +x1687 = x1686 +x1686 = x1685 +x1685 = x1684 +x1684 = x1683 +x1683 = x1682 +x1682 = x1681 +x1681 = x1680 +x1680 = x1679 +x1679 = x1678 +x1678 = x1677 +x1677 = x1676 +x1676 = x1675 +x1675 = x1674 +x1674 = x1673 +x1673 = x1672 +x1672 = x1671 +x1671 = x1670 +x1670 = x1669 +x1669 = x1668 +x1668 = x1667 +x1667 = x1666 +x1666 = x1665 +x1665 = x1664 +x1664 = x1663 +x1663 = x1662 +x1662 = x1661 +x1661 = x1660 +x1660 = x1659 +x1659 = x1658 +x1658 = x1657 +x1657 = x1656 +x1656 = x1655 +x1655 = x1654 +x1654 = x1653 +x1653 = x1652 +x1652 = x1651 +x1651 = x1650 +x1650 = x1649 +x1649 = x1648 +x1648 = x1647 +x1647 = x1646 +x1646 = x1645 +x1645 = x1644 +x1644 = x1643 +x1643 = x1642 +x1642 = x1641 +x1641 = x1640 +x1640 = x1639 +x1639 = x1638 +x1638 = x1637 +x1637 = x1636 +x1636 = x1635 +x1635 = x1634 +x1634 = x1633 +x1633 = x1632 +x1632 = x1631 +x1631 = x1630 +x1630 = x1629 +x1629 = x1628 +x1628 = x1627 +x1627 = x1626 +x1626 = x1625 +x1625 = x1624 +x1624 = x1623 +x1623 = x1622 +x1622 = x1621 +x1621 = x1620 +x1620 = x1619 +x1619 = x1618 +x1618 = x1617 +x1617 = x1616 +x1616 = x1615 +x1615 = x1614 +x1614 = x1613 +x1613 = x1612 +x1612 = x1611 +x1611 = x1610 +x1610 = x1609 +x1609 = x1608 +x1608 = x1607 +x1607 = x1606 +x1606 = x1605 +x1605 = x1604 +x1604 = x1603 +x1603 = x1602 +x1602 = x1601 +x1601 = x1600 +x1600 = x1599 +x1599 = x1598 +x1598 = x1597 +x1597 = x1596 +x1596 = x1595 +x1595 = x1594 +x1594 = x1593 +x1593 = x1592 +x1592 = x1591 +x1591 = x1590 +x1590 = x1589 +x1589 = x1588 +x1588 = x1587 +x1587 = x1586 +x1586 = x1585 +x1585 = x1584 +x1584 = x1583 +x1583 = x1582 +x1582 = x1581 +x1581 = x1580 +x1580 = x1579 +x1579 = x1578 +x1578 = x1577 +x1577 = x1576 +x1576 = x1575 +x1575 = x1574 +x1574 = x1573 +x1573 = x1572 +x1572 = x1571 +x1571 = x1570 +x1570 = x1569 +x1569 = x1568 +x1568 = x1567 +x1567 = x1566 +x1566 = x1565 +x1565 = x1564 +x1564 = x1563 +x1563 = x1562 +x1562 = x1561 +x1561 = x1560 +x1560 = x1559 +x1559 = x1558 +x1558 = x1557 +x1557 = x1556 +x1556 = x1555 +x1555 = x1554 +x1554 = x1553 +x1553 = x1552 +x1552 = x1551 +x1551 = x1550 +x1550 = x1549 +x1549 = x1548 +x1548 = x1547 +x1547 = x1546 +x1546 = x1545 +x1545 = x1544 +x1544 = x1543 +x1543 = x1542 +x1542 = x1541 +x1541 = x1540 +x1540 = x1539 +x1539 = x1538 +x1538 = x1537 +x1537 = x1536 +x1536 = x1535 +x1535 = x1534 +x1534 = x1533 +x1533 = x1532 +x1532 = x1531 +x1531 = x1530 +x1530 = x1529 +x1529 = x1528 +x1528 = x1527 +x1527 = x1526 +x1526 = x1525 +x1525 = x1524 +x1524 = x1523 +x1523 = x1522 +x1522 = x1521 +x1521 = x1520 +x1520 = x1519 +x1519 = x1518 +x1518 = x1517 +x1517 = x1516 +x1516 = x1515 +x1515 = x1514 +x1514 = x1513 +x1513 = x1512 +x1512 = x1511 +x1511 = x1510 +x1510 = x1509 +x1509 = x1508 +x1508 = x1507 +x1507 = x1506 +x1506 = x1505 +x1505 = x1504 +x1504 = x1503 +x1503 = x1502 +x1502 = x1501 +x1501 = x1500 +x1500 = x1499 +x1499 = x1498 +x1498 = x1497 +x1497 = x1496 +x1496 = x1495 +x1495 = x1494 +x1494 = x1493 +x1493 = x1492 +x1492 = x1491 +x1491 = x1490 +x1490 = x1489 +x1489 = x1488 +x1488 = x1487 +x1487 = x1486 +x1486 = x1485 +x1485 = x1484 +x1484 = x1483 +x1483 = x1482 +x1482 = x1481 +x1481 = x1480 +x1480 = x1479 +x1479 = x1478 +x1478 = x1477 +x1477 = x1476 +x1476 = x1475 +x1475 = x1474 +x1474 = x1473 +x1473 = x1472 +x1472 = x1471 +x1471 = x1470 +x1470 = x1469 +x1469 = x1468 +x1468 = x1467 +x1467 = x1466 +x1466 = x1465 +x1465 = x1464 +x1464 = x1463 +x1463 = x1462 +x1462 = x1461 +x1461 = x1460 +x1460 = x1459 +x1459 = x1458 +x1458 = x1457 +x1457 = x1456 +x1456 = x1455 +x1455 = x1454 +x1454 = x1453 +x1453 = x1452 +x1452 = x1451 +x1451 = x1450 +x1450 = x1449 +x1449 = x1448 +x1448 = x1447 +x1447 = x1446 +x1446 = x1445 +x1445 = x1444 +x1444 = x1443 +x1443 = x1442 +x1442 = x1441 +x1441 = x1440 +x1440 = x1439 +x1439 = x1438 +x1438 = x1437 +x1437 = x1436 +x1436 = x1435 +x1435 = x1434 +x1434 = x1433 +x1433 = x1432 +x1432 = x1431 +x1431 = x1430 +x1430 = x1429 +x1429 = x1428 +x1428 = x1427 +x1427 = x1426 +x1426 = x1425 +x1425 = x1424 +x1424 = x1423 +x1423 = x1422 +x1422 = x1421 +x1421 = x1420 +x1420 = x1419 +x1419 = x1418 +x1418 = x1417 +x1417 = x1416 +x1416 = x1415 +x1415 = x1414 +x1414 = x1413 +x1413 = x1412 +x1412 = x1411 +x1411 = x1410 +x1410 = x1409 +x1409 = x1408 +x1408 = x1407 +x1407 = x1406 +x1406 = x1405 +x1405 = x1404 +x1404 = x1403 +x1403 = x1402 +x1402 = x1401 +x1401 = x1400 +x1400 = x1399 +x1399 = x1398 +x1398 = x1397 +x1397 = x1396 +x1396 = x1395 +x1395 = x1394 +x1394 = x1393 +x1393 = x1392 +x1392 = x1391 +x1391 = x1390 +x1390 = x1389 +x1389 = x1388 +x1388 = x1387 +x1387 = x1386 +x1386 = x1385 +x1385 = x1384 +x1384 = x1383 +x1383 = x1382 +x1382 = x1381 +x1381 = x1380 +x1380 = x1379 +x1379 = x1378 +x1378 = x1377 +x1377 = x1376 +x1376 = x1375 +x1375 = x1374 +x1374 = x1373 +x1373 = x1372 +x1372 = x1371 +x1371 = x1370 +x1370 = x1369 +x1369 = x1368 +x1368 = x1367 +x1367 = x1366 +x1366 = x1365 +x1365 = x1364 +x1364 = x1363 +x1363 = x1362 +x1362 = x1361 +x1361 = x1360 +x1360 = x1359 +x1359 = x1358 +x1358 = x1357 +x1357 = x1356 +x1356 = x1355 +x1355 = x1354 +x1354 = x1353 +x1353 = x1352 +x1352 = x1351 +x1351 = x1350 +x1350 = x1349 +x1349 = x1348 +x1348 = x1347 +x1347 = x1346 +x1346 = x1345 +x1345 = x1344 +x1344 = x1343 +x1343 = x1342 +x1342 = x1341 +x1341 = x1340 +x1340 = x1339 +x1339 = x1338 +x1338 = x1337 +x1337 = x1336 +x1336 = x1335 +x1335 = x1334 +x1334 = x1333 +x1333 = x1332 +x1332 = x1331 +x1331 = x1330 +x1330 = x1329 +x1329 = x1328 +x1328 = x1327 +x1327 = x1326 +x1326 = x1325 +x1325 = x1324 +x1324 = x1323 +x1323 = x1322 +x1322 = x1321 +x1321 = x1320 +x1320 = x1319 +x1319 = x1318 +x1318 = x1317 +x1317 = x1316 +x1316 = x1315 +x1315 = x1314 +x1314 = x1313 +x1313 = x1312 +x1312 = x1311 +x1311 = x1310 +x1310 = x1309 +x1309 = x1308 +x1308 = x1307 +x1307 = x1306 +x1306 = x1305 +x1305 = x1304 +x1304 = x1303 +x1303 = x1302 +x1302 = x1301 +x1301 = x1300 +x1300 = x1299 +x1299 = x1298 +x1298 = x1297 +x1297 = x1296 +x1296 = x1295 +x1295 = x1294 +x1294 = x1293 +x1293 = x1292 +x1292 = x1291 +x1291 = x1290 +x1290 = x1289 +x1289 = x1288 +x1288 = x1287 +x1287 = x1286 +x1286 = x1285 +x1285 = x1284 +x1284 = x1283 +x1283 = x1282 +x1282 = x1281 +x1281 = x1280 +x1280 = x1279 +x1279 = x1278 +x1278 = x1277 +x1277 = x1276 +x1276 = x1275 +x1275 = x1274 +x1274 = x1273 +x1273 = x1272 +x1272 = x1271 +x1271 = x1270 +x1270 = x1269 +x1269 = x1268 +x1268 = x1267 +x1267 = x1266 +x1266 = x1265 +x1265 = x1264 +x1264 = x1263 +x1263 = x1262 +x1262 = x1261 +x1261 = x1260 +x1260 = x1259 +x1259 = x1258 +x1258 = x1257 +x1257 = x1256 +x1256 = x1255 +x1255 = x1254 +x1254 = x1253 +x1253 = x1252 +x1252 = x1251 +x1251 = x1250 +x1250 = x1249 +x1249 = x1248 +x1248 = x1247 +x1247 = x1246 +x1246 = x1245 +x1245 = x1244 +x1244 = x1243 +x1243 = x1242 +x1242 = x1241 +x1241 = x1240 +x1240 = x1239 +x1239 = x1238 +x1238 = x1237 +x1237 = x1236 +x1236 = x1235 +x1235 = x1234 +x1234 = x1233 +x1233 = x1232 +x1232 = x1231 +x1231 = x1230 +x1230 = x1229 +x1229 = x1228 +x1228 = x1227 +x1227 = x1226 +x1226 = x1225 +x1225 = x1224 +x1224 = x1223 +x1223 = x1222 +x1222 = x1221 +x1221 = x1220 +x1220 = x1219 +x1219 = x1218 +x1218 = x1217 +x1217 = x1216 +x1216 = x1215 +x1215 = x1214 +x1214 = x1213 +x1213 = x1212 +x1212 = x1211 +x1211 = x1210 +x1210 = x1209 +x1209 = x1208 +x1208 = x1207 +x1207 = x1206 +x1206 = x1205 +x1205 = x1204 +x1204 = x1203 +x1203 = x1202 +x1202 = x1201 +x1201 = x1200 +x1200 = x1199 +x1199 = x1198 +x1198 = x1197 +x1197 = x1196 +x1196 = x1195 +x1195 = x1194 +x1194 = x1193 +x1193 = x1192 +x1192 = x1191 +x1191 = x1190 +x1190 = x1189 +x1189 = x1188 +x1188 = x1187 +x1187 = x1186 +x1186 = x1185 +x1185 = x1184 +x1184 = x1183 +x1183 = x1182 +x1182 = x1181 +x1181 = x1180 +x1180 = x1179 +x1179 = x1178 +x1178 = x1177 +x1177 = x1176 +x1176 = x1175 +x1175 = x1174 +x1174 = x1173 +x1173 = x1172 +x1172 = x1171 +x1171 = x1170 +x1170 = x1169 +x1169 = x1168 +x1168 = x1167 +x1167 = x1166 +x1166 = x1165 +x1165 = x1164 +x1164 = x1163 +x1163 = x1162 +x1162 = x1161 +x1161 = x1160 +x1160 = x1159 +x1159 = x1158 +x1158 = x1157 +x1157 = x1156 +x1156 = x1155 +x1155 = x1154 +x1154 = x1153 +x1153 = x1152 +x1152 = x1151 +x1151 = x1150 +x1150 = x1149 +x1149 = x1148 +x1148 = x1147 +x1147 = x1146 +x1146 = x1145 +x1145 = x1144 +x1144 = x1143 +x1143 = x1142 +x1142 = x1141 +x1141 = x1140 +x1140 = x1139 +x1139 = x1138 +x1138 = x1137 +x1137 = x1136 +x1136 = x1135 +x1135 = x1134 +x1134 = x1133 +x1133 = x1132 +x1132 = x1131 +x1131 = x1130 +x1130 = x1129 +x1129 = x1128 +x1128 = x1127 +x1127 = x1126 +x1126 = x1125 +x1125 = x1124 +x1124 = x1123 +x1123 = x1122 +x1122 = x1121 +x1121 = x1120 +x1120 = x1119 +x1119 = x1118 +x1118 = x1117 +x1117 = x1116 +x1116 = x1115 +x1115 = x1114 +x1114 = x1113 +x1113 = x1112 +x1112 = x1111 +x1111 = x1110 +x1110 = x1109 +x1109 = x1108 +x1108 = x1107 +x1107 = x1106 +x1106 = x1105 +x1105 = x1104 +x1104 = x1103 +x1103 = x1102 +x1102 = x1101 +x1101 = x1100 +x1100 = x1099 +x1099 = x1098 +x1098 = x1097 +x1097 = x1096 +x1096 = x1095 +x1095 = x1094 +x1094 = x1093 +x1093 = x1092 +x1092 = x1091 +x1091 = x1090 +x1090 = x1089 +x1089 = x1088 +x1088 = x1087 +x1087 = x1086 +x1086 = x1085 +x1085 = x1084 +x1084 = x1083 +x1083 = x1082 +x1082 = x1081 +x1081 = x1080 +x1080 = x1079 +x1079 = x1078 +x1078 = x1077 +x1077 = x1076 +x1076 = x1075 +x1075 = x1074 +x1074 = x1073 +x1073 = x1072 +x1072 = x1071 +x1071 = x1070 +x1070 = x1069 +x1069 = x1068 +x1068 = x1067 +x1067 = x1066 +x1066 = x1065 +x1065 = x1064 +x1064 = x1063 +x1063 = x1062 +x1062 = x1061 +x1061 = x1060 +x1060 = x1059 +x1059 = x1058 +x1058 = x1057 +x1057 = x1056 +x1056 = x1055 +x1055 = x1054 +x1054 = x1053 +x1053 = x1052 +x1052 = x1051 +x1051 = x1050 +x1050 = x1049 +x1049 = x1048 +x1048 = x1047 +x1047 = x1046 +x1046 = x1045 +x1045 = x1044 +x1044 = x1043 +x1043 = x1042 +x1042 = x1041 +x1041 = x1040 +x1040 = x1039 +x1039 = x1038 +x1038 = x1037 +x1037 = x1036 +x1036 = x1035 +x1035 = x1034 +x1034 = x1033 +x1033 = x1032 +x1032 = x1031 +x1031 = x1030 +x1030 = x1029 +x1029 = x1028 +x1028 = x1027 +x1027 = x1026 +x1026 = x1025 +x1025 = x1024 +x1024 = x1023 +x1023 = x1022 +x1022 = x1021 +x1021 = x1020 +x1020 = x1019 +x1019 = x1018 +x1018 = x1017 +x1017 = x1016 +x1016 = x1015 +x1015 = x1014 +x1014 = x1013 +x1013 = x1012 +x1012 = x1011 +x1011 = x1010 +x1010 = x1009 +x1009 = x1008 +x1008 = x1007 +x1007 = x1006 +x1006 = x1005 +x1005 = x1004 +x1004 = x1003 +x1003 = x1002 +x1002 = x1001 +x1001 = x1000 +x1000 = x999 +x999 = x998 +x998 = x997 +x997 = x996 +x996 = x995 +x995 = x994 +x994 = x993 +x993 = x992 +x992 = x991 +x991 = x990 +x990 = x989 +x989 = x988 +x988 = x987 +x987 = x986 +x986 = x985 +x985 = x984 +x984 = x983 +x983 = x982 +x982 = x981 +x981 = x980 +x980 = x979 +x979 = x978 +x978 = x977 +x977 = x976 +x976 = x975 +x975 = x974 +x974 = x973 +x973 = x972 +x972 = x971 +x971 = x970 +x970 = x969 +x969 = x968 +x968 = x967 +x967 = x966 +x966 = x965 +x965 = x964 +x964 = x963 +x963 = x962 +x962 = x961 +x961 = x960 +x960 = x959 +x959 = x958 +x958 = x957 +x957 = x956 +x956 = x955 +x955 = x954 +x954 = x953 +x953 = x952 +x952 = x951 +x951 = x950 +x950 = x949 +x949 = x948 +x948 = x947 +x947 = x946 +x946 = x945 +x945 = x944 +x944 = x943 +x943 = x942 +x942 = x941 +x941 = x940 +x940 = x939 +x939 = x938 +x938 = x937 +x937 = x936 +x936 = x935 +x935 = x934 +x934 = x933 +x933 = x932 +x932 = x931 +x931 = x930 +x930 = x929 +x929 = x928 +x928 = x927 +x927 = x926 +x926 = x925 +x925 = x924 +x924 = x923 +x923 = x922 +x922 = x921 +x921 = x920 +x920 = x919 +x919 = x918 +x918 = x917 +x917 = x916 +x916 = x915 +x915 = x914 +x914 = x913 +x913 = x912 +x912 = x911 +x911 = x910 +x910 = x909 +x909 = x908 +x908 = x907 +x907 = x906 +x906 = x905 +x905 = x904 +x904 = x903 +x903 = x902 +x902 = x901 +x901 = x900 +x900 = x899 +x899 = x898 +x898 = x897 +x897 = x896 +x896 = x895 +x895 = x894 +x894 = x893 +x893 = x892 +x892 = x891 +x891 = x890 +x890 = x889 +x889 = x888 +x888 = x887 +x887 = x886 +x886 = x885 +x885 = x884 +x884 = x883 +x883 = x882 +x882 = x881 +x881 = x880 +x880 = x879 +x879 = x878 +x878 = x877 +x877 = x876 +x876 = x875 +x875 = x874 +x874 = x873 +x873 = x872 +x872 = x871 +x871 = x870 +x870 = x869 +x869 = x868 +x868 = x867 +x867 = x866 +x866 = x865 +x865 = x864 +x864 = x863 +x863 = x862 +x862 = x861 +x861 = x860 +x860 = x859 +x859 = x858 +x858 = x857 +x857 = x856 +x856 = x855 +x855 = x854 +x854 = x853 +x853 = x852 +x852 = x851 +x851 = x850 +x850 = x849 +x849 = x848 +x848 = x847 +x847 = x846 +x846 = x845 +x845 = x844 +x844 = x843 +x843 = x842 +x842 = x841 +x841 = x840 +x840 = x839 +x839 = x838 +x838 = x837 +x837 = x836 +x836 = x835 +x835 = x834 +x834 = x833 +x833 = x832 +x832 = x831 +x831 = x830 +x830 = x829 +x829 = x828 +x828 = x827 +x827 = x826 +x826 = x825 +x825 = x824 +x824 = x823 +x823 = x822 +x822 = x821 +x821 = x820 +x820 = x819 +x819 = x818 +x818 = x817 +x817 = x816 +x816 = x815 +x815 = x814 +x814 = x813 +x813 = x812 +x812 = x811 +x811 = x810 +x810 = x809 +x809 = x808 +x808 = x807 +x807 = x806 +x806 = x805 +x805 = x804 +x804 = x803 +x803 = x802 +x802 = x801 +x801 = x800 +x800 = x799 +x799 = x798 +x798 = x797 +x797 = x796 +x796 = x795 +x795 = x794 +x794 = x793 +x793 = x792 +x792 = x791 +x791 = x790 +x790 = x789 +x789 = x788 +x788 = x787 +x787 = x786 +x786 = x785 +x785 = x784 +x784 = x783 +x783 = x782 +x782 = x781 +x781 = x780 +x780 = x779 +x779 = x778 +x778 = x777 +x777 = x776 +x776 = x775 +x775 = x774 +x774 = x773 +x773 = x772 +x772 = x771 +x771 = x770 +x770 = x769 +x769 = x768 +x768 = x767 +x767 = x766 +x766 = x765 +x765 = x764 +x764 = x763 +x763 = x762 +x762 = x761 +x761 = x760 +x760 = x759 +x759 = x758 +x758 = x757 +x757 = x756 +x756 = x755 +x755 = x754 +x754 = x753 +x753 = x752 +x752 = x751 +x751 = x750 +x750 = x749 +x749 = x748 +x748 = x747 +x747 = x746 +x746 = x745 +x745 = x744 +x744 = x743 +x743 = x742 +x742 = x741 +x741 = x740 +x740 = x739 +x739 = x738 +x738 = x737 +x737 = x736 +x736 = x735 +x735 = x734 +x734 = x733 +x733 = x732 +x732 = x731 +x731 = x730 +x730 = x729 +x729 = x728 +x728 = x727 +x727 = x726 +x726 = x725 +x725 = x724 +x724 = x723 +x723 = x722 +x722 = x721 +x721 = x720 +x720 = x719 +x719 = x718 +x718 = x717 +x717 = x716 +x716 = x715 +x715 = x714 +x714 = x713 +x713 = x712 +x712 = x711 +x711 = x710 +x710 = x709 +x709 = x708 +x708 = x707 +x707 = x706 +x706 = x705 +x705 = x704 +x704 = x703 +x703 = x702 +x702 = x701 +x701 = x700 +x700 = x699 +x699 = x698 +x698 = x697 +x697 = x696 +x696 = x695 +x695 = x694 +x694 = x693 +x693 = x692 +x692 = x691 +x691 = x690 +x690 = x689 +x689 = x688 +x688 = x687 +x687 = x686 +x686 = x685 +x685 = x684 +x684 = x683 +x683 = x682 +x682 = x681 +x681 = x680 +x680 = x679 +x679 = x678 +x678 = x677 +x677 = x676 +x676 = x675 +x675 = x674 +x674 = x673 +x673 = x672 +x672 = x671 +x671 = x670 +x670 = x669 +x669 = x668 +x668 = x667 +x667 = x666 +x666 = x665 +x665 = x664 +x664 = x663 +x663 = x662 +x662 = x661 +x661 = x660 +x660 = x659 +x659 = x658 +x658 = x657 +x657 = x656 +x656 = x655 +x655 = x654 +x654 = x653 +x653 = x652 +x652 = x651 +x651 = x650 +x650 = x649 +x649 = x648 +x648 = x647 +x647 = x646 +x646 = x645 +x645 = x644 +x644 = x643 +x643 = x642 +x642 = x641 +x641 = x640 +x640 = x639 +x639 = x638 +x638 = x637 +x637 = x636 +x636 = x635 +x635 = x634 +x634 = x633 +x633 = x632 +x632 = x631 +x631 = x630 +x630 = x629 +x629 = x628 +x628 = x627 +x627 = x626 +x626 = x625 +x625 = x624 +x624 = x623 +x623 = x622 +x622 = x621 +x621 = x620 +x620 = x619 +x619 = x618 +x618 = x617 +x617 = x616 +x616 = x615 +x615 = x614 +x614 = x613 +x613 = x612 +x612 = x611 +x611 = x610 +x610 = x609 +x609 = x608 +x608 = x607 +x607 = x606 +x606 = x605 +x605 = x604 +x604 = x603 +x603 = x602 +x602 = x601 +x601 = x600 +x600 = x599 +x599 = x598 +x598 = x597 +x597 = x596 +x596 = x595 +x595 = x594 +x594 = x593 +x593 = x592 +x592 = x591 +x591 = x590 +x590 = x589 +x589 = x588 +x588 = x587 +x587 = x586 +x586 = x585 +x585 = x584 +x584 = x583 +x583 = x582 +x582 = x581 +x581 = x580 +x580 = x579 +x579 = x578 +x578 = x577 +x577 = x576 +x576 = x575 +x575 = x574 +x574 = x573 +x573 = x572 +x572 = x571 +x571 = x570 +x570 = x569 +x569 = x568 +x568 = x567 +x567 = x566 +x566 = x565 +x565 = x564 +x564 = x563 +x563 = x562 +x562 = x561 +x561 = x560 +x560 = x559 +x559 = x558 +x558 = x557 +x557 = x556 +x556 = x555 +x555 = x554 +x554 = x553 +x553 = x552 +x552 = x551 +x551 = x550 +x550 = x549 +x549 = x548 +x548 = x547 +x547 = x546 +x546 = x545 +x545 = x544 +x544 = x543 +x543 = x542 +x542 = x541 +x541 = x540 +x540 = x539 +x539 = x538 +x538 = x537 +x537 = x536 +x536 = x535 +x535 = x534 +x534 = x533 +x533 = x532 +x532 = x531 +x531 = x530 +x530 = x529 +x529 = x528 +x528 = x527 +x527 = x526 +x526 = x525 +x525 = x524 +x524 = x523 +x523 = x522 +x522 = x521 +x521 = x520 +x520 = x519 +x519 = x518 +x518 = x517 +x517 = x516 +x516 = x515 +x515 = x514 +x514 = x513 +x513 = x512 +x512 = x511 +x511 = x510 +x510 = x509 +x509 = x508 +x508 = x507 +x507 = x506 +x506 = x505 +x505 = x504 +x504 = x503 +x503 = x502 +x502 = x501 +x501 = x500 +x500 = x499 +x499 = x498 +x498 = x497 +x497 = x496 +x496 = x495 +x495 = x494 +x494 = x493 +x493 = x492 +x492 = x491 +x491 = x490 +x490 = x489 +x489 = x488 +x488 = x487 +x487 = x486 +x486 = x485 +x485 = x484 +x484 = x483 +x483 = x482 +x482 = x481 +x481 = x480 +x480 = x479 +x479 = x478 +x478 = x477 +x477 = x476 +x476 = x475 +x475 = x474 +x474 = x473 +x473 = x472 +x472 = x471 +x471 = x470 +x470 = x469 +x469 = x468 +x468 = x467 +x467 = x466 +x466 = x465 +x465 = x464 +x464 = x463 +x463 = x462 +x462 = x461 +x461 = x460 +x460 = x459 +x459 = x458 +x458 = x457 +x457 = x456 +x456 = x455 +x455 = x454 +x454 = x453 +x453 = x452 +x452 = x451 +x451 = x450 +x450 = x449 +x449 = x448 +x448 = x447 +x447 = x446 +x446 = x445 +x445 = x444 +x444 = x443 +x443 = x442 +x442 = x441 +x441 = x440 +x440 = x439 +x439 = x438 +x438 = x437 +x437 = x436 +x436 = x435 +x435 = x434 +x434 = x433 +x433 = x432 +x432 = x431 +x431 = x430 +x430 = x429 +x429 = x428 +x428 = x427 +x427 = x426 +x426 = x425 +x425 = x424 +x424 = x423 +x423 = x422 +x422 = x421 +x421 = x420 +x420 = x419 +x419 = x418 +x418 = x417 +x417 = x416 +x416 = x415 +x415 = x414 +x414 = x413 +x413 = x412 +x412 = x411 +x411 = x410 +x410 = x409 +x409 = x408 +x408 = x407 +x407 = x406 +x406 = x405 +x405 = x404 +x404 = x403 +x403 = x402 +x402 = x401 +x401 = x400 +x400 = x399 +x399 = x398 +x398 = x397 +x397 = x396 +x396 = x395 +x395 = x394 +x394 = x393 +x393 = x392 +x392 = x391 +x391 = x390 +x390 = x389 +x389 = x388 +x388 = x387 +x387 = x386 +x386 = x385 +x385 = x384 +x384 = x383 +x383 = x382 +x382 = x381 +x381 = x380 +x380 = x379 +x379 = x378 +x378 = x377 +x377 = x376 +x376 = x375 +x375 = x374 +x374 = x373 +x373 = x372 +x372 = x371 +x371 = x370 +x370 = x369 +x369 = x368 +x368 = x367 +x367 = x366 +x366 = x365 +x365 = x364 +x364 = x363 +x363 = x362 +x362 = x361 +x361 = x360 +x360 = x359 +x359 = x358 +x358 = x357 +x357 = x356 +x356 = x355 +x355 = x354 +x354 = x353 +x353 = x352 +x352 = x351 +x351 = x350 +x350 = x349 +x349 = x348 +x348 = x347 +x347 = x346 +x346 = x345 +x345 = x344 +x344 = x343 +x343 = x342 +x342 = x341 +x341 = x340 +x340 = x339 +x339 = x338 +x338 = x337 +x337 = x336 +x336 = x335 +x335 = x334 +x334 = x333 +x333 = x332 +x332 = x331 +x331 = x330 +x330 = x329 +x329 = x328 +x328 = x327 +x327 = x326 +x326 = x325 +x325 = x324 +x324 = x323 +x323 = x322 +x322 = x321 +x321 = x320 +x320 = x319 +x319 = x318 +x318 = x317 +x317 = x316 +x316 = x315 +x315 = x314 +x314 = x313 +x313 = x312 +x312 = x311 +x311 = x310 +x310 = x309 +x309 = x308 +x308 = x307 +x307 = x306 +x306 = x305 +x305 = x304 +x304 = x303 +x303 = x302 +x302 = x301 +x301 = x300 +x300 = x299 +x299 = x298 +x298 = x297 +x297 = x296 +x296 = x295 +x295 = x294 +x294 = x293 +x293 = x292 +x292 = x291 +x291 = x290 +x290 = x289 +x289 = x288 +x288 = x287 +x287 = x286 +x286 = x285 +x285 = x284 +x284 = x283 +x283 = x282 +x282 = x281 +x281 = x280 +x280 = x279 +x279 = x278 +x278 = x277 +x277 = x276 +x276 = x275 +x275 = x274 +x274 = x273 +x273 = x272 +x272 = x271 +x271 = x270 +x270 = x269 +x269 = x268 +x268 = x267 +x267 = x266 +x266 = x265 +x265 = x264 +x264 = x263 +x263 = x262 +x262 = x261 +x261 = x260 +x260 = x259 +x259 = x258 +x258 = x257 +x257 = x256 +x256 = x255 +x255 = x254 +x254 = x253 +x253 = x252 +x252 = x251 +x251 = x250 +x250 = x249 +x249 = x248 +x248 = x247 +x247 = x246 +x246 = x245 +x245 = x244 +x244 = x243 +x243 = x242 +x242 = x241 +x241 = x240 +x240 = x239 +x239 = x238 +x238 = x237 +x237 = x236 +x236 = x235 +x235 = x234 +x234 = x233 +x233 = x232 +x232 = x231 +x231 = x230 +x230 = x229 +x229 = x228 +x228 = x227 +x227 = x226 +x226 = x225 +x225 = x224 +x224 = x223 +x223 = x222 +x222 = x221 +x221 = x220 +x220 = x219 +x219 = x218 +x218 = x217 +x217 = x216 +x216 = x215 +x215 = x214 +x214 = x213 +x213 = x212 +x212 = x211 +x211 = x210 +x210 = x209 +x209 = x208 +x208 = x207 +x207 = x206 +x206 = x205 +x205 = x204 +x204 = x203 +x203 = x202 +x202 = x201 +x201 = x200 +x200 = x199 +x199 = x198 +x198 = x197 +x197 = x196 +x196 = x195 +x195 = x194 +x194 = x193 +x193 = x192 +x192 = x191 +x191 = x190 +x190 = x189 +x189 = x188 +x188 = x187 +x187 = x186 +x186 = x185 +x185 = x184 +x184 = x183 +x183 = x182 +x182 = x181 +x181 = x180 +x180 = x179 +x179 = x178 +x178 = x177 +x177 = x176 +x176 = x175 +x175 = x174 +x174 = x173 +x173 = x172 +x172 = x171 +x171 = x170 +x170 = x169 +x169 = x168 +x168 = x167 +x167 = x166 +x166 = x165 +x165 = x164 +x164 = x163 +x163 = x162 +x162 = x161 +x161 = x160 +x160 = x159 +x159 = x158 +x158 = x157 +x157 = x156 +x156 = x155 +x155 = x154 +x154 = x153 +x153 = x152 +x152 = x151 +x151 = x150 +x150 = x149 +x149 = x148 +x148 = x147 +x147 = x146 +x146 = x145 +x145 = x144 +x144 = x143 +x143 = x142 +x142 = x141 +x141 = x140 +x140 = x139 +x139 = x138 +x138 = x137 +x137 = x136 +x136 = x135 +x135 = x134 +x134 = x133 +x133 = x132 +x132 = x131 +x131 = x130 +x130 = x129 +x129 = x128 +x128 = x127 +x127 = x126 +x126 = x125 +x125 = x124 +x124 = x123 +x123 = x122 +x122 = x121 +x121 = x120 +x120 = x119 +x119 = x118 +x118 = x117 +x117 = x116 +x116 = x115 +x115 = x114 +x114 = x113 +x113 = x112 +x112 = x111 +x111 = x110 +x110 = x109 +x109 = x108 +x108 = x107 +x107 = x106 +x106 = x105 +x105 = x104 +x104 = x103 +x103 = x102 +x102 = x101 +x101 = x100 +x100 = x99 +x99 = x98 +x98 = x97 +x97 = x96 +x96 = x95 +x95 = x94 +x94 = x93 +x93 = x92 +x92 = x91 +x91 = x90 +x90 = x89 +x89 = x88 +x88 = x87 +x87 = x86 +x86 = x85 +x85 = x84 +x84 = x83 +x83 = x82 +x82 = x81 +x81 = x80 +x80 = x79 +x79 = x78 +x78 = x77 +x77 = x76 +x76 = x75 +x75 = x74 +x74 = x73 +x73 = x72 +x72 = x71 +x71 = x70 +x70 = x69 +x69 = x68 +x68 = x67 +x67 = x66 +x66 = x65 +x65 = x64 +x64 = x63 +x63 = x62 +x62 = x61 +x61 = x60 +x60 = x59 +x59 = x58 +x58 = x57 +x57 = x56 +x56 = x55 +x55 = x54 +x54 = x53 +x53 = x52 +x52 = x51 +x51 = x50 +x50 = x49 +x49 = x48 +x48 = x47 +x47 = x46 +x46 = x45 +x45 = x44 +x44 = x43 +x43 = x42 +x42 = x41 +x41 = x40 +x40 = x39 +x39 = x38 +x38 = x37 +x37 = x36 +x36 = x35 +x35 = x34 +x34 = x33 +x33 = x32 +x32 = x31 +x31 = x30 +x30 = x29 +x29 = x28 +x28 = x27 +x27 = x26 +x26 = x25 +x25 = x24 +x24 = x23 +x23 = x22 +x22 = x21 +x21 = x20 +x20 = x19 +x19 = x18 +x18 = x17 +x17 = x16 +x16 = x15 +x15 = x14 +x14 = x13 +x13 = x12 +x12 = x11 +x11 = x10 +x10 = x9 +x9 = x8 +x8 = x7 +x7 = x6 +x6 = x5 +x5 = x4 +x4 = x3 +x3 = x2 +x2 = x1 +x1 = x0 +x0 = 0 diff --git a/impl/test/run b/impl/test/run index b030827..0c1886d 100644 --- a/impl/test/run +++ b/impl/test/run @@ -7,7 +7,7 @@ FAILED=0 echo "Testing binary: $1 in directory $DIR" while [ -f "$DIR/$NUM.eqns" ] do - OUTPUT=$($1 "$DIR/$NUM.eqns" smart smart) + OUTPUT=$($1 "$DIR/$NUM.eqns") DIFF=$(echo "$OUTPUT" | diff - "$DIR/$NUM.soln") if [ ! -z "$DIFF" ]; then echo "==================" -- cgit v1.2.3