diff --git a/.gitignore b/.gitignore index a68b971cdb5e..8b3186a6eea4 100644 --- a/.gitignore +++ b/.gitignore @@ -35,6 +35,7 @@ # Explicit files to ignore (only matches one). #==============================================================================# # Various tag programs +tags /tags /TAGS /GPATH diff --git a/mlir/examples/dsp/SimpleBlocks/include/toy/AST.h b/mlir/examples/dsp/SimpleBlocks/include/toy/AST.h index c13b287bdd2f..0c76665e5d47 100644 --- a/mlir/examples/dsp/SimpleBlocks/include/toy/AST.h +++ b/mlir/examples/dsp/SimpleBlocks/include/toy/AST.h @@ -37,7 +37,8 @@ class ExprAST { enum ExprASTKind { Expr_VarDecl, Expr_Return, - Expr_Num, + Expr_Int, + Expr_Double, Expr_Literal, Expr_Var, Expr_BinOp, @@ -61,18 +62,28 @@ class ExprAST { /// A block-list of expressions. using ExprASTList = std::vector>; -/// Expression class for numeric literals like "1.0". -class NumberExprAST : public ExprAST { - double val; +class IntExprAST : public ExprAST { + int val; public: - NumberExprAST(Location loc, double val) - : ExprAST(Expr_Num, std::move(loc)), val(val) {} + IntExprAST(Location loc, int64_t val) + : ExprAST(Expr_Int, std::move(loc)), val(val) {} + + int64_t getInt() { return val; } - double getValue() { return val; } + static bool classof(const ExprAST *c) { return c->getKind() == Expr_Int; } +}; - /// LLVM style RTTI - static bool classof(const ExprAST *c) { return c->getKind() == Expr_Num; } +class DoubleExprAST : public ExprAST { + double val; + +public: + DoubleExprAST(Location loc, double val) + : ExprAST(Expr_Double, std::move(loc)), val(val) {} + + double getDouble() { return val; } + + static bool classof(const ExprAST *c) { return c->getKind() == Expr_Double; } }; /// Expression class for a literal value. diff --git a/mlir/examples/dsp/SimpleBlocks/include/toy/Lexer.h b/mlir/examples/dsp/SimpleBlocks/include/toy/Lexer.h index d6bc5443fb30..5e5c4d48d57f 100644 --- a/mlir/examples/dsp/SimpleBlocks/include/toy/Lexer.h +++ b/mlir/examples/dsp/SimpleBlocks/include/toy/Lexer.h @@ -46,7 +46,9 @@ enum Token : int { // primary tok_identifier = -5, - tok_number = -6, + + tok_int = -6, + tok_double = -7, }; /// The Lexer is an abstract base class providing all the facilities that the @@ -83,10 +85,14 @@ class Lexer { return identifierStr; } - /// Return the current number (prereq: getCurToken() == tok_number) - double getValue() { - assert(curTok == tok_number); - return numVal; + int64_t getIntValue() { + assert(curTok == tok_int); + return numInt; + } + + double getDoubleValue() { + assert(curTok == tok_double); + return numDouble; } /// Return the location for the beginning of the current token. @@ -148,16 +154,27 @@ class Lexer { return tok_identifier; } - // Number: [0-9.]+ - if (isdigit(lastChar) || lastChar == '.') { - std::string numStr; - do { - numStr += lastChar; - lastChar = Token(getNextChar()); - } while (isdigit(lastChar) || lastChar == '.'); - numVal = strtod(numStr.c_str(), nullptr); - return tok_number; + if(isdigit(lastChar)) { + std::string numStr; + bool isDouble = false; + + do { + if(lastChar == '.') isDouble = true; + + numStr += lastChar; + lastChar = Token(getNextChar()); + } while(isdigit(lastChar) || lastChar == '.'); + + if(isDouble) { + numDouble = strtod(numStr.c_str(), nullptr); + return tok_double; + } + else { + char ** p_end; + numInt = strtol(numStr.c_str(), p_end, 10); + return tok_int; + } } if (lastChar == '#') { @@ -189,8 +206,8 @@ class Lexer { /// If the current Token is an identifier, this string contains the value. std::string identifierStr; - /// If the current Token is a number, this contains the value. - double numVal = 0; + int64_t numInt = 0; + double numDouble = 0; /// The last value returned by getNextChar(). We need to keep it around as we /// always need to read ahead one character to decide when to end a token and diff --git a/mlir/examples/dsp/SimpleBlocks/include/toy/Ops.td b/mlir/examples/dsp/SimpleBlocks/include/toy/Ops.td index 6d714f9832b6..959f6f874102 100644 --- a/mlir/examples/dsp/SimpleBlocks/include/toy/Ops.td +++ b/mlir/examples/dsp/SimpleBlocks/include/toy/Ops.td @@ -83,9 +83,42 @@ def ConstantOp : Dsp_Op<"constant", [Pure]> { // Build a constant with a given constant floating-point value. OpBuilder<(ins "double":$value)>, + ]; - // Build a constant with a given constant floating-point value. - // OpBuilder<(ins "int":$value)> + // Indicate that additional verification for this operation is necessary. + let hasVerifier = 1; +} + +//===----------------------------------------------------------------------===// +// IntegerConstantOp +//===----------------------------------------------------------------------===// + +def IntegerConstantOp : Dsp_Op<"integer_constant", [Pure]> { + let summary = "integer constant"; + let description = [{ + Integer Constant operation turns a literal into an SSA value. The data is attached + to the operation as an attribute. For example: + + ```mlir + %0 = dsp.integer_constant dense<[[1, 2, 30], [4, 5, 6]]> + : tensor<2x3xi64> + ``` + }]; + + // expect an integer constant tensor value of type I64 + let arguments = (ins I64ElementsAttr:$value); + + let results = (outs I64Tensor); + + let hasCustomAssemblyFormat = 1; + + let builders = [ + OpBuilder<(ins "DenseIntElementsAttr":$value), [{ + build($_builder, $_state, value.getType(), value); + }]>, + + // Build a constant with a given constant int64 value. + OpBuilder<(ins "int64_t":$value)>, ]; // Indicate that additional verification for this operation is necessary. @@ -299,7 +332,7 @@ def PrintOp : Dsp_Op<"print"> { // The print operation takes an input tensor to print. // We also allow a F64MemRef to enable interop during partial lowering. - let arguments = (ins AnyTypeOf<[F64Tensor, F64MemRef]>:$input); + let arguments = (ins AnyTypeOf<[F64, I64, F64Tensor, F64MemRef, I64Tensor, I64MemRef]>:$input); let assemblyFormat = "$input attr-dict `:` type($input)"; } diff --git a/mlir/examples/dsp/SimpleBlocks/include/toy/Parser.h b/mlir/examples/dsp/SimpleBlocks/include/toy/Parser.h index 42bd653b156c..866ca2bc276b 100644 --- a/mlir/examples/dsp/SimpleBlocks/include/toy/Parser.h +++ b/mlir/examples/dsp/SimpleBlocks/include/toy/Parser.h @@ -75,14 +75,21 @@ class Parser { return std::make_unique(std::move(loc), std::move(expr)); } - /// Parse a literal number. - /// numberexpr ::= number - std::unique_ptr parseNumberExpr() { - auto loc = lexer.getLastLocation(); - auto result = - std::make_unique(std::move(loc), lexer.getValue()); - lexer.consume(tok_number); - return std::move(result); + + std::unique_ptr parseIntExpr() { + auto loc = lexer.getLastLocation(); + auto result = + std::make_unique(std::move(loc), lexer.getIntValue()); + lexer.consume(tok_int); + return std::move(result); + } + + std::unique_ptr parseDoubleExpr() { + auto loc = lexer.getLastLocation(); + auto result = + std::make_unique(std::move(loc), lexer.getDoubleValue()); + lexer.consume(tok_double); + return std::move(result); } /// Parse a literal array expression. @@ -103,9 +110,17 @@ class Parser { if (!values.back()) return nullptr; // parse error in the nested array. } else { - if (lexer.getCurToken() != tok_number) - return parseError(" or [", "in literal expression"); - values.push_back(parseNumberExpr()); + // test for int and double + //if (lexer.getCurToken() != tok_number) + //return parseError(" or [", "in literal expression"); + //values.push_back(parseNumberExpr()); + + if(lexer.getCurToken() != tok_int && lexer.getCurToken() != tok_double) { + return parseError(" or [", "in literal expression"); + } + + if(lexer.getCurToken() == tok_int) values.push_back(parseIntExpr()); + else if(lexer.getCurToken() == tok_double) values.push_back(parseDoubleExpr()); } // End of this list on ']' @@ -150,6 +165,7 @@ class Parser { "inside literal expression"); } } + return std::make_unique(std::move(loc), std::move(values), std::move(dims)); } @@ -224,8 +240,13 @@ class Parser { return nullptr; case tok_identifier: return parseIdentifierExpr(); - case tok_number: - return parseNumberExpr(); + /* test for int and double */ + //case tok_number: + //return parseNumberExpr(); + case tok_int: + return parseIntExpr(); + case tok_double: + return parseDoubleExpr(); case '(': return parseParenExpr(); case '[': @@ -295,11 +316,20 @@ class Parser { auto type = std::make_unique(); - while (lexer.getCurToken() == tok_number) { - type->shape.push_back(lexer.getValue()); - lexer.getNextToken(); - if (lexer.getCurToken() == ',') + // test for int and double + //while (lexer.getCurToken() == tok_number) { + //type->shape.push_back(lexer.getValue()); + //lexer.getNextToken(); + //if (lexer.getCurToken() == ',') + //lexer.getNextToken(); + //} + + while(lexer.getCurToken() == tok_int || lexer.getCurToken() == tok_double) { + if(lexer.getCurToken() == tok_int) type->shape.push_back(lexer.getIntValue()); + else if(lexer.getCurToken() == tok_double) type->shape.push_back(lexer.getDoubleValue()); lexer.getNextToken(); + + if(lexer.getCurToken() == ',') lexer.getNextToken(); } if (lexer.getCurToken() != '>') diff --git a/mlir/examples/dsp/SimpleBlocks/mlir/Dialect.cpp b/mlir/examples/dsp/SimpleBlocks/mlir/Dialect.cpp index 47f76a2ff96c..12d0421d5477 100644 --- a/mlir/examples/dsp/SimpleBlocks/mlir/Dialect.cpp +++ b/mlir/examples/dsp/SimpleBlocks/mlir/Dialect.cpp @@ -241,6 +241,58 @@ mlir::LogicalResult ConstantOp::verify() { return mlir::success(); } +//===----------------------------------------------------------------------===// +// Integer ConstantOp +//===----------------------------------------------------------------------===// + +void IntegerConstantOp::build(mlir::OpBuilder &builder, mlir::OperationState &state, + int64_t value) { + auto dataType = RankedTensorType::get({}, builder.getI64Type()); + auto dataAttribute = mlir::DenseIntElementsAttr::get(dataType, value); + IntegerConstantOp::build(builder, state, dataType, dataAttribute); +} + +mlir::ParseResult IntegerConstantOp::parse(mlir::OpAsmParser &parser, + mlir::OperationState &result) { + mlir::DenseIntElementsAttr value; + if (parser.parseOptionalAttrDict(result.attributes) || + parser.parseAttribute(value, "value", result.attributes)) + return failure(); + + result.addTypes(value.getType()); + return success(); +} + +void IntegerConstantOp::print(mlir::OpAsmPrinter &printer) { + printer << " "; + printer.printOptionalAttrDict((*this)->getAttrs(), /*elidedAttrs=*/{"value"}); + printer << getValue(); +} + +mlir::LogicalResult IntegerConstantOp::verify() { + auto resultType = llvm::dyn_cast(getResult().getType()); + if (!resultType) + return success(); + + auto attrType = llvm::cast(getValue().getType()); + if (attrType.getRank() != resultType.getRank()) { + return emitOpError("return type must match the one of the attached value " + "attribute: ") + << attrType.getRank() << " != " << resultType.getRank(); + } + + // Check that each of the dimensions match between the two types. + for (int dim = 0, dimE = attrType.getRank(); dim < dimE; ++dim) { + if (attrType.getShape()[dim] != resultType.getShape()[dim]) { + return emitOpError( + "return type shape mismatches its attribute at dimension ") + << dim << ": " << attrType.getShape()[dim] + << " != " << resultType.getShape()[dim]; + } + } + return mlir::success(); +} + //===----------------------------------------------------------------------===// // AddOp //===----------------------------------------------------------------------===// diff --git a/mlir/examples/dsp/SimpleBlocks/mlir/LowerToAffineLoops.cpp b/mlir/examples/dsp/SimpleBlocks/mlir/LowerToAffineLoops.cpp index 537989becb84..f7ec02ca6acb 100644 --- a/mlir/examples/dsp/SimpleBlocks/mlir/LowerToAffineLoops.cpp +++ b/mlir/examples/dsp/SimpleBlocks/mlir/LowerToAffineLoops.cpp @@ -6120,6 +6120,72 @@ struct ConstantOpLowering : public OpRewritePattern { } }; +//===----------------------------------------------------------------------===// +// ToyToAffine RewritePatterns: IntegerConstant operations +//===----------------------------------------------------------------------===// + +// FIXME: integer tensor is not yet support +// to support it, add literal integer parsing logic in parser +struct IntegerConstantOpLowering : public OpRewritePattern { + using OpRewritePattern::OpRewritePattern; + + LogicalResult matchAndRewrite(dsp::IntegerConstantOp op, + PatternRewriter &rewriter) const final { + DenseIntElementsAttr intConstVal = op.getValue(); + Location loc = op.getLoc(); + + auto tensorType = llvm::cast(op.getType()); + auto memRefType = convertTensorToMemRef(tensorType); + auto alloc = insertAllocAndDealloc(memRefType, loc, rewriter); + + auto valueShape = memRefType.getShape(); + SmallVector constantIndices; + + if (!valueShape.empty()) { + for (auto i : llvm::seq( + 0, *std::max_element(valueShape.begin(), valueShape.end()))) + constantIndices.push_back( + rewriter.create(loc, i)); + } else { + // FIXME: current impl of integer constant should only be using this condition. + constantIndices.push_back( + rewriter.create(loc, 0)); + } + + // The constant operation represents a multi-dimensional constant, so we + // will need to generate a store for each of the elements. The following + // functor recursively walks the dimensions of the constant shape, + // generating a store when the recursion hits the base case. + SmallVector indices; + auto valueIt = intConstVal.value_begin(); + std::function storeElements = [&](uint64_t dimension) { + // The last dimension is the base case of the recursion, at this point + // we store the element at the given index. + if (dimension == valueShape.size()) { + rewriter.create( + loc, rewriter.create(loc, *valueIt++), alloc, + llvm::ArrayRef(indices)); + return; + } + + // Otherwise, iterate over the current dimension and add the indices to + // the list. + for (uint64_t i = 0, e = valueShape[dimension]; i != e; ++i) { + indices.push_back(constantIndices[i]); + storeElements(dimension + 1); + indices.pop_back(); + } + }; + + // Start the element storing recursion from the first dimension. + storeElements(/*dimension=*/0); + + // Replace this operation with the generated alloc. + rewriter.replaceOp(op, alloc); + return success(); + } +}; + //===----------------------------------------------------------------------===// // ToyToAffine RewritePatterns: Func operations //===----------------------------------------------------------------------===// @@ -6271,7 +6337,7 @@ void ToyToAffineLoweringPass::runOnOperation() { // Now that the conversion target has been defined, we just need to provide // the set of patterns that will lower the Toy operations. RewritePatternSet patterns(&getContext()); - patterns.add #include +#include using namespace mlir; @@ -85,8 +86,23 @@ class PrintOpLowering : public ConversionPattern { // Get a symbol reference to the printf function, inserting it if necessary. auto printfRef = getOrInsertPrintf(rewriter, parentModule); - Value formatSpecifierCst = getOrCreateGlobalString( - loc, rewriter, "frmt_spec", StringRef("%f \0", 4), parentModule); + /* test int and float lowering */ + auto eleType = memRefType.getElementType(); + Value formatSpecifierCst; + if(mlir::isa(eleType)) { + std::cout << "MK detect float" << std::endl; + formatSpecifierCst = getOrCreateGlobalString( + loc, rewriter, "frmt_spec_f", StringRef("%f \0", 4), parentModule); + + } + else if(mlir::isa(eleType)) { + std::cout << "MK detect int" << std::endl; + formatSpecifierCst = getOrCreateGlobalString( + loc, rewriter, "frmt_spec_d", StringRef("%ld \0", 5), parentModule); + + } + //Value formatSpecifierCst = getOrCreateGlobalString( + //loc, rewriter, "frmt_spec", StringRef("%f \0", 4), parentModule); Value newLineCst = getOrCreateGlobalString( loc, rewriter, "nl", StringRef("\n\0", 2), parentModule); diff --git a/mlir/examples/dsp/SimpleBlocks/mlir/MLIRGen.cpp b/mlir/examples/dsp/SimpleBlocks/mlir/MLIRGen.cpp index 24017a99f81e..72840cd68d47 100644 --- a/mlir/examples/dsp/SimpleBlocks/mlir/MLIRGen.cpp +++ b/mlir/examples/dsp/SimpleBlocks/mlir/MLIRGen.cpp @@ -40,6 +40,7 @@ #include #include #include +#include using namespace mlir::dsp; using namespace dsp; @@ -66,6 +67,7 @@ class MLIRGenImpl { /// Public API: convert the AST for a Toy module (source file) to an MLIR /// Module operation. + mlir::ModuleOp mlirGen(ModuleAST &moduleAST) { // We create an empty MLIR module and codegen functions one at a time and // add them to the module. @@ -281,11 +283,11 @@ class MLIRGenImpl { std::multiplies())); collectData(lit, data); - // The type of this attribute is tensor of 64-bit floating-point with the // shape of the literal. mlir::Type elementType = builder.getF64Type(); auto dataType = mlir::RankedTensorType::get(lit.getDims(), elementType); + // This is the actual attribute that holds the list of values for this // tensor literal. auto dataAttribute = @@ -311,8 +313,17 @@ class MLIRGenImpl { return; } - assert(isa(expr) && "expected literal or number expr"); - data.push_back(cast(expr).getValue()); + //assert(isa(expr) && "expected literal or number expr"); + //data.push_back(cast(expr).getDouble()); + + if(isa(expr)) { + data.push_back(cast(expr).getDouble()); + return; + } + if(isa(expr)) { + data.push_back(cast(expr).getInt()); + return; + } } /// Emit a call expression. It emits specific operations for the `transpose` @@ -755,9 +766,12 @@ class MLIRGenImpl { return mlir::success(); } - /// Emit a constant for a single number (FIXME: semantic? broadcast?) - mlir::Value mlirGen(NumberExprAST &num) { - return builder.create(loc(num.loc()), num.getValue()); + mlir::Value mlirGen(IntExprAST &num) { + return builder.create(loc(num.loc()), num.getInt()); + } + + mlir::Value mlirGen(DoubleExprAST &num) { + return builder.create(loc(num.loc()), num.getDouble()); } /// Dispatch codegen for the right expression subclass using RTTI. @@ -771,8 +785,10 @@ class MLIRGenImpl { return mlirGen(cast(expr)); case dsp::ExprAST::Expr_Call: return mlirGen(cast(expr)); - case dsp::ExprAST::Expr_Num: - return mlirGen(cast(expr)); + case dsp::ExprAST::Expr_Int: + return mlirGen(cast(expr)); + case dsp::ExprAST::Expr_Double: + return mlirGen(cast(expr)); default: emitError(loc(expr.loc())) << "MLIR codegen encountered an unhandled expr kind '" diff --git a/mlir/examples/dsp/SimpleBlocks/parser/AST.cpp b/mlir/examples/dsp/SimpleBlocks/parser/AST.cpp index a5dfa2d0f16e..e1660394c46a 100644 --- a/mlir/examples/dsp/SimpleBlocks/parser/AST.cpp +++ b/mlir/examples/dsp/SimpleBlocks/parser/AST.cpp @@ -42,7 +42,8 @@ class ASTDumper { void dump(VarDeclExprAST *varDecl); void dump(ExprAST *expr); void dump(ExprASTList *exprList); - void dump(NumberExprAST *num); + void dump(IntExprAST *num); + void dump(DoubleExprAST *num); void dump(LiteralExprAST *node); void dump(VariableExprAST *node); void dump(ReturnExprAST *node); @@ -80,7 +81,7 @@ static std::string loc(T *node) { /// Dispatch to a generic expressions to the appropriate subclass using RTTI void ASTDumper::dump(ExprAST *expr) { llvm::TypeSwitch(expr) - .Case( [&](auto *node) { this->dump(node); }) .Default([&](ExprAST *) { @@ -110,10 +111,21 @@ void ASTDumper::dump(ExprASTList *exprList) { llvm::errs() << "} // Block\n"; } -/// A literal number, just print the value. -void ASTDumper::dump(NumberExprAST *num) { - INDENT(); - llvm::errs() << num->getValue() << " " << loc(num) << "\n"; +// test for int and double +///// A literal number, just print the value. +//void ASTDumper::dump(NumberExprAST *num) { + //INDENT(); + //llvm::errs() << num->getValue() << " " << loc(num) << "\n"; +//} + +void ASTDumper::dump(IntExprAST *num) { + INDENT(); + llvm::errs() << num->getInt() << " " << loc(num) << "\n"; +} + +void ASTDumper::dump(DoubleExprAST *num) { + INDENT(); + llvm::errs() << num->getDouble() << " " << loc(num) << "\n"; } /// Helper to print recursively a literal. This handles nested array like: @@ -122,10 +134,22 @@ void ASTDumper::dump(NumberExprAST *num) { /// <2,2>[<2>[ 1, 2 ], <2>[ 3, 4 ] ] void printLitHelper(ExprAST *litOrNum) { // Inside a literal expression we can have either a number or another literal - if (auto *num = llvm::dyn_cast(litOrNum)) { - llvm::errs() << num->getValue(); - return; - } + + // test for int and double + //if (auto *num = llvm::dyn_cast(litOrNum)) { + //llvm::errs() << num->getValue(); + //return; + //} + + if(auto *num = llvm::dyn_cast(litOrNum)) { + llvm::errs() << num->getDouble(); + return; + } + if(auto *num = llvm::dyn_cast(litOrNum)) { + llvm::errs() << num->getInt(); + return; + } + auto *literal = llvm::cast(litOrNum); // Print the dimension for this literal first diff --git a/mlir/examples/toy/Ch1/include/toy/AST.h b/mlir/examples/toy/Ch1/include/toy/AST.h index d2ba101dea5a..19d816b031c3 100644 --- a/mlir/examples/toy/Ch1/include/toy/AST.h +++ b/mlir/examples/toy/Ch1/include/toy/AST.h @@ -37,7 +37,9 @@ class ExprAST { enum ExprASTKind { Expr_VarDecl, Expr_Return, - Expr_Num, + // Expr_Num, + Expr_Int, + Expr_Double, Expr_Literal, Expr_Var, Expr_BinOp, @@ -62,17 +64,43 @@ class ExprAST { using ExprASTList = std::vector>; /// Expression class for numeric literals like "1.0". -class NumberExprAST : public ExprAST { - double val; +//class NumberExprAST : public ExprAST { + //double val; +// +//public: + //NumberExprAST(Location loc, double val) + //: ExprAST(Expr_Num, std::move(loc)), val(val) {} +// + //double getValue() { return val; } +// + ///// LLVM style RTTI + //static bool classof(const ExprAST *c) { return c->getKind() == Expr_Num; } +//}; + +// add -- Int Expr AST +class IntExprAST : public ExprAST { + int val; public: - NumberExprAST(Location loc, double val) - : ExprAST(Expr_Num, std::move(loc)), val(val) {} + IntExprAST(Location loc, int val) + : ExprAST(Expr_Int, std::move(loc)), val(val) {} - double getValue() { return val; } + int getInt() { return val; } - /// LLVM style RTTI - static bool classof(const ExprAST *c) { return c->getKind() == Expr_Num; } + static bool classof(const ExprAST *c) { return c->getKind() == Expr_Int; } +}; + +// add -- Double Expr AST +class DoubleExprAST : public ExprAST { + double val; + +public: + DoubleExprAST(Location loc, double val) + : ExprAST(Expr_Double, std::move(loc)), val(val) {} + + double getDouble() { return val; } + + static bool classof(const ExprAST *c) { return c->getKind() == Expr_Double; } }; /// Expression class for a literal value. diff --git a/mlir/examples/toy/Ch1/include/toy/Lexer.h b/mlir/examples/toy/Ch1/include/toy/Lexer.h index ecbb3b4e0e58..99d9a4e065f6 100644 --- a/mlir/examples/toy/Ch1/include/toy/Lexer.h +++ b/mlir/examples/toy/Ch1/include/toy/Lexer.h @@ -46,7 +46,8 @@ enum Token : int { // primary tok_identifier = -5, - tok_number = -6, + tok_int = -6, + tok_double = -7, }; /// The Lexer is an abstract base class providing all the facilities that the @@ -84,9 +85,19 @@ class Lexer { } /// Return the current number (prereq: getCurToken() == tok_number) - double getValue() { - assert(curTok == tok_number); - return numVal; + //double getValue() { + //assert(curTok == tok_number); + //return numVal; + //} + + int getIntValue() { + assert(curTok == tok_int); + return numInt; + } + + double getDoubleValue() { + assert(curTok == tok_double); + return numDouble; } /// Return the location for the beginning of the current token. @@ -149,15 +160,37 @@ class Lexer { } // Number: [0-9.]+ - if (isdigit(lastChar) || lastChar == '.') { - std::string numStr; - do { - numStr += lastChar; - lastChar = Token(getNextChar()); - } while (isdigit(lastChar) || lastChar == '.'); - - numVal = strtod(numStr.c_str(), nullptr); - return tok_number; + //if (isdigit(lastChar) || lastChar == '.') { + //std::string numStr; + //do { + //numStr += lastChar; + //lastChar = Token(getNextChar()); + //} while (isdigit(lastChar) || lastChar == '.'); +// + //numVal = strtod(numStr.c_str(), nullptr); + //return tok_number; + //} + + // add -- number + if(isdigit(lastChar)) { + std::string numStr; + bool isDouble = false; + + do { + if(lastChar == '.') isDouble = true; + + numStr += lastChar; + lastChar = Token(getNextChar()); + } while (isdigit(lastChar) || lastChar == '.'); + + if(isDouble) { + numDouble = strtod(numStr.c_str(), nullptr); + return tok_double; + } else { + char ** p_end; + numInt = strtol(numStr.c_str(), p_end, 10); + return tok_int; + } } if (lastChar == '#') { @@ -190,7 +223,9 @@ class Lexer { std::string identifierStr; /// If the current Token is a number, this contains the value. - double numVal = 0; + //double numVal = 0; + int numInt = 0; + double numDouble = 0; /// The last value returned by getNextChar(). We need to keep it around as we /// always need to read ahead one character to decide when to end a token and diff --git a/mlir/examples/toy/Ch1/include/toy/Parser.h b/mlir/examples/toy/Ch1/include/toy/Parser.h index 1f20616ac6b4..8a41a71d8ba8 100644 --- a/mlir/examples/toy/Ch1/include/toy/Parser.h +++ b/mlir/examples/toy/Ch1/include/toy/Parser.h @@ -77,12 +77,34 @@ class Parser { /// Parse a literal number. /// numberexpr ::= number - std::unique_ptr parseNumberExpr() { - auto loc = lexer.getLastLocation(); - auto result = - std::make_unique(std::move(loc), lexer.getValue()); - lexer.consume(tok_number); - return std::move(result); + //std::unique_ptr parseNumberExpr() { + //auto loc = lexer.getLastLocation(); + //auto result = + //std::make_unique(std::move(loc), lexer.getValue()); + //lexer.consume(tok_number); + //return std::move(result); + //} + + // add -- Parse an integer + std::unique_ptr parseIntExpr() { + auto loc = lexer.getLastLocation(); + printf("Parser.h -- get Integer valus: %d\n", lexer.getIntValue()); + auto result = + std::make_unique(std::move(loc), lexer.getIntValue()); + + lexer.consume(tok_int); + return std::move(result); + } + + // add -- Parse an integer + std::unique_ptr parseDoubleExpr() { + auto loc = lexer.getLastLocation(); + printf("Parser.h -- get Double valus: %f\n", lexer.getDoubleValue()); + auto result = + std::make_unique(std::move(loc), lexer.getDoubleValue()); + + lexer.consume(tok_double); + return std::move(result); } /// Parse a literal array expression. @@ -103,9 +125,16 @@ class Parser { if (!values.back()) return nullptr; // parse error in the nested array. } else { - if (lexer.getCurToken() != tok_number) - return parseError(" or [", "in literal expression"); - values.push_back(parseNumberExpr()); + //if (lexer.getCurToken() != tok_number) + //return parseError(" or [", "in literal expression"); + //values.push_back(parseNumberExpr()); + + // add -- int and double logic + if(lexer.getCurToken() != tok_int && lexer.getCurToken() != tok_double) { + return parseError(" or [", "in literal expression"); + } + if(lexer.getCurToken() == tok_int) values.push_back(parseIntExpr()); + else if(lexer.getCurToken() == tok_double) values.push_back(parseDoubleExpr()); } // End of this list on ']' @@ -224,8 +253,13 @@ class Parser { return nullptr; case tok_identifier: return parseIdentifierExpr(); - case tok_number: - return parseNumberExpr(); + //case tok_number: + //return parseNumberExpr(); + /* add -- integer and double cases */ + case tok_int: + return parseIntExpr(); + case tok_double: + return parseDoubleExpr(); case '(': return parseParenExpr(); case '[': @@ -295,11 +329,20 @@ class Parser { auto type = std::make_unique(); - while (lexer.getCurToken() == tok_number) { - type->shape.push_back(lexer.getValue()); - lexer.getNextToken(); - if (lexer.getCurToken() == ',') + //while (lexer.getCurToken() == tok_number) { + //type->shape.push_back(lexer.getValue()); + //lexer.getNextToken(); + //if (lexer.getCurToken() == ',') + //lexer.getNextToken(); + //} + + // add -- integer and double logic + while (lexer.getCurToken() == tok_int || lexer.getCurToken() == tok_double) { + if(lexer.getCurToken() == tok_int ) type->shape.push_back(lexer.getIntValue()); + else if(lexer.getCurToken() == tok_double ) type->shape.push_back(lexer.getDoubleValue()); lexer.getNextToken(); + + if(lexer.getCurToken() == ',') lexer.getNextToken(); } if (lexer.getCurToken() != '>') diff --git a/mlir/examples/toy/Ch1/parser/AST.cpp b/mlir/examples/toy/Ch1/parser/AST.cpp index 2546f2a9725d..4182c149a485 100644 --- a/mlir/examples/toy/Ch1/parser/AST.cpp +++ b/mlir/examples/toy/Ch1/parser/AST.cpp @@ -42,7 +42,11 @@ class ASTDumper { void dump(VarDeclExprAST *varDecl); void dump(ExprAST *expr); void dump(ExprASTList *exprList); - void dump(NumberExprAST *num); + //void dump(NumberExprAST *num); + // add -- expr dump + void dump(IntExprAST *num); + void dump(DoubleExprAST *num); + // end add void dump(LiteralExprAST *node); void dump(VariableExprAST *node); void dump(ReturnExprAST *node); @@ -80,7 +84,7 @@ static std::string loc(T *node) { /// Dispatch to a generic expressions to the appropriate subclass using RTTI void ASTDumper::dump(ExprAST *expr) { llvm::TypeSwitch(expr) - .Case( [&](auto *node) { this->dump(node); }) .Default([&](ExprAST *) { @@ -111,9 +115,22 @@ void ASTDumper::dump(ExprASTList *exprList) { } /// A literal number, just print the value. -void ASTDumper::dump(NumberExprAST *num) { - INDENT(); - llvm::errs() << num->getValue() << " " << loc(num) << "\n"; +//void ASTDumper::dump(NumberExprAST *num) { + //INDENT(); + //llvm::errs() << num->getValue() << " " << loc(num) << "\n"; +//} + +// add -- expr dumps +void ASTDumper::dump(IntExprAST *num) { + printf("AST.cpp -- getting int: %d", num->getInt()); + INDENT(); + llvm::errs() << num->getInt() << " " << loc(num) << "\n"; +} + +void ASTDumper::dump(DoubleExprAST *num) { + printf("AST.cpp -- getting double: %f", num->getDouble()); + INDENT(); + llvm::errs() << num->getDouble() << " " << loc(num) << "\n"; } /// Helper to print recursively a literal. This handles nested array like: @@ -122,10 +139,20 @@ void ASTDumper::dump(NumberExprAST *num) { /// <2,2>[<2>[ 1, 2 ], <2>[ 3, 4 ] ] void printLitHelper(ExprAST *litOrNum) { // Inside a literal expression we can have either a number or another literal - if (auto *num = llvm::dyn_cast(litOrNum)) { - llvm::errs() << num->getValue(); - return; - } + //if (auto *num = llvm::dyn_cast(litOrNum)) { + //llvm::errs() << num->getValue(); + //return; + //} + + // add -- lit helper expr dump int and double + if (auto *num = llvm::dyn_cast(litOrNum)) { + llvm::errs() << "Integer : " << num->getInt(); + return; + } + if (auto *num = llvm::dyn_cast(litOrNum)) { + llvm::errs() << "Double : " << num->getDouble(); + return; + } auto *literal = llvm::cast(litOrNum); // Print the dimension for this literal first diff --git a/mlir/test/Examples/DspExample/dsp_constantInt.py b/mlir/test/Examples/DspExample/dsp_constantInt.py new file mode 100644 index 000000000000..bb9a6e32e0ce --- /dev/null +++ b/mlir/test/Examples/DspExample/dsp_constantInt.py @@ -0,0 +1,11 @@ +def main() { + var a = 5; + var b = 0.3; + var c = 6.3; + var d = 4; + print(a); + print(b); + print(c); + print(d); + +} diff --git a/mlir/test/Examples/DspExample/dsp_gain_op.py b/mlir/test/Examples/DspExample/dsp_gain_op.py index 5e50f6867284..8a8437b85cdf 100644 --- a/mlir/test/Examples/DspExample/dsp_gain_op.py +++ b/mlir/test/Examples/DspExample/dsp_gain_op.py @@ -12,8 +12,8 @@ def main() { # int a1 = [21, 11]; # var a1 = [20, 40 ,60]; - var b = 2 ; - var c = 3; + var b = 2.0 ; + var c = 3.0; # var c = delay(b); # var d = delay(a, b); diff --git a/mlir/test/Examples/DspExample/dsp_op_delay_simple.py b/mlir/test/Examples/DspExample/dsp_op_delay_simple.py index 9280a9a13548..4402a08c8e94 100644 --- a/mlir/test/Examples/DspExample/dsp_op_delay_simple.py +++ b/mlir/test/Examples/DspExample/dsp_op_delay_simple.py @@ -9,7 +9,7 @@ def main() { # var a = [10,20,30]; - + #size = 10 var a = [10,20,30,40,50,60, 70, 80, 90 , 100]; @@ -18,14 +18,14 @@ def main() { #size=1K # var a = [ 10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360,370,380,390,400,410,420,430,440,450,460,470,480,490,500,510,520,530,540,550,560,570,580,590,600,610,620,630,640,650,660,670,680,690,700,710,720,730,740,750,760,770,780,790,800,810,820,830,840,850,860,870,880,890,900,910,920,930,940,950,960,970,980,990,1000,1010,1020,1030,1040,1050,1060,1070,1080,1090,1100,1110,1120,1130,1140,1150,1160,1170,1180,1190,1200,1210,1220,1230,1240,1250,1260,1270,1280,1290,1300,1310,1320,1330,1340,1350,1360,1370,1380,1390,1400,1410,1420,1430,1440,1450,1460,1470,1480,1490,1500,1510,1520,1530,1540,1550,1560,1570,1580,1590,1600,1610,1620,1630,1640,1650,1660,1670,1680,1690,1700,1710,1720,1730,1740,1750,1760,1770,1780,1790,1800,1810,1820,1830,1840,1850,1860,1870,1880,1890,1900,1910,1920,1930,1940,1950,1960,1970,1980,1990,2000,2010,2020,2030,2040,2050,2060,2070,2080,2090,2100,2110,2120,2130,2140,2150,2160,2170,2180,2190,2200,2210,2220,2230,2240,2250,2260,2270,2280,2290,2300,2310,2320,2330,2340,2350,2360,2370,2380,2390,2400,2410,2420,2430,2440,2450,2460,2470,2480,2490,2500,2510,2520,2530,2540,2550,2560,2570,2580,2590,2600,2610,2620,2630,2640,2650,2660,2670,2680,2690,2700,2710,2720,2730,2740,2750,2760,2770,2780,2790,2800,2810,2820,2830,2840,2850,2860,2870,2880,2890,2900,2910,2920,2930,2940,2950,2960,2970,2980,2990,3000,3010,3020,3030,3040,3050,3060,3070,3080,3090,3100,3110,3120,3130,3140,3150,3160,3170,3180,3190,3200,3210,3220,3230,3240,3250,3260,3270,3280,3290,3300,3310,3320,3330,3340,3350,3360,3370,3380,3390,3400,3410,3420,3430,3440,3450,3460,3470,3480,3490,3500,3510,3520,3530,3540,3550,3560,3570,3580,3590,3600,3610,3620,3630,3640,3650,3660,3670,3680,3690,3700,3710,3720,3730,3740,3750,3760,3770,3780,3790,3800,3810,3820,3830,3840,3850,3860,3870,3880,3890,3900,3910,3920,3930,3940,3950,3960,3970,3980,3990,4000,4010,4020,4030,4040,4050,4060,4070,4080,4090,4100,4110,4120,4130,4140,4150,4160,4170,4180,4190,4200,4210,4220,4230,4240,4250,4260,4270,4280,4290,4300,4310,4320,4330,4340,4350,4360,4370,4380,4390,4400,4410,4420,4430,4440,4450,4460,4470,4480,4490,4500,4510,4520,4530,4540,4550,4560,4570,4580,4590,4600,4610,4620,4630,4640,4650,4660,4670,4680,4690,4700,4710,4720,4730,4740,4750,4760,4770,4780,4790,4800,4810,4820,4830,4840,4850,4860,4870,4880,4890,4900,4910,4920,4930,4940,4950,4960,4970,4980,4990,5000,5010,5020,5030,5040,5050,5060,5070,5080,5090,5100,5110,5120,5130,5140,5150,5160,5170,5180,5190,5200,5210,5220,5230,5240,5250,5260,5270,5280,5290,5300,5310,5320,5330,5340,5350,5360,5370,5380,5390,5400,5410,5420,5430,5440,5450,5460,5470,5480,5490,5500,5510,5520,5530,5540,5550,5560,5570,5580,5590,5600,5610,5620,5630,5640,5650,5660,5670,5680,5690,5700,5710,5720,5730,5740,5750,5760,5770,5780,5790,5800,5810,5820,5830,5840,5850,5860,5870,5880,5890,5900,5910,5920,5930,5940,5950,5960,5970,5980,5990,6000,6010,6020,6030,6040,6050,6060,6070,6080,6090,6100,6110,6120,6130,6140,6150,6160,6170,6180,6190,6200,6210,6220,6230,6240,6250,6260,6270,6280,6290,6300,6310,6320,6330,6340,6350,6360,6370,6380,6390,6400,6410,6420,6430,6440,6450,6460,6470,6480,6490,6500,6510,6520,6530,6540,6550,6560,6570,6580,6590,6600,6610,6620,6630,6640,6650,6660,6670,6680,6690,6700,6710,6720,6730,6740,6750,6760,6770,6780,6790,6800,6810,6820,6830,6840,6850,6860,6870,6880,6890,6900,6910,6920,6930,6940,6950,6960,6970,6980,6990,7000,7010,7020,7030,7040,7050,7060,7070,7080,7090,7100,7110,7120,7130,7140,7150,7160,7170,7180,7190,7200,7210,7220,7230,7240,7250,7260,7270,7280,7290,7300,7310,7320,7330,7340,7350,7360,7370,7380,7390,7400,7410,7420,7430,7440,7450,7460,7470,7480,7490,7500,7510,7520,7530,7540,7550,7560,7570,7580,7590,7600,7610,7620,7630,7640,7650,7660,7670,7680,7690,7700,7710,7720,7730,7740,7750,7760,7770,7780,7790,7800,7810,7820,7830,7840,7850,7860,7870,7880,7890,7900,7910,7920,7930,7940,7950,7960,7970,7980,7990,8000,8010,8020,8030,8040,8050,8060,8070,8080,8090,8100,8110,8120,8130,8140,8150,8160,8170,8180,8190,8200,8210,8220,8230,8240,8250,8260,8270,8280,8290,8300,8310,8320,8330,8340,8350,8360,8370,8380,8390,8400,8410,8420,8430,8440,8450,8460,8470,8480,8490,8500,8510,8520,8530,8540,8550,8560,8570,8580,8590,8600,8610,8620,8630,8640,8650,8660,8670,8680,8690,8700,8710,8720,8730,8740,8750,8760,8770,8780,8790,8800,8810,8820,8830,8840,8850,8860,8870,8880,8890,8900,8910,8920,8930,8940,8950,8960,8970,8980,8990,9000,9010,9020,9030,9040,9050,9060,9070,9080,9090,9100,9110,9120,9130,9140,9150,9160,9170,9180,9190,9200,9210,9220,9230,9240,9250,9260,9270,9280,9290,9300,9310,9320,9330,9340,9350,9360,9370,9380,9390,9400,9410,9420,9430,9440,9450,9460,9470,9480,9490,9500,9510,9520,9530,9540,9550,9560,9570,9580,9590,9600,9610,9620,9630,9640,9650,9660,9670,9680,9690,9700,9710,9720,9730,9740,9750,9760,9770,9780,9790,9800,9810,9820,9830,9840,9850,9860,9870,9880,9890,9900,9910,9920,9930,9940,9950,9960,9970,9980,9990,10000]; - + #10K Size # var a = [ 10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360,370,380,390,400,410,420,430,440,450,460,470,480,490,500,510,520,530,540,550,560,570,580,590,600,610,620,630,640,650,660,670,680,690,700,710,720,730,740,750,760,770,780,790,800,810,820,830,840,850,860,870,880,890,900,910,920,930,940,950,960,970,980,990,1000,1010,1020,1030,1040,1050,1060,1070,1080,1090,1100,1110,1120,1130,1140,1150,1160,1170,1180,1190,1200,1210,1220,1230,1240,1250,1260,1270,1280,1290,1300,1310,1320,1330,1340,1350,1360,1370,1380,1390,1400,1410,1420,1430,1440,1450,1460,1470,1480,1490,1500,1510,1520,1530,1540,1550,1560,1570,1580,1590,1600,1610,1620,1630,1640,1650,1660,1670,1680,1690,1700,1710,1720,1730,1740,1750,1760,1770,1780,1790,1800,1810,1820,1830,1840,1850,1860,1870,1880,1890,1900,1910,1920,1930,1940,1950,1960,1970,1980,1990,2000,2010,2020,2030,2040,2050,2060,2070,2080,2090,2100,2110,2120,2130,2140,2150,2160,2170,2180,2190,2200,2210,2220,2230,2240,2250,2260,2270,2280,2290,2300,2310,2320,2330,2340,2350,2360,2370,2380,2390,2400,2410,2420,2430,2440,2450,2460,2470,2480,2490,2500,2510,2520,2530,2540,2550,2560,2570,2580,2590,2600,2610,2620,2630,2640,2650,2660,2670,2680,2690,2700,2710,2720,2730,2740,2750,2760,2770,2780,2790,2800,2810,2820,2830,2840,2850,2860,2870,2880,2890,2900,2910,2920,2930,2940,2950,2960,2970,2980,2990,3000,3010,3020,3030,3040,3050,3060,3070,3080,3090,3100,3110,3120,3130,3140,3150,3160,3170,3180,3190,3200,3210,3220,3230,3240,3250,3260,3270,3280,3290,3300,3310,3320,3330,3340,3350,3360,3370,3380,3390,3400,3410,3420,3430,3440,3450,3460,3470,3480,3490,3500,3510,3520,3530,3540,3550,3560,3570,3580,3590,3600,3610,3620,3630,3640,3650,3660,3670,3680,3690,3700,3710,3720,3730,3740,3750,3760,3770,3780,3790,3800,3810,3820,3830,3840,3850,3860,3870,3880,3890,3900,3910,3920,3930,3940,3950,3960,3970,3980,3990,4000,4010,4020,4030,4040,4050,4060,4070,4080,4090,4100,4110,4120,4130,4140,4150,4160,4170,4180,4190,4200,4210,4220,4230,4240,4250,4260,4270,4280,4290,4300,4310,4320,4330,4340,4350,4360,4370,4380,4390,4400,4410,4420,4430,4440,4450,4460,4470,4480,4490,4500,4510,4520,4530,4540,4550,4560,4570,4580,4590,4600,4610,4620,4630,4640,4650,4660,4670,4680,4690,4700,4710,4720,4730,4740,4750,4760,4770,4780,4790,4800,4810,4820,4830,4840,4850,4860,4870,4880,4890,4900,4910,4920,4930,4940,4950,4960,4970,4980,4990,5000,5010,5020,5030,5040,5050,5060,5070,5080,5090,5100,5110,5120,5130,5140,5150,5160,5170,5180,5190,5200,5210,5220,5230,5240,5250,5260,5270,5280,5290,5300,5310,5320,5330,5340,5350,5360,5370,5380,5390,5400,5410,5420,5430,5440,5450,5460,5470,5480,5490,5500,5510,5520,5530,5540,5550,5560,5570,5580,5590,5600,5610,5620,5630,5640,5650,5660,5670,5680,5690,5700,5710,5720,5730,5740,5750,5760,5770,5780,5790,5800,5810,5820,5830,5840,5850,5860,5870,5880,5890,5900,5910,5920,5930,5940,5950,5960,5970,5980,5990,6000,6010,6020,6030,6040,6050,6060,6070,6080,6090,6100,6110,6120,6130,6140,6150,6160,6170,6180,6190,6200,6210,6220,6230,6240,6250,6260,6270,6280,6290,6300,6310,6320,6330,6340,6350,6360,6370,6380,6390,6400,6410,6420,6430,6440,6450,6460,6470,6480,6490,6500,6510,6520,6530,6540,6550,6560,6570,6580,6590,6600,6610,6620,6630,6640,6650,6660,6670,6680,6690,6700,6710,6720,6730,6740,6750,6760,6770,6780,6790,6800,6810,6820,6830,6840,6850,6860,6870,6880,6890,6900,6910,6920,6930,6940,6950,6960,6970,6980,6990,7000,7010,7020,7030,7040,7050,7060,7070,7080,7090,7100,7110,7120,7130,7140,7150,7160,7170,7180,7190,7200,7210,7220,7230,7240,7250,7260,7270,7280,7290,7300,7310,7320,7330,7340,7350,7360,7370,7380,7390,7400,7410,7420,7430,7440,7450,7460,7470,7480,7490,7500,7510,7520,7530,7540,7550,7560,7570,7580,7590,7600,7610,7620,7630,7640,7650,7660,7670,7680,7690,7700,7710,7720,7730,7740,7750,7760,7770,7780,7790,7800,7810,7820,7830,7840,7850,7860,7870,7880,7890,7900,7910,7920,7930,7940,7950,7960,7970,7980,7990,8000,8010,8020,8030,8040,8050,8060,8070,8080,8090,8100,8110,8120,8130,8140,8150,8160,8170,8180,8190,8200,8210,8220,8230,8240,8250,8260,8270,8280,8290,8300,8310,8320,8330,8340,8350,8360,8370,8380,8390,8400,8410,8420,8430,8440,8450,8460,8470,8480,8490,8500,8510,8520,8530,8540,8550,8560,8570,8580,8590,8600,8610,8620,8630,8640,8650,8660,8670,8680,8690,8700,8710,8720,8730,8740,8750,8760,8770,8780,8790,8800,8810,8820,8830,8840,8850,8860,8870,8880,8890,8900,8910,8920,8930,8940,8950,8960,8970,8980,8990,9000,9010,9020,9030,9040,9050,9060,9070,9080,9090,9100,9110,9120,9130,9140,9150,9160,9170,9180,9190,9200,9210,9220,9230,9240,9250,9260,9270,9280,9290,9300,9310,9320,9330,9340,9350,9360,9370,9380,9390,9400,9410,9420,9430,9440,9450,9460,9470,9480,9490,9500,9510,9520,9530,9540,9550,9560,9570,9580,9590,9600,9610,9620,9630,9640,9650,9660,9670,9680,9690,9700,9710,9720,9730,9740,9750,9760,9770,9780,9790,9800,9810,9820,9830,9840,9850,9860,9870,9880,9890,9900,9910,9920,9930,9940,9950,9960,9970,9980,9990,10000,10010,10020,10030,10040,10050,10060,10070,10080,10090,10100,10110,10120,10130,10140,10150,10160,10170,10180,10190,10200,10210,10220,10230,10240,10250,10260,10270,10280,10290,10300,10310,10320,10330,10340,10350,10360,10370,10380,10390,10400,10410,10420,10430,10440,10450,10460,10470,10480,10490,10500,10510,10520,10530,10540,10550,10560,10570,10580,10590,10600,10610,10620,10630,10640,10650,10660,10670,10680,10690,10700,10710,10720,10730,10740,10750,10760,10770,10780,10790,10800,10810,10820,10830,10840,10850,10860,10870,10880,10890,10900,10910,10920,10930,10940,10950,10960,10970,10980,10990,11000,11010,11020,11030,11040,11050,11060,11070,11080,11090,11100,11110,11120,11130,11140,11150,11160,11170,11180,11190,11200,11210,11220,11230,11240,11250,11260,11270,11280,11290,11300,11310,11320,11330,11340,11350,11360,11370,11380,11390,11400,11410,11420,11430,11440,11450,11460,11470,11480,11490,11500,11510,11520,11530,11540,11550,11560,11570,11580,11590,11600,11610,11620,11630,11640,11650,11660,11670,11680,11690,11700,11710,11720,11730,11740,11750,11760,11770,11780,11790,11800,11810,11820,11830,11840,11850,11860,11870,11880,11890,11900,11910,11920,11930,11940,11950,11960,11970,11980,11990,12000,12010,12020,12030,12040,12050,12060,12070,12080,12090,12100,12110,12120,12130,12140,12150,12160,12170,12180,12190,12200,12210,12220,12230,12240,12250,12260,12270,12280,12290,12300,12310,12320,12330,12340,12350,12360,12370,12380,12390,12400,12410,12420,12430,12440,12450,12460,12470,12480,12490,12500,12510,12520,12530,12540,12550,12560,12570,12580,12590,12600,12610,12620,12630,12640,12650,12660,12670,12680,12690,12700,12710,12720,12730,12740,12750,12760,12770,12780,12790,12800,12810,12820,12830,12840,12850,12860,12870,12880,12890,12900,12910,12920,12930,12940,12950,12960,12970,12980,12990,13000,13010,13020,13030,13040,13050,13060,13070,13080,13090,13100,13110,13120,13130,13140,13150,13160,13170,13180,13190,13200,13210,13220,13230,13240,13250,13260,13270,13280,13290,13300,13310,13320,13330,13340,13350,13360,13370,13380,13390,13400,13410,13420,13430,13440,13450,13460,13470,13480,13490,13500,13510,13520,13530,13540,13550,13560,13570,13580,13590,13600,13610,13620,13630,13640,13650,13660,13670,13680,13690,13700,13710,13720,13730,13740,13750,13760,13770,13780,13790,13800,13810,13820,13830,13840,13850,13860,13870,13880,13890,13900,13910,13920,13930,13940,13950,13960,13970,13980,13990,14000,14010,14020,14030,14040,14050,14060,14070,14080,14090,14100,14110,14120,14130,14140,14150,14160,14170,14180,14190,14200,14210,14220,14230,14240,14250,14260,14270,14280,14290,14300,14310,14320,14330,14340,14350,14360,14370,14380,14390,14400,14410,14420,14430,14440,14450,14460,14470,14480,14490,14500,14510,14520,14530,14540,14550,14560,14570,14580,14590,14600,14610,14620,14630,14640,14650,14660,14670,14680,14690,14700,14710,14720,14730,14740,14750,14760,14770,14780,14790,14800,14810,14820,14830,14840,14850,14860,14870,14880,14890,14900,14910,14920,14930,14940,14950,14960,14970,14980,14990,15000,15010,15020,15030,15040,15050,15060,15070,15080,15090,15100,15110,15120,15130,15140,15150,15160,15170,15180,15190,15200,15210,15220,15230,15240,15250,15260,15270,15280,15290,15300,15310,15320,15330,15340,15350,15360,15370,15380,15390,15400,15410,15420,15430,15440,15450,15460,15470,15480,15490,15500,15510,15520,15530,15540,15550,15560,15570,15580,15590,15600,15610,15620,15630,15640,15650,15660,15670,15680,15690,15700,15710,15720,15730,15740,15750,15760,15770,15780,15790,15800,15810,15820,15830,15840,15850,15860,15870,15880,15890,15900,15910,15920,15930,15940,15950,15960,15970,15980,15990,16000,16010,16020,16030,16040,16050,16060,16070,16080,16090,16100,16110,16120,16130,16140,16150,16160,16170,16180,16190,16200,16210,16220,16230,16240,16250,16260,16270,16280,16290,16300,16310,16320,16330,16340,16350,16360,16370,16380,16390,16400,16410,16420,16430,16440,16450,16460,16470,16480,16490,16500,16510,16520,16530,16540,16550,16560,16570,16580,16590,16600,16610,16620,16630,16640,16650,16660,16670,16680,16690,16700,16710,16720,16730,16740,16750,16760,16770,16780,16790,16800,16810,16820,16830,16840,16850,16860,16870,16880,16890,16900,16910,16920,16930,16940,16950,16960,16970,16980,16990,17000,17010,17020,17030,17040,17050,17060,17070,17080,17090,17100,17110,17120,17130,17140,17150,17160,17170,17180,17190,17200,17210,17220,17230,17240,17250,17260,17270,17280,17290,17300,17310,17320,17330,17340,17350,17360,17370,17380,17390,17400,17410,17420,17430,17440,17450,17460,17470,17480,17490,17500,17510,17520,17530,17540,17550,17560,17570,17580,17590,17600,17610,17620,17630,17640,17650,17660,17670,17680,17690,17700,17710,17720,17730,17740,17750,17760,17770,17780,17790,17800,17810,17820,17830,17840,17850,17860,17870,17880,17890,17900,17910,17920,17930,17940,17950,17960,17970,17980,17990,18000,18010,18020,18030,18040,18050,18060,18070,18080,18090,18100,18110,18120,18130,18140,18150,18160,18170,18180,18190,18200,18210,18220,18230,18240,18250,18260,18270,18280,18290,18300,18310,18320,18330,18340,18350,18360,18370,18380,18390,18400,18410,18420,18430,18440,18450,18460,18470,18480,18490,18500,18510,18520,18530,18540,18550,18560,18570,18580,18590,18600,18610,18620,18630,18640,18650,18660,18670,18680,18690,18700,18710,18720,18730,18740,18750,18760,18770,18780,18790,18800,18810,18820,18830,18840,18850,18860,18870,18880,18890,18900,18910,18920,18930,18940,18950,18960,18970,18980,18990,19000,19010,19020,19030,19040,19050,19060,19070,19080,19090,19100,19110,19120,19130,19140,19150,19160,19170,19180,19190,19200,19210,19220,19230,19240,19250,19260,19270,19280,19290,19300,19310,19320,19330,19340,19350,19360,19370,19380,19390,19400,19410,19420,19430,19440,19450,19460,19470,19480,19490,19500,19510,19520,19530,19540,19550,19560,19570,19580,19590,19600,19610,19620,19630,19640,19650,19660,19670,19680,19690,19700,19710,19720,19730,19740,19750,19760,19770,19780,19790,19800,19810,19820,19830,19840,19850,19860,19870,19880,19890,19900,19910,19920,19930,19940,19950,19960,19970,19980,19990,20000,20010,20020,20030,20040,20050,20060,20070,20080,20090,20100,20110,20120,20130,20140,20150,20160,20170,20180,20190,20200,20210,20220,20230,20240,20250,20260,20270,20280,20290,20300,20310,20320,20330,20340,20350,20360,20370,20380,20390,20400,20410,20420,20430,20440,20450,20460,20470,20480,20490,20500,20510,20520,20530,20540,20550,20560,20570,20580,20590,20600,20610,20620,20630,20640,20650,20660,20670,20680,20690,20700,20710,20720,20730,20740,20750,20760,20770,20780,20790,20800,20810,20820,20830,20840,20850,20860,20870,20880,20890,20900,20910,20920,20930,20940,20950,20960,20970,20980,20990,21000,21010,21020,21030,21040,21050,21060,21070,21080,21090,21100,21110,21120,21130,21140,21150,21160,21170,21180,21190,21200,21210,21220,21230,21240,21250,21260,21270,21280,21290,21300,21310,21320,21330,21340,21350,21360,21370,21380,21390,21400,21410,21420,21430,21440,21450,21460,21470,21480,21490,21500,21510,21520,21530,21540,21550,21560,21570,21580,21590,21600,21610,21620,21630,21640,21650,21660,21670,21680,21690,21700,21710,21720,21730,21740,21750,21760,21770,21780,21790,21800,21810,21820,21830,21840,21850,21860,21870,21880,21890,21900,21910,21920,21930,21940,21950,21960,21970,21980,21990,22000,22010,22020,22030,22040,22050,22060,22070,22080,22090,22100,22110,22120,22130,22140,22150,22160,22170,22180,22190,22200,22210,22220,22230,22240,22250,22260,22270,22280,22290,22300,22310,22320,22330,22340,22350,22360,22370,22380,22390,22400,22410,22420,22430,22440,22450,22460,22470,22480,22490,22500,22510,22520,22530,22540,22550,22560,22570,22580,22590,22600,22610,22620,22630,22640,22650,22660,22670,22680,22690,22700,22710,22720,22730,22740,22750,22760,22770,22780,22790,22800,22810,22820,22830,22840,22850,22860,22870,22880,22890,22900,22910,22920,22930,22940,22950,22960,22970,22980,22990,23000,23010,23020,23030,23040,23050,23060,23070,23080,23090,23100,23110,23120,23130,23140,23150,23160,23170,23180,23190,23200,23210,23220,23230,23240,23250,23260,23270,23280,23290,23300,23310,23320,23330,23340,23350,23360,23370,23380,23390,23400,23410,23420,23430,23440,23450,23460,23470,23480,23490,23500,23510,23520,23530,23540,23550,23560,23570,23580,23590,23600,23610,23620,23630,23640,23650,23660,23670,23680,23690,23700,23710,23720,23730,23740,23750,23760,23770,23780,23790,23800,23810,23820,23830,23840,23850,23860,23870,23880,23890,23900,23910,23920,23930,23940,23950,23960,23970,23980,23990,24000,24010,24020,24030,24040,24050,24060,24070,24080,24090,24100,24110,24120,24130,24140,24150,24160,24170,24180,24190,24200,24210,24220,24230,24240,24250,24260,24270,24280,24290,24300,24310,24320,24330,24340,24350,24360,24370,24380,24390,24400,24410,24420,24430,24440,24450,24460,24470,24480,24490,24500,24510,24520,24530,24540,24550,24560,24570,24580,24590,24600,24610,24620,24630,24640,24650,24660,24670,24680,24690,24700,24710,24720,24730,24740,24750,24760,24770,24780,24790,24800,24810,24820,24830,24840,24850,24860,24870,24880,24890,24900,24910,24920,24930,24940,24950,24960,24970,24980,24990,25000,25010,25020,25030,25040,25050,25060,25070,25080,25090,25100,25110,25120,25130,25140,25150,25160,25170,25180,25190,25200,25210,25220,25230,25240,25250,25260,25270,25280,25290,25300,25310,25320,25330,25340,25350,25360,25370,25380,25390,25400,25410,25420,25430,25440,25450,25460,25470,25480,25490,25500,25510,25520,25530,25540,25550,25560,25570,25580,25590,25600,25610,25620,25630,25640,25650,25660,25670,25680,25690,25700,25710,25720,25730,25740,25750,25760,25770,25780,25790,25800,25810,25820,25830,25840,25850,25860,25870,25880,25890,25900,25910,25920,25930,25940,25950,25960,25970,25980,25990,26000,26010,26020,26030,26040,26050,26060,26070,26080,26090,26100,26110,26120,26130,26140,26150,26160,26170,26180,26190,26200,26210,26220,26230,26240,26250,26260,26270,26280,26290,26300,26310,26320,26330,26340,26350,26360,26370,26380,26390,26400,26410,26420,26430,26440,26450,26460,26470,26480,26490,26500,26510,26520,26530,26540,26550,26560,26570,26580,26590,26600,26610,26620,26630,26640,26650,26660,26670,26680,26690,26700,26710,26720,26730,26740,26750,26760,26770,26780,26790,26800,26810,26820,26830,26840,26850,26860,26870,26880,26890,26900,26910,26920,26930,26940,26950,26960,26970,26980,26990,27000,27010,27020,27030,27040,27050,27060,27070,27080,27090,27100,27110,27120,27130,27140,27150,27160,27170,27180,27190,27200,27210,27220,27230,27240,27250,27260,27270,27280,27290,27300,27310,27320,27330,27340,27350,27360,27370,27380,27390,27400,27410,27420,27430,27440,27450,27460,27470,27480,27490,27500,27510,27520,27530,27540,27550,27560,27570,27580,27590,27600,27610,27620,27630,27640,27650,27660,27670,27680,27690,27700,27710,27720,27730,27740,27750,27760,27770,27780,27790,27800,27810,27820,27830,27840,27850,27860,27870,27880,27890,27900,27910,27920,27930,27940,27950,27960,27970,27980,27990,28000,28010,28020,28030,28040,28050,28060,28070,28080,28090,28100,28110,28120,28130,28140,28150,28160,28170,28180,28190,28200,28210,28220,28230,28240,28250,28260,28270,28280,28290,28300,28310,28320,28330,28340,28350,28360,28370,28380,28390,28400,28410,28420,28430,28440,28450,28460,28470,28480,28490,28500,28510,28520,28530,28540,28550,28560,28570,28580,28590,28600,28610,28620,28630,28640,28650,28660,28670,28680,28690,28700,28710,28720,28730,28740,28750,28760,28770,28780,28790,28800,28810,28820,28830,28840,28850,28860,28870,28880,28890,28900,28910,28920,28930,28940,28950,28960,28970,28980,28990,29000,29010,29020,29030,29040,29050,29060,29070,29080,29090,29100,29110,29120,29130,29140,29150,29160,29170,29180,29190,29200,29210,29220,29230,29240,29250,29260,29270,29280,29290,29300,29310,29320,29330,29340,29350,29360,29370,29380,29390,29400,29410,29420,29430,29440,29450,29460,29470,29480,29490,29500,29510,29520,29530,29540,29550,29560,29570,29580,29590,29600,29610,29620,29630,29640,29650,29660,29670,29680,29690,29700,29710,29720,29730,29740,29750,29760,29770,29780,29790,29800,29810,29820,29830,29840,29850,29860,29870,29880,29890,29900,29910,29920,29930,29940,29950,29960,29970,29980,29990,30000,30010,30020,30030,30040,30050,30060,30070,30080,30090,30100,30110,30120,30130,30140,30150,30160,30170,30180,30190,30200,30210,30220,30230,30240,30250,30260,30270,30280,30290,30300,30310,30320,30330,30340,30350,30360,30370,30380,30390,30400,30410,30420,30430,30440,30450,30460,30470,30480,30490,30500,30510,30520,30530,30540,30550,30560,30570,30580,30590,30600,30610,30620,30630,30640,30650,30660,30670,30680,30690,30700,30710,30720,30730,30740,30750,30760,30770,30780,30790,30800,30810,30820,30830,30840,30850,30860,30870,30880,30890,30900,30910,30920,30930,30940,30950,30960,30970,30980,30990,31000,31010,31020,31030,31040,31050,31060,31070,31080,31090,31100,31110,31120,31130,31140,31150,31160,31170,31180,31190,31200,31210,31220,31230,31240,31250,31260,31270,31280,31290,31300,31310,31320,31330,31340,31350,31360,31370,31380,31390,31400,31410,31420,31430,31440,31450,31460,31470,31480,31490,31500,31510,31520,31530,31540,31550,31560,31570,31580,31590,31600,31610,31620,31630,31640,31650,31660,31670,31680,31690,31700,31710,31720,31730,31740,31750,31760,31770,31780,31790,31800,31810,31820,31830,31840,31850,31860,31870,31880,31890,31900,31910,31920,31930,31940,31950,31960,31970,31980,31990,32000,32010,32020,32030,32040,32050,32060,32070,32080,32090,32100,32110,32120,32130,32140,32150,32160,32170,32180,32190,32200,32210,32220,32230,32240,32250,32260,32270,32280,32290,32300,32310,32320,32330,32340,32350,32360,32370,32380,32390,32400,32410,32420,32430,32440,32450,32460,32470,32480,32490,32500,32510,32520,32530,32540,32550,32560,32570,32580,32590,32600,32610,32620,32630,32640,32650,32660,32670,32680,32690,32700,32710,32720,32730,32740,32750,32760,32770,32780,32790,32800,32810,32820,32830,32840,32850,32860,32870,32880,32890,32900,32910,32920,32930,32940,32950,32960,32970,32980,32990,33000,33010,33020,33030,33040,33050,33060,33070,33080,33090,33100,33110,33120,33130,33140,33150,33160,33170,33180,33190,33200,33210,33220,33230,33240,33250,33260,33270,33280,33290,33300,33310,33320,33330,33340,33350,33360,33370,33380,33390,33400,33410,33420,33430,33440,33450,33460,33470,33480,33490,33500,33510,33520,33530,33540,33550,33560,33570,33580,33590,33600,33610,33620,33630,33640,33650,33660,33670,33680,33690,33700,33710,33720,33730,33740,33750,33760,33770,33780,33790,33800,33810,33820,33830,33840,33850,33860,33870,33880,33890,33900,33910,33920,33930,33940,33950,33960,33970,33980,33990,34000,34010,34020,34030,34040,34050,34060,34070,34080,34090,34100,34110,34120,34130,34140,34150,34160,34170,34180,34190,34200,34210,34220,34230,34240,34250,34260,34270,34280,34290,34300,34310,34320,34330,34340,34350,34360,34370,34380,34390,34400,34410,34420,34430,34440,34450,34460,34470,34480,34490,34500,34510,34520,34530,34540,34550,34560,34570,34580,34590,34600,34610,34620,34630,34640,34650,34660,34670,34680,34690,34700,34710,34720,34730,34740,34750,34760,34770,34780,34790,34800,34810,34820,34830,34840,34850,34860,34870,34880,34890,34900,34910,34920,34930,34940,34950,34960,34970,34980,34990,35000,35010,35020,35030,35040,35050,35060,35070,35080,35090,35100,35110,35120,35130,35140,35150,35160,35170,35180,35190,35200,35210,35220,35230,35240,35250,35260,35270,35280,35290,35300,35310,35320,35330,35340,35350,35360,35370,35380,35390,35400,35410,35420,35430,35440,35450,35460,35470,35480,35490,35500,35510,35520,35530,35540,35550,35560,35570,35580,35590,35600,35610,35620,35630,35640,35650,35660,35670,35680,35690,35700,35710,35720,35730,35740,35750,35760,35770,35780,35790,35800,35810,35820,35830,35840,35850,35860,35870,35880,35890,35900,35910,35920,35930,35940,35950,35960,35970,35980,35990,36000,36010,36020,36030,36040,36050,36060,36070,36080,36090,36100,36110,36120,36130,36140,36150,36160,36170,36180,36190,36200,36210,36220,36230,36240,36250,36260,36270,36280,36290,36300,36310,36320,36330,36340,36350,36360,36370,36380,36390,36400,36410,36420,36430,36440,36450,36460,36470,36480,36490,36500,36510,36520,36530,36540,36550,36560,36570,36580,36590,36600,36610,36620,36630,36640,36650,36660,36670,36680,36690,36700,36710,36720,36730,36740,36750,36760,36770,36780,36790,36800,36810,36820,36830,36840,36850,36860,36870,36880,36890,36900,36910,36920,36930,36940,36950,36960,36970,36980,36990,37000,37010,37020,37030,37040,37050,37060,37070,37080,37090,37100,37110,37120,37130,37140,37150,37160,37170,37180,37190,37200,37210,37220,37230,37240,37250,37260,37270,37280,37290,37300,37310,37320,37330,37340,37350,37360,37370,37380,37390,37400,37410,37420,37430,37440,37450,37460,37470,37480,37490,37500,37510,37520,37530,37540,37550,37560,37570,37580,37590,37600,37610,37620,37630,37640,37650,37660,37670,37680,37690,37700,37710,37720,37730,37740,37750,37760,37770,37780,37790,37800,37810,37820,37830,37840,37850,37860,37870,37880,37890,37900,37910,37920,37930,37940,37950,37960,37970,37980,37990,38000,38010,38020,38030,38040,38050,38060,38070,38080,38090,38100,38110,38120,38130,38140,38150,38160,38170,38180,38190,38200,38210,38220,38230,38240,38250,38260,38270,38280,38290,38300,38310,38320,38330,38340,38350,38360,38370,38380,38390,38400,38410,38420,38430,38440,38450,38460,38470,38480,38490,38500,38510,38520,38530,38540,38550,38560,38570,38580,38590,38600,38610,38620,38630,38640,38650,38660,38670,38680,38690,38700,38710,38720,38730,38740,38750,38760,38770,38780,38790,38800,38810,38820,38830,38840,38850,38860,38870,38880,38890,38900,38910,38920,38930,38940,38950,38960,38970,38980,38990,39000,39010,39020,39030,39040,39050,39060,39070,39080,39090,39100,39110,39120,39130,39140,39150,39160,39170,39180,39190,39200,39210,39220,39230,39240,39250,39260,39270,39280,39290,39300,39310,39320,39330,39340,39350,39360,39370,39380,39390,39400,39410,39420,39430,39440,39450,39460,39470,39480,39490,39500,39510,39520,39530,39540,39550,39560,39570,39580,39590,39600,39610,39620,39630,39640,39650,39660,39670,39680,39690,39700,39710,39720,39730,39740,39750,39760,39770,39780,39790,39800,39810,39820,39830,39840,39850,39860,39870,39880,39890,39900,39910,39920,39930,39940,39950,39960,39970,39980,39990,40000,40010,40020,40030,40040,40050,40060,40070,40080,40090,40100,40110,40120,40130,40140,40150,40160,40170,40180,40190,40200,40210,40220,40230,40240,40250,40260,40270,40280,40290,40300,40310,40320,40330,40340,40350,40360,40370,40380,40390,40400,40410,40420,40430,40440,40450,40460,40470,40480,40490,40500,40510,40520,40530,40540,40550,40560,40570,40580,40590,40600,40610,40620,40630,40640,40650,40660,40670,40680,40690,40700,40710,40720,40730,40740,40750,40760,40770,40780,40790,40800,40810,40820,40830,40840,40850,40860,40870,40880,40890,40900,40910,40920,40930,40940,40950,40960,40970,40980,40990,41000,41010,41020,41030,41040,41050,41060,41070,41080,41090,41100,41110,41120,41130,41140,41150,41160,41170,41180,41190,41200,41210,41220,41230,41240,41250,41260,41270,41280,41290,41300,41310,41320,41330,41340,41350,41360,41370,41380,41390,41400,41410,41420,41430,41440,41450,41460,41470,41480,41490,41500,41510,41520,41530,41540,41550,41560,41570,41580,41590,41600,41610,41620,41630,41640,41650,41660,41670,41680,41690,41700,41710,41720,41730,41740,41750,41760,41770,41780,41790,41800,41810,41820,41830,41840,41850,41860,41870,41880,41890,41900,41910,41920,41930,41940,41950,41960,41970,41980,41990,42000,42010,42020,42030,42040,42050,42060,42070,42080,42090,42100,42110,42120,42130,42140,42150,42160,42170,42180,42190,42200,42210,42220,42230,42240,42250,42260,42270,42280,42290,42300,42310,42320,42330,42340,42350,42360,42370,42380,42390,42400,42410,42420,42430,42440,42450,42460,42470,42480,42490,42500,42510,42520,42530,42540,42550,42560,42570,42580,42590,42600,42610,42620,42630,42640,42650,42660,42670,42680,42690,42700,42710,42720,42730,42740,42750,42760,42770,42780,42790,42800,42810,42820,42830,42840,42850,42860,42870,42880,42890,42900,42910,42920,42930,42940,42950,42960,42970,42980,42990,43000,43010,43020,43030,43040,43050,43060,43070,43080,43090,43100,43110,43120,43130,43140,43150,43160,43170,43180,43190,43200,43210,43220,43230,43240,43250,43260,43270,43280,43290,43300,43310,43320,43330,43340,43350,43360,43370,43380,43390,43400,43410,43420,43430,43440,43450,43460,43470,43480,43490,43500,43510,43520,43530,43540,43550,43560,43570,43580,43590,43600,43610,43620,43630,43640,43650,43660,43670,43680,43690,43700,43710,43720,43730,43740,43750,43760,43770,43780,43790,43800,43810,43820,43830,43840,43850,43860,43870,43880,43890,43900,43910,43920,43930,43940,43950,43960,43970,43980,43990,44000,44010,44020,44030,44040,44050,44060,44070,44080,44090,44100,44110,44120,44130,44140,44150,44160,44170,44180,44190,44200,44210,44220,44230,44240,44250,44260,44270,44280,44290,44300,44310,44320,44330,44340,44350,44360,44370,44380,44390,44400,44410,44420,44430,44440,44450,44460,44470,44480,44490,44500,44510,44520,44530,44540,44550,44560,44570,44580,44590,44600,44610,44620,44630,44640,44650,44660,44670,44680,44690,44700,44710,44720,44730,44740,44750,44760,44770,44780,44790,44800,44810,44820,44830,44840,44850,44860,44870,44880,44890,44900,44910,44920,44930,44940,44950,44960,44970,44980,44990,45000,45010,45020,45030,45040,45050,45060,45070,45080,45090,45100,45110,45120,45130,45140,45150,45160,45170,45180,45190,45200,45210,45220,45230,45240,45250,45260,45270,45280,45290,45300,45310,45320,45330,45340,45350,45360,45370,45380,45390,45400,45410,45420,45430,45440,45450,45460,45470,45480,45490,45500,45510,45520,45530,45540,45550,45560,45570,45580,45590,45600,45610,45620,45630,45640,45650,45660,45670,45680,45690,45700,45710,45720,45730,45740,45750,45760,45770,45780,45790,45800,45810,45820,45830,45840,45850,45860,45870,45880,45890,45900,45910,45920,45930,45940,45950,45960,45970,45980,45990,46000,46010,46020,46030,46040,46050,46060,46070,46080,46090,46100,46110,46120,46130,46140,46150,46160,46170,46180,46190,46200,46210,46220,46230,46240,46250,46260,46270,46280,46290,46300,46310,46320,46330,46340,46350,46360,46370,46380,46390,46400,46410,46420,46430,46440,46450,46460,46470,46480,46490,46500,46510,46520,46530,46540,46550,46560,46570,46580,46590,46600,46610,46620,46630,46640,46650,46660,46670,46680,46690,46700,46710,46720,46730,46740,46750,46760,46770,46780,46790,46800,46810,46820,46830,46840,46850,46860,46870,46880,46890,46900,46910,46920,46930,46940,46950,46960,46970,46980,46990,47000,47010,47020,47030,47040,47050,47060,47070,47080,47090,47100,47110,47120,47130,47140,47150,47160,47170,47180,47190,47200,47210,47220,47230,47240,47250,47260,47270,47280,47290,47300,47310,47320,47330,47340,47350,47360,47370,47380,47390,47400,47410,47420,47430,47440,47450,47460,47470,47480,47490,47500,47510,47520,47530,47540,47550,47560,47570,47580,47590,47600,47610,47620,47630,47640,47650,47660,47670,47680,47690,47700,47710,47720,47730,47740,47750,47760,47770,47780,47790,47800,47810,47820,47830,47840,47850,47860,47870,47880,47890,47900,47910,47920,47930,47940,47950,47960,47970,47980,47990,48000,48010,48020,48030,48040,48050,48060,48070,48080,48090,48100,48110,48120,48130,48140,48150,48160,48170,48180,48190,48200,48210,48220,48230,48240,48250,48260,48270,48280,48290,48300,48310,48320,48330,48340,48350,48360,48370,48380,48390,48400,48410,48420,48430,48440,48450,48460,48470,48480,48490,48500,48510,48520,48530,48540,48550,48560,48570,48580,48590,48600,48610,48620,48630,48640,48650,48660,48670,48680,48690,48700,48710,48720,48730,48740,48750,48760,48770,48780,48790,48800,48810,48820,48830,48840,48850,48860,48870,48880,48890,48900,48910,48920,48930,48940,48950,48960,48970,48980,48990,49000,49010,49020,49030,49040,49050,49060,49070,49080,49090,49100,49110,49120,49130,49140,49150,49160,49170,49180,49190,49200,49210,49220,49230,49240,49250,49260,49270,49280,49290,49300,49310,49320,49330,49340,49350,49360,49370,49380,49390,49400,49410,49420,49430,49440,49450,49460,49470,49480,49490,49500,49510,49520,49530,49540,49550,49560,49570,49580,49590,49600,49610,49620,49630,49640,49650,49660,49670,49680,49690,49700,49710,49720,49730,49740,49750,49760,49770,49780,49790,49800,49810,49820,49830,49840,49850,49860,49870,49880,49890,49900,49910,49920,49930,49940,49950,49960,49970,49980,49990,50000,50010,50020,50030,50040,50050,50060,50070,50080,50090,50100,50110,50120,50130,50140,50150,50160,50170,50180,50190,50200,50210,50220,50230,50240,50250,50260,50270,50280,50290,50300,50310,50320,50330,50340,50350,50360,50370,50380,50390,50400,50410,50420,50430,50440,50450,50460,50470,50480,50490,50500,50510,50520,50530,50540,50550,50560,50570,50580,50590,50600,50610,50620,50630,50640,50650,50660,50670,50680,50690,50700,50710,50720,50730,50740,50750,50760,50770,50780,50790,50800,50810,50820,50830,50840,50850,50860,50870,50880,50890,50900,50910,50920,50930,50940,50950,50960,50970,50980,50990,51000,51010,51020,51030,51040,51050,51060,51070,51080,51090,51100,51110,51120,51130,51140,51150,51160,51170,51180,51190,51200,51210,51220,51230,51240,51250,51260,51270,51280,51290,51300,51310,51320,51330,51340,51350,51360,51370,51380,51390,51400,51410,51420,51430,51440,51450,51460,51470,51480,51490,51500,51510,51520,51530,51540,51550,51560,51570,51580,51590,51600,51610,51620,51630,51640,51650,51660,51670,51680,51690,51700,51710,51720,51730,51740,51750,51760,51770,51780,51790,51800,51810,51820,51830,51840,51850,51860,51870,51880,51890,51900,51910,51920,51930,51940,51950,51960,51970,51980,51990,52000,52010,52020,52030,52040,52050,52060,52070,52080,52090,52100,52110,52120,52130,52140,52150,52160,52170,52180,52190,52200,52210,52220,52230,52240,52250,52260,52270,52280,52290,52300,52310,52320,52330,52340,52350,52360,52370,52380,52390,52400,52410,52420,52430,52440,52450,52460,52470,52480,52490,52500,52510,52520,52530,52540,52550,52560,52570,52580,52590,52600,52610,52620,52630,52640,52650,52660,52670,52680,52690,52700,52710,52720,52730,52740,52750,52760,52770,52780,52790,52800,52810,52820,52830,52840,52850,52860,52870,52880,52890,52900,52910,52920,52930,52940,52950,52960,52970,52980,52990,53000,53010,53020,53030,53040,53050,53060,53070,53080,53090,53100,53110,53120,53130,53140,53150,53160,53170,53180,53190,53200,53210,53220,53230,53240,53250,53260,53270,53280,53290,53300,53310,53320,53330,53340,53350,53360,53370,53380,53390,53400,53410,53420,53430,53440,53450,53460,53470,53480,53490,53500,53510,53520,53530,53540,53550,53560,53570,53580,53590,53600,53610,53620,53630,53640,53650,53660,53670,53680,53690,53700,53710,53720,53730,53740,53750,53760,53770,53780,53790,53800,53810,53820,53830,53840,53850,53860,53870,53880,53890,53900,53910,53920,53930,53940,53950,53960,53970,53980,53990,54000,54010,54020,54030,54040,54050,54060,54070,54080,54090,54100,54110,54120,54130,54140,54150,54160,54170,54180,54190,54200,54210,54220,54230,54240,54250,54260,54270,54280,54290,54300,54310,54320,54330,54340,54350,54360,54370,54380,54390,54400,54410,54420,54430,54440,54450,54460,54470,54480,54490,54500,54510,54520,54530,54540,54550,54560,54570,54580,54590,54600,54610,54620,54630,54640,54650,54660,54670,54680,54690,54700,54710,54720,54730,54740,54750,54760,54770,54780,54790,54800,54810,54820,54830,54840,54850,54860,54870,54880,54890,54900,54910,54920,54930,54940,54950,54960,54970,54980,54990,55000,55010,55020,55030,55040,55050,55060,55070,55080,55090,55100,55110,55120,55130,55140,55150,55160,55170,55180,55190,55200,55210,55220,55230,55240,55250,55260,55270,55280,55290,55300,55310,55320,55330,55340,55350,55360,55370,55380,55390,55400,55410,55420,55430,55440,55450,55460,55470,55480,55490,55500,55510,55520,55530,55540,55550,55560,55570,55580,55590,55600,55610,55620,55630,55640,55650,55660,55670,55680,55690,55700,55710,55720,55730,55740,55750,55760,55770,55780,55790,55800,55810,55820,55830,55840,55850,55860,55870,55880,55890,55900,55910,55920,55930,55940,55950,55960,55970,55980,55990,56000,56010,56020,56030,56040,56050,56060,56070,56080,56090,56100,56110,56120,56130,56140,56150,56160,56170,56180,56190,56200,56210,56220,56230,56240,56250,56260,56270,56280,56290,56300,56310,56320,56330,56340,56350,56360,56370,56380,56390,56400,56410,56420,56430,56440,56450,56460,56470,56480,56490,56500,56510,56520,56530,56540,56550,56560,56570,56580,56590,56600,56610,56620,56630,56640,56650,56660,56670,56680,56690,56700,56710,56720,56730,56740,56750,56760,56770,56780,56790,56800,56810,56820,56830,56840,56850,56860,56870,56880,56890,56900,56910,56920,56930,56940,56950,56960,56970,56980,56990,57000,57010,57020,57030,57040,57050,57060,57070,57080,57090,57100,57110,57120,57130,57140,57150,57160,57170,57180,57190,57200,57210,57220,57230,57240,57250,57260,57270,57280,57290,57300,57310,57320,57330,57340,57350,57360,57370,57380,57390,57400,57410,57420,57430,57440,57450,57460,57470,57480,57490,57500,57510,57520,57530,57540,57550,57560,57570,57580,57590,57600,57610,57620,57630,57640,57650,57660,57670,57680,57690,57700,57710,57720,57730,57740,57750,57760,57770,57780,57790,57800,57810,57820,57830,57840,57850,57860,57870,57880,57890,57900,57910,57920,57930,57940,57950,57960,57970,57980,57990,58000,58010,58020,58030,58040,58050,58060,58070,58080,58090,58100,58110,58120,58130,58140,58150,58160,58170,58180,58190,58200,58210,58220,58230,58240,58250,58260,58270,58280,58290,58300,58310,58320,58330,58340,58350,58360,58370,58380,58390,58400,58410,58420,58430,58440,58450,58460,58470,58480,58490,58500,58510,58520,58530,58540,58550,58560,58570,58580,58590,58600,58610,58620,58630,58640,58650,58660,58670,58680,58690,58700,58710,58720,58730,58740,58750,58760,58770,58780,58790,58800,58810,58820,58830,58840,58850,58860,58870,58880,58890,58900,58910,58920,58930,58940,58950,58960,58970,58980,58990,59000,59010,59020,59030,59040,59050,59060,59070,59080,59090,59100,59110,59120,59130,59140,59150,59160,59170,59180,59190,59200,59210,59220,59230,59240,59250,59260,59270,59280,59290,59300,59310,59320,59330,59340,59350,59360,59370,59380,59390,59400,59410,59420,59430,59440,59450,59460,59470,59480,59490,59500,59510,59520,59530,59540,59550,59560,59570,59580,59590,59600,59610,59620,59630,59640,59650,59660,59670,59680,59690,59700,59710,59720,59730,59740,59750,59760,59770,59780,59790,59800,59810,59820,59830,59840,59850,59860,59870,59880,59890,59900,59910,59920,59930,59940,59950,59960,59970,59980,59990,60000,60010,60020,60030,60040,60050,60060,60070,60080,60090,60100,60110,60120,60130,60140,60150,60160,60170,60180,60190,60200,60210,60220,60230,60240,60250,60260,60270,60280,60290,60300,60310,60320,60330,60340,60350,60360,60370,60380,60390,60400,60410,60420,60430,60440,60450,60460,60470,60480,60490,60500,60510,60520,60530,60540,60550,60560,60570,60580,60590,60600,60610,60620,60630,60640,60650,60660,60670,60680,60690,60700,60710,60720,60730,60740,60750,60760,60770,60780,60790,60800,60810,60820,60830,60840,60850,60860,60870,60880,60890,60900,60910,60920,60930,60940,60950,60960,60970,60980,60990,61000,61010,61020,61030,61040,61050,61060,61070,61080,61090,61100,61110,61120,61130,61140,61150,61160,61170,61180,61190,61200,61210,61220,61230,61240,61250,61260,61270,61280,61290,61300,61310,61320,61330,61340,61350,61360,61370,61380,61390,61400,61410,61420,61430,61440,61450,61460,61470,61480,61490,61500,61510,61520,61530,61540,61550,61560,61570,61580,61590,61600,61610,61620,61630,61640,61650,61660,61670,61680,61690,61700,61710,61720,61730,61740,61750,61760,61770,61780,61790,61800,61810,61820,61830,61840,61850,61860,61870,61880,61890,61900,61910,61920,61930,61940,61950,61960,61970,61980,61990,62000,62010,62020,62030,62040,62050,62060,62070,62080,62090,62100,62110,62120,62130,62140,62150,62160,62170,62180,62190,62200,62210,62220,62230,62240,62250,62260,62270,62280,62290,62300,62310,62320,62330,62340,62350,62360,62370,62380,62390,62400,62410,62420,62430,62440,62450,62460,62470,62480,62490,62500,62510,62520,62530,62540,62550,62560,62570,62580,62590,62600,62610,62620,62630,62640,62650,62660,62670,62680,62690,62700,62710,62720,62730,62740,62750,62760,62770,62780,62790,62800,62810,62820,62830,62840,62850,62860,62870,62880,62890,62900,62910,62920,62930,62940,62950,62960,62970,62980,62990,63000,63010,63020,63030,63040,63050,63060,63070,63080,63090,63100,63110,63120,63130,63140,63150,63160,63170,63180,63190,63200,63210,63220,63230,63240,63250,63260,63270,63280,63290,63300,63310,63320,63330,63340,63350,63360,63370,63380,63390,63400,63410,63420,63430,63440,63450,63460,63470,63480,63490,63500,63510,63520,63530,63540,63550,63560,63570,63580,63590,63600,63610,63620,63630,63640,63650,63660,63670,63680,63690,63700,63710,63720,63730,63740,63750,63760,63770,63780,63790,63800,63810,63820,63830,63840,63850,63860,63870,63880,63890,63900,63910,63920,63930,63940,63950,63960,63970,63980,63990,64000,64010,64020,64030,64040,64050,64060,64070,64080,64090,64100,64110,64120,64130,64140,64150,64160,64170,64180,64190,64200,64210,64220,64230,64240,64250,64260,64270,64280,64290,64300,64310,64320,64330,64340,64350,64360,64370,64380,64390,64400,64410,64420,64430,64440,64450,64460,64470,64480,64490,64500,64510,64520,64530,64540,64550,64560,64570,64580,64590,64600,64610,64620,64630,64640,64650,64660,64670,64680,64690,64700,64710,64720,64730,64740,64750,64760,64770,64780,64790,64800,64810,64820,64830,64840,64850,64860,64870,64880,64890,64900,64910,64920,64930,64940,64950,64960,64970,64980,64990,65000,65010,65020,65030,65040,65050,65060,65070,65080,65090,65100,65110,65120,65130,65140,65150,65160,65170,65180,65190,65200,65210,65220,65230,65240,65250,65260,65270,65280,65290,65300,65310,65320,65330,65340,65350,65360,65370,65380,65390,65400,65410,65420,65430,65440,65450,65460,65470,65480,65490,65500,65510,65520,65530,65540,65550,65560,65570,65580,65590,65600,65610,65620,65630,65640,65650,65660,65670,65680,65690,65700,65710,65720,65730,65740,65750,65760,65770,65780,65790,65800,65810,65820,65830,65840,65850,65860,65870,65880,65890,65900,65910,65920,65930,65940,65950,65960,65970,65980,65990,66000,66010,66020,66030,66040,66050,66060,66070,66080,66090,66100,66110,66120,66130,66140,66150,66160,66170,66180,66190,66200,66210,66220,66230,66240,66250,66260,66270,66280,66290,66300,66310,66320,66330,66340,66350,66360,66370,66380,66390,66400,66410,66420,66430,66440,66450,66460,66470,66480,66490,66500,66510,66520,66530,66540,66550,66560,66570,66580,66590,66600,66610,66620,66630,66640,66650,66660,66670,66680,66690,66700,66710,66720,66730,66740,66750,66760,66770,66780,66790,66800,66810,66820,66830,66840,66850,66860,66870,66880,66890,66900,66910,66920,66930,66940,66950,66960,66970,66980,66990,67000,67010,67020,67030,67040,67050,67060,67070,67080,67090,67100,67110,67120,67130,67140,67150,67160,67170,67180,67190,67200,67210,67220,67230,67240,67250,67260,67270,67280,67290,67300,67310,67320,67330,67340,67350,67360,67370,67380,67390,67400,67410,67420,67430,67440,67450,67460,67470,67480,67490,67500,67510,67520,67530,67540,67550,67560,67570,67580,67590,67600,67610,67620,67630,67640,67650,67660,67670,67680,67690,67700,67710,67720,67730,67740,67750,67760,67770,67780,67790,67800,67810,67820,67830,67840,67850,67860,67870,67880,67890,67900,67910,67920,67930,67940,67950,67960,67970,67980,67990,68000,68010,68020,68030,68040,68050,68060,68070,68080,68090,68100,68110,68120,68130,68140,68150,68160,68170,68180,68190,68200,68210,68220,68230,68240,68250,68260,68270,68280,68290,68300,68310,68320,68330,68340,68350,68360,68370,68380,68390,68400,68410,68420,68430,68440,68450,68460,68470,68480,68490,68500,68510,68520,68530,68540,68550,68560,68570,68580,68590,68600,68610,68620,68630,68640,68650,68660,68670,68680,68690,68700,68710,68720,68730,68740,68750,68760,68770,68780,68790,68800,68810,68820,68830,68840,68850,68860,68870,68880,68890,68900,68910,68920,68930,68940,68950,68960,68970,68980,68990,69000,69010,69020,69030,69040,69050,69060,69070,69080,69090,69100,69110,69120,69130,69140,69150,69160,69170,69180,69190,69200,69210,69220,69230,69240,69250,69260,69270,69280,69290,69300,69310,69320,69330,69340,69350,69360,69370,69380,69390,69400,69410,69420,69430,69440,69450,69460,69470,69480,69490,69500,69510,69520,69530,69540,69550,69560,69570,69580,69590,69600,69610,69620,69630,69640,69650,69660,69670,69680,69690,69700,69710,69720,69730,69740,69750,69760,69770,69780,69790,69800,69810,69820,69830,69840,69850,69860,69870,69880,69890,69900,69910,69920,69930,69940,69950,69960,69970,69980,69990,70000,70010,70020,70030,70040,70050,70060,70070,70080,70090,70100,70110,70120,70130,70140,70150,70160,70170,70180,70190,70200,70210,70220,70230,70240,70250,70260,70270,70280,70290,70300,70310,70320,70330,70340,70350,70360,70370,70380,70390,70400,70410,70420,70430,70440,70450,70460,70470,70480,70490,70500,70510,70520,70530,70540,70550,70560,70570,70580,70590,70600,70610,70620,70630,70640,70650,70660,70670,70680,70690,70700,70710,70720,70730,70740,70750,70760,70770,70780,70790,70800,70810,70820,70830,70840,70850,70860,70870,70880,70890,70900,70910,70920,70930,70940,70950,70960,70970,70980,70990,71000,71010,71020,71030,71040,71050,71060,71070,71080,71090,71100,71110,71120,71130,71140,71150,71160,71170,71180,71190,71200,71210,71220,71230,71240,71250,71260,71270,71280,71290,71300,71310,71320,71330,71340,71350,71360,71370,71380,71390,71400,71410,71420,71430,71440,71450,71460,71470,71480,71490,71500,71510,71520,71530,71540,71550,71560,71570,71580,71590,71600,71610,71620,71630,71640,71650,71660,71670,71680,71690,71700,71710,71720,71730,71740,71750,71760,71770,71780,71790,71800,71810,71820,71830,71840,71850,71860,71870,71880,71890,71900,71910,71920,71930,71940,71950,71960,71970,71980,71990,72000,72010,72020,72030,72040,72050,72060,72070,72080,72090,72100,72110,72120,72130,72140,72150,72160,72170,72180,72190,72200,72210,72220,72230,72240,72250,72260,72270,72280,72290,72300,72310,72320,72330,72340,72350,72360,72370,72380,72390,72400,72410,72420,72430,72440,72450,72460,72470,72480,72490,72500,72510,72520,72530,72540,72550,72560,72570,72580,72590,72600,72610,72620,72630,72640,72650,72660,72670,72680,72690,72700,72710,72720,72730,72740,72750,72760,72770,72780,72790,72800,72810,72820,72830,72840,72850,72860,72870,72880,72890,72900,72910,72920,72930,72940,72950,72960,72970,72980,72990,73000,73010,73020,73030,73040,73050,73060,73070,73080,73090,73100,73110,73120,73130,73140,73150,73160,73170,73180,73190,73200,73210,73220,73230,73240,73250,73260,73270,73280,73290,73300,73310,73320,73330,73340,73350,73360,73370,73380,73390,73400,73410,73420,73430,73440,73450,73460,73470,73480,73490,73500,73510,73520,73530,73540,73550,73560,73570,73580,73590,73600,73610,73620,73630,73640,73650,73660,73670,73680,73690,73700,73710,73720,73730,73740,73750,73760,73770,73780,73790,73800,73810,73820,73830,73840,73850,73860,73870,73880,73890,73900,73910,73920,73930,73940,73950,73960,73970,73980,73990,74000,74010,74020,74030,74040,74050,74060,74070,74080,74090,74100,74110,74120,74130,74140,74150,74160,74170,74180,74190,74200,74210,74220,74230,74240,74250,74260,74270,74280,74290,74300,74310,74320,74330,74340,74350,74360,74370,74380,74390,74400,74410,74420,74430,74440,74450,74460,74470,74480,74490,74500,74510,74520,74530,74540,74550,74560,74570,74580,74590,74600,74610,74620,74630,74640,74650,74660,74670,74680,74690,74700,74710,74720,74730,74740,74750,74760,74770,74780,74790,74800,74810,74820,74830,74840,74850,74860,74870,74880,74890,74900,74910,74920,74930,74940,74950,74960,74970,74980,74990,75000,75010,75020,75030,75040,75050,75060,75070,75080,75090,75100,75110,75120,75130,75140,75150,75160,75170,75180,75190,75200,75210,75220,75230,75240,75250,75260,75270,75280,75290,75300,75310,75320,75330,75340,75350,75360,75370,75380,75390,75400,75410,75420,75430,75440,75450,75460,75470,75480,75490,75500,75510,75520,75530,75540,75550,75560,75570,75580,75590,75600,75610,75620,75630,75640,75650,75660,75670,75680,75690,75700,75710,75720,75730,75740,75750,75760,75770,75780,75790,75800,75810,75820,75830,75840,75850,75860,75870,75880,75890,75900,75910,75920,75930,75940,75950,75960,75970,75980,75990,76000,76010,76020,76030,76040,76050,76060,76070,76080,76090,76100,76110,76120,76130,76140,76150,76160,76170,76180,76190,76200,76210,76220,76230,76240,76250,76260,76270,76280,76290,76300,76310,76320,76330,76340,76350,76360,76370,76380,76390,76400,76410,76420,76430,76440,76450,76460,76470,76480,76490,76500,76510,76520,76530,76540,76550,76560,76570,76580,76590,76600,76610,76620,76630,76640,76650,76660,76670,76680,76690,76700,76710,76720,76730,76740,76750,76760,76770,76780,76790,76800,76810,76820,76830,76840,76850,76860,76870,76880,76890,76900,76910,76920,76930,76940,76950,76960,76970,76980,76990,77000,77010,77020,77030,77040,77050,77060,77070,77080,77090,77100,77110,77120,77130,77140,77150,77160,77170,77180,77190,77200,77210,77220,77230,77240,77250,77260,77270,77280,77290,77300,77310,77320,77330,77340,77350,77360,77370,77380,77390,77400,77410,77420,77430,77440,77450,77460,77470,77480,77490,77500,77510,77520,77530,77540,77550,77560,77570,77580,77590,77600,77610,77620,77630,77640,77650,77660,77670,77680,77690,77700,77710,77720,77730,77740,77750,77760,77770,77780,77790,77800,77810,77820,77830,77840,77850,77860,77870,77880,77890,77900,77910,77920,77930,77940,77950,77960,77970,77980,77990,78000,78010,78020,78030,78040,78050,78060,78070,78080,78090,78100,78110,78120,78130,78140,78150,78160,78170,78180,78190,78200,78210,78220,78230,78240,78250,78260,78270,78280,78290,78300,78310,78320,78330,78340,78350,78360,78370,78380,78390,78400,78410,78420,78430,78440,78450,78460,78470,78480,78490,78500,78510,78520,78530,78540,78550,78560,78570,78580,78590,78600,78610,78620,78630,78640,78650,78660,78670,78680,78690,78700,78710,78720,78730,78740,78750,78760,78770,78780,78790,78800,78810,78820,78830,78840,78850,78860,78870,78880,78890,78900,78910,78920,78930,78940,78950,78960,78970,78980,78990,79000,79010,79020,79030,79040,79050,79060,79070,79080,79090,79100,79110,79120,79130,79140,79150,79160,79170,79180,79190,79200,79210,79220,79230,79240,79250,79260,79270,79280,79290,79300,79310,79320,79330,79340,79350,79360,79370,79380,79390,79400,79410,79420,79430,79440,79450,79460,79470,79480,79490,79500,79510,79520,79530,79540,79550,79560,79570,79580,79590,79600,79610,79620,79630,79640,79650,79660,79670,79680,79690,79700,79710,79720,79730,79740,79750,79760,79770,79780,79790,79800,79810,79820,79830,79840,79850,79860,79870,79880,79890,79900,79910,79920,79930,79940,79950,79960,79970,79980,79990,80000,80010,80020,80030,80040,80050,80060,80070,80080,80090,80100,80110,80120,80130,80140,80150,80160,80170,80180,80190,80200,80210,80220,80230,80240,80250,80260,80270,80280,80290,80300,80310,80320,80330,80340,80350,80360,80370,80380,80390,80400,80410,80420,80430,80440,80450,80460,80470,80480,80490,80500,80510,80520,80530,80540,80550,80560,80570,80580,80590,80600,80610,80620,80630,80640,80650,80660,80670,80680,80690,80700,80710,80720,80730,80740,80750,80760,80770,80780,80790,80800,80810,80820,80830,80840,80850,80860,80870,80880,80890,80900,80910,80920,80930,80940,80950,80960,80970,80980,80990,81000,81010,81020,81030,81040,81050,81060,81070,81080,81090,81100,81110,81120,81130,81140,81150,81160,81170,81180,81190,81200,81210,81220,81230,81240,81250,81260,81270,81280,81290,81300,81310,81320,81330,81340,81350,81360,81370,81380,81390,81400,81410,81420,81430,81440,81450,81460,81470,81480,81490,81500,81510,81520,81530,81540,81550,81560,81570,81580,81590,81600,81610,81620,81630,81640,81650,81660,81670,81680,81690,81700,81710,81720,81730,81740,81750,81760,81770,81780,81790,81800,81810,81820,81830,81840,81850,81860,81870,81880,81890,81900,81910,81920,81930,81940,81950,81960,81970,81980,81990,82000,82010,82020,82030,82040,82050,82060,82070,82080,82090,82100,82110,82120,82130,82140,82150,82160,82170,82180,82190,82200,82210,82220,82230,82240,82250,82260,82270,82280,82290,82300,82310,82320,82330,82340,82350,82360,82370,82380,82390,82400,82410,82420,82430,82440,82450,82460,82470,82480,82490,82500,82510,82520,82530,82540,82550,82560,82570,82580,82590,82600,82610,82620,82630,82640,82650,82660,82670,82680,82690,82700,82710,82720,82730,82740,82750,82760,82770,82780,82790,82800,82810,82820,82830,82840,82850,82860,82870,82880,82890,82900,82910,82920,82930,82940,82950,82960,82970,82980,82990,83000,83010,83020,83030,83040,83050,83060,83070,83080,83090,83100,83110,83120,83130,83140,83150,83160,83170,83180,83190,83200,83210,83220,83230,83240,83250,83260,83270,83280,83290,83300,83310,83320,83330,83340,83350,83360,83370,83380,83390,83400,83410,83420,83430,83440,83450,83460,83470,83480,83490,83500,83510,83520,83530,83540,83550,83560,83570,83580,83590,83600,83610,83620,83630,83640,83650,83660,83670,83680,83690,83700,83710,83720,83730,83740,83750,83760,83770,83780,83790,83800,83810,83820,83830,83840,83850,83860,83870,83880,83890,83900,83910,83920,83930,83940,83950,83960,83970,83980,83990,84000,84010,84020,84030,84040,84050,84060,84070,84080,84090,84100,84110,84120,84130,84140,84150,84160,84170,84180,84190,84200,84210,84220,84230,84240,84250,84260,84270,84280,84290,84300,84310,84320,84330,84340,84350,84360,84370,84380,84390,84400,84410,84420,84430,84440,84450,84460,84470,84480,84490,84500,84510,84520,84530,84540,84550,84560,84570,84580,84590,84600,84610,84620,84630,84640,84650,84660,84670,84680,84690,84700,84710,84720,84730,84740,84750,84760,84770,84780,84790,84800,84810,84820,84830,84840,84850,84860,84870,84880,84890,84900,84910,84920,84930,84940,84950,84960,84970,84980,84990,85000,85010,85020,85030,85040,85050,85060,85070,85080,85090,85100,85110,85120,85130,85140,85150,85160,85170,85180,85190,85200,85210,85220,85230,85240,85250,85260,85270,85280,85290,85300,85310,85320,85330,85340,85350,85360,85370,85380,85390,85400,85410,85420,85430,85440,85450,85460,85470,85480,85490,85500,85510,85520,85530,85540,85550,85560,85570,85580,85590,85600,85610,85620,85630,85640,85650,85660,85670,85680,85690,85700,85710,85720,85730,85740,85750,85760,85770,85780,85790,85800,85810,85820,85830,85840,85850,85860,85870,85880,85890,85900,85910,85920,85930,85940,85950,85960,85970,85980,85990,86000,86010,86020,86030,86040,86050,86060,86070,86080,86090,86100,86110,86120,86130,86140,86150,86160,86170,86180,86190,86200,86210,86220,86230,86240,86250,86260,86270,86280,86290,86300,86310,86320,86330,86340,86350,86360,86370,86380,86390,86400,86410,86420,86430,86440,86450,86460,86470,86480,86490,86500,86510,86520,86530,86540,86550,86560,86570,86580,86590,86600,86610,86620,86630,86640,86650,86660,86670,86680,86690,86700,86710,86720,86730,86740,86750,86760,86770,86780,86790,86800,86810,86820,86830,86840,86850,86860,86870,86880,86890,86900,86910,86920,86930,86940,86950,86960,86970,86980,86990,87000,87010,87020,87030,87040,87050,87060,87070,87080,87090,87100,87110,87120,87130,87140,87150,87160,87170,87180,87190,87200,87210,87220,87230,87240,87250,87260,87270,87280,87290,87300,87310,87320,87330,87340,87350,87360,87370,87380,87390,87400,87410,87420,87430,87440,87450,87460,87470,87480,87490,87500,87510,87520,87530,87540,87550,87560,87570,87580,87590,87600,87610,87620,87630,87640,87650,87660,87670,87680,87690,87700,87710,87720,87730,87740,87750,87760,87770,87780,87790,87800,87810,87820,87830,87840,87850,87860,87870,87880,87890,87900,87910,87920,87930,87940,87950,87960,87970,87980,87990,88000,88010,88020,88030,88040,88050,88060,88070,88080,88090,88100,88110,88120,88130,88140,88150,88160,88170,88180,88190,88200,88210,88220,88230,88240,88250,88260,88270,88280,88290,88300,88310,88320,88330,88340,88350,88360,88370,88380,88390,88400,88410,88420,88430,88440,88450,88460,88470,88480,88490,88500,88510,88520,88530,88540,88550,88560,88570,88580,88590,88600,88610,88620,88630,88640,88650,88660,88670,88680,88690,88700,88710,88720,88730,88740,88750,88760,88770,88780,88790,88800,88810,88820,88830,88840,88850,88860,88870,88880,88890,88900,88910,88920,88930,88940,88950,88960,88970,88980,88990,89000,89010,89020,89030,89040,89050,89060,89070,89080,89090,89100,89110,89120,89130,89140,89150,89160,89170,89180,89190,89200,89210,89220,89230,89240,89250,89260,89270,89280,89290,89300,89310,89320,89330,89340,89350,89360,89370,89380,89390,89400,89410,89420,89430,89440,89450,89460,89470,89480,89490,89500,89510,89520,89530,89540,89550,89560,89570,89580,89590,89600,89610,89620,89630,89640,89650,89660,89670,89680,89690,89700,89710,89720,89730,89740,89750,89760,89770,89780,89790,89800,89810,89820,89830,89840,89850,89860,89870,89880,89890,89900,89910,89920,89930,89940,89950,89960,89970,89980,89990,90000,90010,90020,90030,90040,90050,90060,90070,90080,90090,90100,90110,90120,90130,90140,90150,90160,90170,90180,90190,90200,90210,90220,90230,90240,90250,90260,90270,90280,90290,90300,90310,90320,90330,90340,90350,90360,90370,90380,90390,90400,90410,90420,90430,90440,90450,90460,90470,90480,90490,90500,90510,90520,90530,90540,90550,90560,90570,90580,90590,90600,90610,90620,90630,90640,90650,90660,90670,90680,90690,90700,90710,90720,90730,90740,90750,90760,90770,90780,90790,90800,90810,90820,90830,90840,90850,90860,90870,90880,90890,90900,90910,90920,90930,90940,90950,90960,90970,90980,90990,91000,91010,91020,91030,91040,91050,91060,91070,91080,91090,91100,91110,91120,91130,91140,91150,91160,91170,91180,91190,91200,91210,91220,91230,91240,91250,91260,91270,91280,91290,91300,91310,91320,91330,91340,91350,91360,91370,91380,91390,91400,91410,91420,91430,91440,91450,91460,91470,91480,91490,91500,91510,91520,91530,91540,91550,91560,91570,91580,91590,91600,91610,91620,91630,91640,91650,91660,91670,91680,91690,91700,91710,91720,91730,91740,91750,91760,91770,91780,91790,91800,91810,91820,91830,91840,91850,91860,91870,91880,91890,91900,91910,91920,91930,91940,91950,91960,91970,91980,91990,92000,92010,92020,92030,92040,92050,92060,92070,92080,92090,92100,92110,92120,92130,92140,92150,92160,92170,92180,92190,92200,92210,92220,92230,92240,92250,92260,92270,92280,92290,92300,92310,92320,92330,92340,92350,92360,92370,92380,92390,92400,92410,92420,92430,92440,92450,92460,92470,92480,92490,92500,92510,92520,92530,92540,92550,92560,92570,92580,92590,92600,92610,92620,92630,92640,92650,92660,92670,92680,92690,92700,92710,92720,92730,92740,92750,92760,92770,92780,92790,92800,92810,92820,92830,92840,92850,92860,92870,92880,92890,92900,92910,92920,92930,92940,92950,92960,92970,92980,92990,93000,93010,93020,93030,93040,93050,93060,93070,93080,93090,93100,93110,93120,93130,93140,93150,93160,93170,93180,93190,93200,93210,93220,93230,93240,93250,93260,93270,93280,93290,93300,93310,93320,93330,93340,93350,93360,93370,93380,93390,93400,93410,93420,93430,93440,93450,93460,93470,93480,93490,93500,93510,93520,93530,93540,93550,93560,93570,93580,93590,93600,93610,93620,93630,93640,93650,93660,93670,93680,93690,93700,93710,93720,93730,93740,93750,93760,93770,93780,93790,93800,93810,93820,93830,93840,93850,93860,93870,93880,93890,93900,93910,93920,93930,93940,93950,93960,93970,93980,93990,94000,94010,94020,94030,94040,94050,94060,94070,94080,94090,94100,94110,94120,94130,94140,94150,94160,94170,94180,94190,94200,94210,94220,94230,94240,94250,94260,94270,94280,94290,94300,94310,94320,94330,94340,94350,94360,94370,94380,94390,94400,94410,94420,94430,94440,94450,94460,94470,94480,94490,94500,94510,94520,94530,94540,94550,94560,94570,94580,94590,94600,94610,94620,94630,94640,94650,94660,94670,94680,94690,94700,94710,94720,94730,94740,94750,94760,94770,94780,94790,94800,94810,94820,94830,94840,94850,94860,94870,94880,94890,94900,94910,94920,94930,94940,94950,94960,94970,94980,94990,95000,95010,95020,95030,95040,95050,95060,95070,95080,95090,95100,95110,95120,95130,95140,95150,95160,95170,95180,95190,95200,95210,95220,95230,95240,95250,95260,95270,95280,95290,95300,95310,95320,95330,95340,95350,95360,95370,95380,95390,95400,95410,95420,95430,95440,95450,95460,95470,95480,95490,95500,95510,95520,95530,95540,95550,95560,95570,95580,95590,95600,95610,95620,95630,95640,95650,95660,95670,95680,95690,95700,95710,95720,95730,95740,95750,95760,95770,95780,95790,95800,95810,95820,95830,95840,95850,95860,95870,95880,95890,95900,95910,95920,95930,95940,95950,95960,95970,95980,95990,96000,96010,96020,96030,96040,96050,96060,96070,96080,96090,96100,96110,96120,96130,96140,96150,96160,96170,96180,96190,96200,96210,96220,96230,96240,96250,96260,96270,96280,96290,96300,96310,96320,96330,96340,96350,96360,96370,96380,96390,96400,96410,96420,96430,96440,96450,96460,96470,96480,96490,96500,96510,96520,96530,96540,96550,96560,96570,96580,96590,96600,96610,96620,96630,96640,96650,96660,96670,96680,96690,96700,96710,96720,96730,96740,96750,96760,96770,96780,96790,96800,96810,96820,96830,96840,96850,96860,96870,96880,96890,96900,96910,96920,96930,96940,96950,96960,96970,96980,96990,97000,97010,97020,97030,97040,97050,97060,97070,97080,97090,97100,97110,97120,97130,97140,97150,97160,97170,97180,97190,97200,97210,97220,97230,97240,97250,97260,97270,97280,97290,97300,97310,97320,97330,97340,97350,97360,97370,97380,97390,97400,97410,97420,97430,97440,97450,97460,97470,97480,97490,97500,97510,97520,97530,97540,97550,97560,97570,97580,97590,97600,97610,97620,97630,97640,97650,97660,97670,97680,97690,97700,97710,97720,97730,97740,97750,97760,97770,97780,97790,97800,97810,97820,97830,97840,97850,97860,97870,97880,97890,97900,97910,97920,97930,97940,97950,97960,97970,97980,97990,98000,98010,98020,98030,98040,98050,98060,98070,98080,98090,98100,98110,98120,98130,98140,98150,98160,98170,98180,98190,98200,98210,98220,98230,98240,98250,98260,98270,98280,98290,98300,98310,98320,98330,98340,98350,98360,98370,98380,98390,98400,98410,98420,98430,98440,98450,98460,98470,98480,98490,98500,98510,98520,98530,98540,98550,98560,98570,98580,98590,98600,98610,98620,98630,98640,98650,98660,98670,98680,98690,98700,98710,98720,98730,98740,98750,98760,98770,98780,98790,98800,98810,98820,98830,98840,98850,98860,98870,98880,98890,98900,98910,98920,98930,98940,98950,98960,98970,98980,98990,99000,99010,99020,99030,99040,99050,99060,99070,99080,99090,99100,99110,99120,99130,99140,99150,99160,99170,99180,99190,99200,99210,99220,99230,99240,99250,99260,99270,99280,99290,99300,99310,99320,99330,99340,99350,99360,99370,99380,99390,99400,99410,99420,99430,99440,99450,99460,99470,99480,99490,99500,99510,99520,99530,99540,99550,99560,99570,99580,99590,99600,99610,99620,99630,99640,99650,99660,99670,99680,99690,99700,99710,99720,99730,99740,99750,99760,99770,99780,99790,99800,99810,99820,99830,99840,99850,99860,99870,99880,99890,99900,99910,99920,99930,99940,99950,99960,99970,99980,99990,100000 ]; #20K Size # var a = [ 10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360,370,380,390,400,410,420,430,440,450,460,470,480,490,500,510,520,530,540,550,560,570,580,590,600,610,620,630,640,650,660,670,680,690,700,710,720,730,740,750,760,770,780,790,800,810,820,830,840,850,860,870,880,890,900,910,920,930,940,950,960,970,980,990,1000,1010,1020,1030,1040,1050,1060,1070,1080,1090,1100,1110,1120,1130,1140,1150,1160,1170,1180,1190,1200,1210,1220,1230,1240,1250,1260,1270,1280,1290,1300,1310,1320,1330,1340,1350,1360,1370,1380,1390,1400,1410,1420,1430,1440,1450,1460,1470,1480,1490,1500,1510,1520,1530,1540,1550,1560,1570,1580,1590,1600,1610,1620,1630,1640,1650,1660,1670,1680,1690,1700,1710,1720,1730,1740,1750,1760,1770,1780,1790,1800,1810,1820,1830,1840,1850,1860,1870,1880,1890,1900,1910,1920,1930,1940,1950,1960,1970,1980,1990,2000,2010,2020,2030,2040,2050,2060,2070,2080,2090,2100,2110,2120,2130,2140,2150,2160,2170,2180,2190,2200,2210,2220,2230,2240,2250,2260,2270,2280,2290,2300,2310,2320,2330,2340,2350,2360,2370,2380,2390,2400,2410,2420,2430,2440,2450,2460,2470,2480,2490,2500,2510,2520,2530,2540,2550,2560,2570,2580,2590,2600,2610,2620,2630,2640,2650,2660,2670,2680,2690,2700,2710,2720,2730,2740,2750,2760,2770,2780,2790,2800,2810,2820,2830,2840,2850,2860,2870,2880,2890,2900,2910,2920,2930,2940,2950,2960,2970,2980,2990,3000,3010,3020,3030,3040,3050,3060,3070,3080,3090,3100,3110,3120,3130,3140,3150,3160,3170,3180,3190,3200,3210,3220,3230,3240,3250,3260,3270,3280,3290,3300,3310,3320,3330,3340,3350,3360,3370,3380,3390,3400,3410,3420,3430,3440,3450,3460,3470,3480,3490,3500,3510,3520,3530,3540,3550,3560,3570,3580,3590,3600,3610,3620,3630,3640,3650,3660,3670,3680,3690,3700,3710,3720,3730,3740,3750,3760,3770,3780,3790,3800,3810,3820,3830,3840,3850,3860,3870,3880,3890,3900,3910,3920,3930,3940,3950,3960,3970,3980,3990,4000,4010,4020,4030,4040,4050,4060,4070,4080,4090,4100,4110,4120,4130,4140,4150,4160,4170,4180,4190,4200,4210,4220,4230,4240,4250,4260,4270,4280,4290,4300,4310,4320,4330,4340,4350,4360,4370,4380,4390,4400,4410,4420,4430,4440,4450,4460,4470,4480,4490,4500,4510,4520,4530,4540,4550,4560,4570,4580,4590,4600,4610,4620,4630,4640,4650,4660,4670,4680,4690,4700,4710,4720,4730,4740,4750,4760,4770,4780,4790,4800,4810,4820,4830,4840,4850,4860,4870,4880,4890,4900,4910,4920,4930,4940,4950,4960,4970,4980,4990,5000,5010,5020,5030,5040,5050,5060,5070,5080,5090,5100,5110,5120,5130,5140,5150,5160,5170,5180,5190,5200,5210,5220,5230,5240,5250,5260,5270,5280,5290,5300,5310,5320,5330,5340,5350,5360,5370,5380,5390,5400,5410,5420,5430,5440,5450,5460,5470,5480,5490,5500,5510,5520,5530,5540,5550,5560,5570,5580,5590,5600,5610,5620,5630,5640,5650,5660,5670,5680,5690,5700,5710,5720,5730,5740,5750,5760,5770,5780,5790,5800,5810,5820,5830,5840,5850,5860,5870,5880,5890,5900,5910,5920,5930,5940,5950,5960,5970,5980,5990,6000,6010,6020,6030,6040,6050,6060,6070,6080,6090,6100,6110,6120,6130,6140,6150,6160,6170,6180,6190,6200,6210,6220,6230,6240,6250,6260,6270,6280,6290,6300,6310,6320,6330,6340,6350,6360,6370,6380,6390,6400,6410,6420,6430,6440,6450,6460,6470,6480,6490,6500,6510,6520,6530,6540,6550,6560,6570,6580,6590,6600,6610,6620,6630,6640,6650,6660,6670,6680,6690,6700,6710,6720,6730,6740,6750,6760,6770,6780,6790,6800,6810,6820,6830,6840,6850,6860,6870,6880,6890,6900,6910,6920,6930,6940,6950,6960,6970,6980,6990,7000,7010,7020,7030,7040,7050,7060,7070,7080,7090,7100,7110,7120,7130,7140,7150,7160,7170,7180,7190,7200,7210,7220,7230,7240,7250,7260,7270,7280,7290,7300,7310,7320,7330,7340,7350,7360,7370,7380,7390,7400,7410,7420,7430,7440,7450,7460,7470,7480,7490,7500,7510,7520,7530,7540,7550,7560,7570,7580,7590,7600,7610,7620,7630,7640,7650,7660,7670,7680,7690,7700,7710,7720,7730,7740,7750,7760,7770,7780,7790,7800,7810,7820,7830,7840,7850,7860,7870,7880,7890,7900,7910,7920,7930,7940,7950,7960,7970,7980,7990,8000,8010,8020,8030,8040,8050,8060,8070,8080,8090,8100,8110,8120,8130,8140,8150,8160,8170,8180,8190,8200,8210,8220,8230,8240,8250,8260,8270,8280,8290,8300,8310,8320,8330,8340,8350,8360,8370,8380,8390,8400,8410,8420,8430,8440,8450,8460,8470,8480,8490,8500,8510,8520,8530,8540,8550,8560,8570,8580,8590,8600,8610,8620,8630,8640,8650,8660,8670,8680,8690,8700,8710,8720,8730,8740,8750,8760,8770,8780,8790,8800,8810,8820,8830,8840,8850,8860,8870,8880,8890,8900,8910,8920,8930,8940,8950,8960,8970,8980,8990,9000,9010,9020,9030,9040,9050,9060,9070,9080,9090,9100,9110,9120,9130,9140,9150,9160,9170,9180,9190,9200,9210,9220,9230,9240,9250,9260,9270,9280,9290,9300,9310,9320,9330,9340,9350,9360,9370,9380,9390,9400,9410,9420,9430,9440,9450,9460,9470,9480,9490,9500,9510,9520,9530,9540,9550,9560,9570,9580,9590,9600,9610,9620,9630,9640,9650,9660,9670,9680,9690,9700,9710,9720,9730,9740,9750,9760,9770,9780,9790,9800,9810,9820,9830,9840,9850,9860,9870,9880,9890,9900,9910,9920,9930,9940,9950,9960,9970,9980,9990,10000,10010,10020,10030,10040,10050,10060,10070,10080,10090,10100,10110,10120,10130,10140,10150,10160,10170,10180,10190,10200,10210,10220,10230,10240,10250,10260,10270,10280,10290,10300,10310,10320,10330,10340,10350,10360,10370,10380,10390,10400,10410,10420,10430,10440,10450,10460,10470,10480,10490,10500,10510,10520,10530,10540,10550,10560,10570,10580,10590,10600,10610,10620,10630,10640,10650,10660,10670,10680,10690,10700,10710,10720,10730,10740,10750,10760,10770,10780,10790,10800,10810,10820,10830,10840,10850,10860,10870,10880,10890,10900,10910,10920,10930,10940,10950,10960,10970,10980,10990,11000,11010,11020,11030,11040,11050,11060,11070,11080,11090,11100,11110,11120,11130,11140,11150,11160,11170,11180,11190,11200,11210,11220,11230,11240,11250,11260,11270,11280,11290,11300,11310,11320,11330,11340,11350,11360,11370,11380,11390,11400,11410,11420,11430,11440,11450,11460,11470,11480,11490,11500,11510,11520,11530,11540,11550,11560,11570,11580,11590,11600,11610,11620,11630,11640,11650,11660,11670,11680,11690,11700,11710,11720,11730,11740,11750,11760,11770,11780,11790,11800,11810,11820,11830,11840,11850,11860,11870,11880,11890,11900,11910,11920,11930,11940,11950,11960,11970,11980,11990,12000,12010,12020,12030,12040,12050,12060,12070,12080,12090,12100,12110,12120,12130,12140,12150,12160,12170,12180,12190,12200,12210,12220,12230,12240,12250,12260,12270,12280,12290,12300,12310,12320,12330,12340,12350,12360,12370,12380,12390,12400,12410,12420,12430,12440,12450,12460,12470,12480,12490,12500,12510,12520,12530,12540,12550,12560,12570,12580,12590,12600,12610,12620,12630,12640,12650,12660,12670,12680,12690,12700,12710,12720,12730,12740,12750,12760,12770,12780,12790,12800,12810,12820,12830,12840,12850,12860,12870,12880,12890,12900,12910,12920,12930,12940,12950,12960,12970,12980,12990,13000,13010,13020,13030,13040,13050,13060,13070,13080,13090,13100,13110,13120,13130,13140,13150,13160,13170,13180,13190,13200,13210,13220,13230,13240,13250,13260,13270,13280,13290,13300,13310,13320,13330,13340,13350,13360,13370,13380,13390,13400,13410,13420,13430,13440,13450,13460,13470,13480,13490,13500,13510,13520,13530,13540,13550,13560,13570,13580,13590,13600,13610,13620,13630,13640,13650,13660,13670,13680,13690,13700,13710,13720,13730,13740,13750,13760,13770,13780,13790,13800,13810,13820,13830,13840,13850,13860,13870,13880,13890,13900,13910,13920,13930,13940,13950,13960,13970,13980,13990,14000,14010,14020,14030,14040,14050,14060,14070,14080,14090,14100,14110,14120,14130,14140,14150,14160,14170,14180,14190,14200,14210,14220,14230,14240,14250,14260,14270,14280,14290,14300,14310,14320,14330,14340,14350,14360,14370,14380,14390,14400,14410,14420,14430,14440,14450,14460,14470,14480,14490,14500,14510,14520,14530,14540,14550,14560,14570,14580,14590,14600,14610,14620,14630,14640,14650,14660,14670,14680,14690,14700,14710,14720,14730,14740,14750,14760,14770,14780,14790,14800,14810,14820,14830,14840,14850,14860,14870,14880,14890,14900,14910,14920,14930,14940,14950,14960,14970,14980,14990,15000,15010,15020,15030,15040,15050,15060,15070,15080,15090,15100,15110,15120,15130,15140,15150,15160,15170,15180,15190,15200,15210,15220,15230,15240,15250,15260,15270,15280,15290,15300,15310,15320,15330,15340,15350,15360,15370,15380,15390,15400,15410,15420,15430,15440,15450,15460,15470,15480,15490,15500,15510,15520,15530,15540,15550,15560,15570,15580,15590,15600,15610,15620,15630,15640,15650,15660,15670,15680,15690,15700,15710,15720,15730,15740,15750,15760,15770,15780,15790,15800,15810,15820,15830,15840,15850,15860,15870,15880,15890,15900,15910,15920,15930,15940,15950,15960,15970,15980,15990,16000,16010,16020,16030,16040,16050,16060,16070,16080,16090,16100,16110,16120,16130,16140,16150,16160,16170,16180,16190,16200,16210,16220,16230,16240,16250,16260,16270,16280,16290,16300,16310,16320,16330,16340,16350,16360,16370,16380,16390,16400,16410,16420,16430,16440,16450,16460,16470,16480,16490,16500,16510,16520,16530,16540,16550,16560,16570,16580,16590,16600,16610,16620,16630,16640,16650,16660,16670,16680,16690,16700,16710,16720,16730,16740,16750,16760,16770,16780,16790,16800,16810,16820,16830,16840,16850,16860,16870,16880,16890,16900,16910,16920,16930,16940,16950,16960,16970,16980,16990,17000,17010,17020,17030,17040,17050,17060,17070,17080,17090,17100,17110,17120,17130,17140,17150,17160,17170,17180,17190,17200,17210,17220,17230,17240,17250,17260,17270,17280,17290,17300,17310,17320,17330,17340,17350,17360,17370,17380,17390,17400,17410,17420,17430,17440,17450,17460,17470,17480,17490,17500,17510,17520,17530,17540,17550,17560,17570,17580,17590,17600,17610,17620,17630,17640,17650,17660,17670,17680,17690,17700,17710,17720,17730,17740,17750,17760,17770,17780,17790,17800,17810,17820,17830,17840,17850,17860,17870,17880,17890,17900,17910,17920,17930,17940,17950,17960,17970,17980,17990,18000,18010,18020,18030,18040,18050,18060,18070,18080,18090,18100,18110,18120,18130,18140,18150,18160,18170,18180,18190,18200,18210,18220,18230,18240,18250,18260,18270,18280,18290,18300,18310,18320,18330,18340,18350,18360,18370,18380,18390,18400,18410,18420,18430,18440,18450,18460,18470,18480,18490,18500,18510,18520,18530,18540,18550,18560,18570,18580,18590,18600,18610,18620,18630,18640,18650,18660,18670,18680,18690,18700,18710,18720,18730,18740,18750,18760,18770,18780,18790,18800,18810,18820,18830,18840,18850,18860,18870,18880,18890,18900,18910,18920,18930,18940,18950,18960,18970,18980,18990,19000,19010,19020,19030,19040,19050,19060,19070,19080,19090,19100,19110,19120,19130,19140,19150,19160,19170,19180,19190,19200,19210,19220,19230,19240,19250,19260,19270,19280,19290,19300,19310,19320,19330,19340,19350,19360,19370,19380,19390,19400,19410,19420,19430,19440,19450,19460,19470,19480,19490,19500,19510,19520,19530,19540,19550,19560,19570,19580,19590,19600,19610,19620,19630,19640,19650,19660,19670,19680,19690,19700,19710,19720,19730,19740,19750,19760,19770,19780,19790,19800,19810,19820,19830,19840,19850,19860,19870,19880,19890,19900,19910,19920,19930,19940,19950,19960,19970,19980,19990,20000,20010,20020,20030,20040,20050,20060,20070,20080,20090,20100,20110,20120,20130,20140,20150,20160,20170,20180,20190,20200,20210,20220,20230,20240,20250,20260,20270,20280,20290,20300,20310,20320,20330,20340,20350,20360,20370,20380,20390,20400,20410,20420,20430,20440,20450,20460,20470,20480,20490,20500,20510,20520,20530,20540,20550,20560,20570,20580,20590,20600,20610,20620,20630,20640,20650,20660,20670,20680,20690,20700,20710,20720,20730,20740,20750,20760,20770,20780,20790,20800,20810,20820,20830,20840,20850,20860,20870,20880,20890,20900,20910,20920,20930,20940,20950,20960,20970,20980,20990,21000,21010,21020,21030,21040,21050,21060,21070,21080,21090,21100,21110,21120,21130,21140,21150,21160,21170,21180,21190,21200,21210,21220,21230,21240,21250,21260,21270,21280,21290,21300,21310,21320,21330,21340,21350,21360,21370,21380,21390,21400,21410,21420,21430,21440,21450,21460,21470,21480,21490,21500,21510,21520,21530,21540,21550,21560,21570,21580,21590,21600,21610,21620,21630,21640,21650,21660,21670,21680,21690,21700,21710,21720,21730,21740,21750,21760,21770,21780,21790,21800,21810,21820,21830,21840,21850,21860,21870,21880,21890,21900,21910,21920,21930,21940,21950,21960,21970,21980,21990,22000,22010,22020,22030,22040,22050,22060,22070,22080,22090,22100,22110,22120,22130,22140,22150,22160,22170,22180,22190,22200,22210,22220,22230,22240,22250,22260,22270,22280,22290,22300,22310,22320,22330,22340,22350,22360,22370,22380,22390,22400,22410,22420,22430,22440,22450,22460,22470,22480,22490,22500,22510,22520,22530,22540,22550,22560,22570,22580,22590,22600,22610,22620,22630,22640,22650,22660,22670,22680,22690,22700,22710,22720,22730,22740,22750,22760,22770,22780,22790,22800,22810,22820,22830,22840,22850,22860,22870,22880,22890,22900,22910,22920,22930,22940,22950,22960,22970,22980,22990,23000,23010,23020,23030,23040,23050,23060,23070,23080,23090,23100,23110,23120,23130,23140,23150,23160,23170,23180,23190,23200,23210,23220,23230,23240,23250,23260,23270,23280,23290,23300,23310,23320,23330,23340,23350,23360,23370,23380,23390,23400,23410,23420,23430,23440,23450,23460,23470,23480,23490,23500,23510,23520,23530,23540,23550,23560,23570,23580,23590,23600,23610,23620,23630,23640,23650,23660,23670,23680,23690,23700,23710,23720,23730,23740,23750,23760,23770,23780,23790,23800,23810,23820,23830,23840,23850,23860,23870,23880,23890,23900,23910,23920,23930,23940,23950,23960,23970,23980,23990,24000,24010,24020,24030,24040,24050,24060,24070,24080,24090,24100,24110,24120,24130,24140,24150,24160,24170,24180,24190,24200,24210,24220,24230,24240,24250,24260,24270,24280,24290,24300,24310,24320,24330,24340,24350,24360,24370,24380,24390,24400,24410,24420,24430,24440,24450,24460,24470,24480,24490,24500,24510,24520,24530,24540,24550,24560,24570,24580,24590,24600,24610,24620,24630,24640,24650,24660,24670,24680,24690,24700,24710,24720,24730,24740,24750,24760,24770,24780,24790,24800,24810,24820,24830,24840,24850,24860,24870,24880,24890,24900,24910,24920,24930,24940,24950,24960,24970,24980,24990,25000,25010,25020,25030,25040,25050,25060,25070,25080,25090,25100,25110,25120,25130,25140,25150,25160,25170,25180,25190,25200,25210,25220,25230,25240,25250,25260,25270,25280,25290,25300,25310,25320,25330,25340,25350,25360,25370,25380,25390,25400,25410,25420,25430,25440,25450,25460,25470,25480,25490,25500,25510,25520,25530,25540,25550,25560,25570,25580,25590,25600,25610,25620,25630,25640,25650,25660,25670,25680,25690,25700,25710,25720,25730,25740,25750,25760,25770,25780,25790,25800,25810,25820,25830,25840,25850,25860,25870,25880,25890,25900,25910,25920,25930,25940,25950,25960,25970,25980,25990,26000,26010,26020,26030,26040,26050,26060,26070,26080,26090,26100,26110,26120,26130,26140,26150,26160,26170,26180,26190,26200,26210,26220,26230,26240,26250,26260,26270,26280,26290,26300,26310,26320,26330,26340,26350,26360,26370,26380,26390,26400,26410,26420,26430,26440,26450,26460,26470,26480,26490,26500,26510,26520,26530,26540,26550,26560,26570,26580,26590,26600,26610,26620,26630,26640,26650,26660,26670,26680,26690,26700,26710,26720,26730,26740,26750,26760,26770,26780,26790,26800,26810,26820,26830,26840,26850,26860,26870,26880,26890,26900,26910,26920,26930,26940,26950,26960,26970,26980,26990,27000,27010,27020,27030,27040,27050,27060,27070,27080,27090,27100,27110,27120,27130,27140,27150,27160,27170,27180,27190,27200,27210,27220,27230,27240,27250,27260,27270,27280,27290,27300,27310,27320,27330,27340,27350,27360,27370,27380,27390,27400,27410,27420,27430,27440,27450,27460,27470,27480,27490,27500,27510,27520,27530,27540,27550,27560,27570,27580,27590,27600,27610,27620,27630,27640,27650,27660,27670,27680,27690,27700,27710,27720,27730,27740,27750,27760,27770,27780,27790,27800,27810,27820,27830,27840,27850,27860,27870,27880,27890,27900,27910,27920,27930,27940,27950,27960,27970,27980,27990,28000,28010,28020,28030,28040,28050,28060,28070,28080,28090,28100,28110,28120,28130,28140,28150,28160,28170,28180,28190,28200,28210,28220,28230,28240,28250,28260,28270,28280,28290,28300,28310,28320,28330,28340,28350,28360,28370,28380,28390,28400,28410,28420,28430,28440,28450,28460,28470,28480,28490,28500,28510,28520,28530,28540,28550,28560,28570,28580,28590,28600,28610,28620,28630,28640,28650,28660,28670,28680,28690,28700,28710,28720,28730,28740,28750,28760,28770,28780,28790,28800,28810,28820,28830,28840,28850,28860,28870,28880,28890,28900,28910,28920,28930,28940,28950,28960,28970,28980,28990,29000,29010,29020,29030,29040,29050,29060,29070,29080,29090,29100,29110,29120,29130,29140,29150,29160,29170,29180,29190,29200,29210,29220,29230,29240,29250,29260,29270,29280,29290,29300,29310,29320,29330,29340,29350,29360,29370,29380,29390,29400,29410,29420,29430,29440,29450,29460,29470,29480,29490,29500,29510,29520,29530,29540,29550,29560,29570,29580,29590,29600,29610,29620,29630,29640,29650,29660,29670,29680,29690,29700,29710,29720,29730,29740,29750,29760,29770,29780,29790,29800,29810,29820,29830,29840,29850,29860,29870,29880,29890,29900,29910,29920,29930,29940,29950,29960,29970,29980,29990,30000,30010,30020,30030,30040,30050,30060,30070,30080,30090,30100,30110,30120,30130,30140,30150,30160,30170,30180,30190,30200,30210,30220,30230,30240,30250,30260,30270,30280,30290,30300,30310,30320,30330,30340,30350,30360,30370,30380,30390,30400,30410,30420,30430,30440,30450,30460,30470,30480,30490,30500,30510,30520,30530,30540,30550,30560,30570,30580,30590,30600,30610,30620,30630,30640,30650,30660,30670,30680,30690,30700,30710,30720,30730,30740,30750,30760,30770,30780,30790,30800,30810,30820,30830,30840,30850,30860,30870,30880,30890,30900,30910,30920,30930,30940,30950,30960,30970,30980,30990,31000,31010,31020,31030,31040,31050,31060,31070,31080,31090,31100,31110,31120,31130,31140,31150,31160,31170,31180,31190,31200,31210,31220,31230,31240,31250,31260,31270,31280,31290,31300,31310,31320,31330,31340,31350,31360,31370,31380,31390,31400,31410,31420,31430,31440,31450,31460,31470,31480,31490,31500,31510,31520,31530,31540,31550,31560,31570,31580,31590,31600,31610,31620,31630,31640,31650,31660,31670,31680,31690,31700,31710,31720,31730,31740,31750,31760,31770,31780,31790,31800,31810,31820,31830,31840,31850,31860,31870,31880,31890,31900,31910,31920,31930,31940,31950,31960,31970,31980,31990,32000,32010,32020,32030,32040,32050,32060,32070,32080,32090,32100,32110,32120,32130,32140,32150,32160,32170,32180,32190,32200,32210,32220,32230,32240,32250,32260,32270,32280,32290,32300,32310,32320,32330,32340,32350,32360,32370,32380,32390,32400,32410,32420,32430,32440,32450,32460,32470,32480,32490,32500,32510,32520,32530,32540,32550,32560,32570,32580,32590,32600,32610,32620,32630,32640,32650,32660,32670,32680,32690,32700,32710,32720,32730,32740,32750,32760,32770,32780,32790,32800,32810,32820,32830,32840,32850,32860,32870,32880,32890,32900,32910,32920,32930,32940,32950,32960,32970,32980,32990,33000,33010,33020,33030,33040,33050,33060,33070,33080,33090,33100,33110,33120,33130,33140,33150,33160,33170,33180,33190,33200,33210,33220,33230,33240,33250,33260,33270,33280,33290,33300,33310,33320,33330,33340,33350,33360,33370,33380,33390,33400,33410,33420,33430,33440,33450,33460,33470,33480,33490,33500,33510,33520,33530,33540,33550,33560,33570,33580,33590,33600,33610,33620,33630,33640,33650,33660,33670,33680,33690,33700,33710,33720,33730,33740,33750,33760,33770,33780,33790,33800,33810,33820,33830,33840,33850,33860,33870,33880,33890,33900,33910,33920,33930,33940,33950,33960,33970,33980,33990,34000,34010,34020,34030,34040,34050,34060,34070,34080,34090,34100,34110,34120,34130,34140,34150,34160,34170,34180,34190,34200,34210,34220,34230,34240,34250,34260,34270,34280,34290,34300,34310,34320,34330,34340,34350,34360,34370,34380,34390,34400,34410,34420,34430,34440,34450,34460,34470,34480,34490,34500,34510,34520,34530,34540,34550,34560,34570,34580,34590,34600,34610,34620,34630,34640,34650,34660,34670,34680,34690,34700,34710,34720,34730,34740,34750,34760,34770,34780,34790,34800,34810,34820,34830,34840,34850,34860,34870,34880,34890,34900,34910,34920,34930,34940,34950,34960,34970,34980,34990,35000,35010,35020,35030,35040,35050,35060,35070,35080,35090,35100,35110,35120,35130,35140,35150,35160,35170,35180,35190,35200,35210,35220,35230,35240,35250,35260,35270,35280,35290,35300,35310,35320,35330,35340,35350,35360,35370,35380,35390,35400,35410,35420,35430,35440,35450,35460,35470,35480,35490,35500,35510,35520,35530,35540,35550,35560,35570,35580,35590,35600,35610,35620,35630,35640,35650,35660,35670,35680,35690,35700,35710,35720,35730,35740,35750,35760,35770,35780,35790,35800,35810,35820,35830,35840,35850,35860,35870,35880,35890,35900,35910,35920,35930,35940,35950,35960,35970,35980,35990,36000,36010,36020,36030,36040,36050,36060,36070,36080,36090,36100,36110,36120,36130,36140,36150,36160,36170,36180,36190,36200,36210,36220,36230,36240,36250,36260,36270,36280,36290,36300,36310,36320,36330,36340,36350,36360,36370,36380,36390,36400,36410,36420,36430,36440,36450,36460,36470,36480,36490,36500,36510,36520,36530,36540,36550,36560,36570,36580,36590,36600,36610,36620,36630,36640,36650,36660,36670,36680,36690,36700,36710,36720,36730,36740,36750,36760,36770,36780,36790,36800,36810,36820,36830,36840,36850,36860,36870,36880,36890,36900,36910,36920,36930,36940,36950,36960,36970,36980,36990,37000,37010,37020,37030,37040,37050,37060,37070,37080,37090,37100,37110,37120,37130,37140,37150,37160,37170,37180,37190,37200,37210,37220,37230,37240,37250,37260,37270,37280,37290,37300,37310,37320,37330,37340,37350,37360,37370,37380,37390,37400,37410,37420,37430,37440,37450,37460,37470,37480,37490,37500,37510,37520,37530,37540,37550,37560,37570,37580,37590,37600,37610,37620,37630,37640,37650,37660,37670,37680,37690,37700,37710,37720,37730,37740,37750,37760,37770,37780,37790,37800,37810,37820,37830,37840,37850,37860,37870,37880,37890,37900,37910,37920,37930,37940,37950,37960,37970,37980,37990,38000,38010,38020,38030,38040,38050,38060,38070,38080,38090,38100,38110,38120,38130,38140,38150,38160,38170,38180,38190,38200,38210,38220,38230,38240,38250,38260,38270,38280,38290,38300,38310,38320,38330,38340,38350,38360,38370,38380,38390,38400,38410,38420,38430,38440,38450,38460,38470,38480,38490,38500,38510,38520,38530,38540,38550,38560,38570,38580,38590,38600,38610,38620,38630,38640,38650,38660,38670,38680,38690,38700,38710,38720,38730,38740,38750,38760,38770,38780,38790,38800,38810,38820,38830,38840,38850,38860,38870,38880,38890,38900,38910,38920,38930,38940,38950,38960,38970,38980,38990,39000,39010,39020,39030,39040,39050,39060,39070,39080,39090,39100,39110,39120,39130,39140,39150,39160,39170,39180,39190,39200,39210,39220,39230,39240,39250,39260,39270,39280,39290,39300,39310,39320,39330,39340,39350,39360,39370,39380,39390,39400,39410,39420,39430,39440,39450,39460,39470,39480,39490,39500,39510,39520,39530,39540,39550,39560,39570,39580,39590,39600,39610,39620,39630,39640,39650,39660,39670,39680,39690,39700,39710,39720,39730,39740,39750,39760,39770,39780,39790,39800,39810,39820,39830,39840,39850,39860,39870,39880,39890,39900,39910,39920,39930,39940,39950,39960,39970,39980,39990,40000,40010,40020,40030,40040,40050,40060,40070,40080,40090,40100,40110,40120,40130,40140,40150,40160,40170,40180,40190,40200,40210,40220,40230,40240,40250,40260,40270,40280,40290,40300,40310,40320,40330,40340,40350,40360,40370,40380,40390,40400,40410,40420,40430,40440,40450,40460,40470,40480,40490,40500,40510,40520,40530,40540,40550,40560,40570,40580,40590,40600,40610,40620,40630,40640,40650,40660,40670,40680,40690,40700,40710,40720,40730,40740,40750,40760,40770,40780,40790,40800,40810,40820,40830,40840,40850,40860,40870,40880,40890,40900,40910,40920,40930,40940,40950,40960,40970,40980,40990,41000,41010,41020,41030,41040,41050,41060,41070,41080,41090,41100,41110,41120,41130,41140,41150,41160,41170,41180,41190,41200,41210,41220,41230,41240,41250,41260,41270,41280,41290,41300,41310,41320,41330,41340,41350,41360,41370,41380,41390,41400,41410,41420,41430,41440,41450,41460,41470,41480,41490,41500,41510,41520,41530,41540,41550,41560,41570,41580,41590,41600,41610,41620,41630,41640,41650,41660,41670,41680,41690,41700,41710,41720,41730,41740,41750,41760,41770,41780,41790,41800,41810,41820,41830,41840,41850,41860,41870,41880,41890,41900,41910,41920,41930,41940,41950,41960,41970,41980,41990,42000,42010,42020,42030,42040,42050,42060,42070,42080,42090,42100,42110,42120,42130,42140,42150,42160,42170,42180,42190,42200,42210,42220,42230,42240,42250,42260,42270,42280,42290,42300,42310,42320,42330,42340,42350,42360,42370,42380,42390,42400,42410,42420,42430,42440,42450,42460,42470,42480,42490,42500,42510,42520,42530,42540,42550,42560,42570,42580,42590,42600,42610,42620,42630,42640,42650,42660,42670,42680,42690,42700,42710,42720,42730,42740,42750,42760,42770,42780,42790,42800,42810,42820,42830,42840,42850,42860,42870,42880,42890,42900,42910,42920,42930,42940,42950,42960,42970,42980,42990,43000,43010,43020,43030,43040,43050,43060,43070,43080,43090,43100,43110,43120,43130,43140,43150,43160,43170,43180,43190,43200,43210,43220,43230,43240,43250,43260,43270,43280,43290,43300,43310,43320,43330,43340,43350,43360,43370,43380,43390,43400,43410,43420,43430,43440,43450,43460,43470,43480,43490,43500,43510,43520,43530,43540,43550,43560,43570,43580,43590,43600,43610,43620,43630,43640,43650,43660,43670,43680,43690,43700,43710,43720,43730,43740,43750,43760,43770,43780,43790,43800,43810,43820,43830,43840,43850,43860,43870,43880,43890,43900,43910,43920,43930,43940,43950,43960,43970,43980,43990,44000,44010,44020,44030,44040,44050,44060,44070,44080,44090,44100,44110,44120,44130,44140,44150,44160,44170,44180,44190,44200,44210,44220,44230,44240,44250,44260,44270,44280,44290,44300,44310,44320,44330,44340,44350,44360,44370,44380,44390,44400,44410,44420,44430,44440,44450,44460,44470,44480,44490,44500,44510,44520,44530,44540,44550,44560,44570,44580,44590,44600,44610,44620,44630,44640,44650,44660,44670,44680,44690,44700,44710,44720,44730,44740,44750,44760,44770,44780,44790,44800,44810,44820,44830,44840,44850,44860,44870,44880,44890,44900,44910,44920,44930,44940,44950,44960,44970,44980,44990,45000,45010,45020,45030,45040,45050,45060,45070,45080,45090,45100,45110,45120,45130,45140,45150,45160,45170,45180,45190,45200,45210,45220,45230,45240,45250,45260,45270,45280,45290,45300,45310,45320,45330,45340,45350,45360,45370,45380,45390,45400,45410,45420,45430,45440,45450,45460,45470,45480,45490,45500,45510,45520,45530,45540,45550,45560,45570,45580,45590,45600,45610,45620,45630,45640,45650,45660,45670,45680,45690,45700,45710,45720,45730,45740,45750,45760,45770,45780,45790,45800,45810,45820,45830,45840,45850,45860,45870,45880,45890,45900,45910,45920,45930,45940,45950,45960,45970,45980,45990,46000,46010,46020,46030,46040,46050,46060,46070,46080,46090,46100,46110,46120,46130,46140,46150,46160,46170,46180,46190,46200,46210,46220,46230,46240,46250,46260,46270,46280,46290,46300,46310,46320,46330,46340,46350,46360,46370,46380,46390,46400,46410,46420,46430,46440,46450,46460,46470,46480,46490,46500,46510,46520,46530,46540,46550,46560,46570,46580,46590,46600,46610,46620,46630,46640,46650,46660,46670,46680,46690,46700,46710,46720,46730,46740,46750,46760,46770,46780,46790,46800,46810,46820,46830,46840,46850,46860,46870,46880,46890,46900,46910,46920,46930,46940,46950,46960,46970,46980,46990,47000,47010,47020,47030,47040,47050,47060,47070,47080,47090,47100,47110,47120,47130,47140,47150,47160,47170,47180,47190,47200,47210,47220,47230,47240,47250,47260,47270,47280,47290,47300,47310,47320,47330,47340,47350,47360,47370,47380,47390,47400,47410,47420,47430,47440,47450,47460,47470,47480,47490,47500,47510,47520,47530,47540,47550,47560,47570,47580,47590,47600,47610,47620,47630,47640,47650,47660,47670,47680,47690,47700,47710,47720,47730,47740,47750,47760,47770,47780,47790,47800,47810,47820,47830,47840,47850,47860,47870,47880,47890,47900,47910,47920,47930,47940,47950,47960,47970,47980,47990,48000,48010,48020,48030,48040,48050,48060,48070,48080,48090,48100,48110,48120,48130,48140,48150,48160,48170,48180,48190,48200,48210,48220,48230,48240,48250,48260,48270,48280,48290,48300,48310,48320,48330,48340,48350,48360,48370,48380,48390,48400,48410,48420,48430,48440,48450,48460,48470,48480,48490,48500,48510,48520,48530,48540,48550,48560,48570,48580,48590,48600,48610,48620,48630,48640,48650,48660,48670,48680,48690,48700,48710,48720,48730,48740,48750,48760,48770,48780,48790,48800,48810,48820,48830,48840,48850,48860,48870,48880,48890,48900,48910,48920,48930,48940,48950,48960,48970,48980,48990,49000,49010,49020,49030,49040,49050,49060,49070,49080,49090,49100,49110,49120,49130,49140,49150,49160,49170,49180,49190,49200,49210,49220,49230,49240,49250,49260,49270,49280,49290,49300,49310,49320,49330,49340,49350,49360,49370,49380,49390,49400,49410,49420,49430,49440,49450,49460,49470,49480,49490,49500,49510,49520,49530,49540,49550,49560,49570,49580,49590,49600,49610,49620,49630,49640,49650,49660,49670,49680,49690,49700,49710,49720,49730,49740,49750,49760,49770,49780,49790,49800,49810,49820,49830,49840,49850,49860,49870,49880,49890,49900,49910,49920,49930,49940,49950,49960,49970,49980,49990,50000,50010,50020,50030,50040,50050,50060,50070,50080,50090,50100,50110,50120,50130,50140,50150,50160,50170,50180,50190,50200,50210,50220,50230,50240,50250,50260,50270,50280,50290,50300,50310,50320,50330,50340,50350,50360,50370,50380,50390,50400,50410,50420,50430,50440,50450,50460,50470,50480,50490,50500,50510,50520,50530,50540,50550,50560,50570,50580,50590,50600,50610,50620,50630,50640,50650,50660,50670,50680,50690,50700,50710,50720,50730,50740,50750,50760,50770,50780,50790,50800,50810,50820,50830,50840,50850,50860,50870,50880,50890,50900,50910,50920,50930,50940,50950,50960,50970,50980,50990,51000,51010,51020,51030,51040,51050,51060,51070,51080,51090,51100,51110,51120,51130,51140,51150,51160,51170,51180,51190,51200,51210,51220,51230,51240,51250,51260,51270,51280,51290,51300,51310,51320,51330,51340,51350,51360,51370,51380,51390,51400,51410,51420,51430,51440,51450,51460,51470,51480,51490,51500,51510,51520,51530,51540,51550,51560,51570,51580,51590,51600,51610,51620,51630,51640,51650,51660,51670,51680,51690,51700,51710,51720,51730,51740,51750,51760,51770,51780,51790,51800,51810,51820,51830,51840,51850,51860,51870,51880,51890,51900,51910,51920,51930,51940,51950,51960,51970,51980,51990,52000,52010,52020,52030,52040,52050,52060,52070,52080,52090,52100,52110,52120,52130,52140,52150,52160,52170,52180,52190,52200,52210,52220,52230,52240,52250,52260,52270,52280,52290,52300,52310,52320,52330,52340,52350,52360,52370,52380,52390,52400,52410,52420,52430,52440,52450,52460,52470,52480,52490,52500,52510,52520,52530,52540,52550,52560,52570,52580,52590,52600,52610,52620,52630,52640,52650,52660,52670,52680,52690,52700,52710,52720,52730,52740,52750,52760,52770,52780,52790,52800,52810,52820,52830,52840,52850,52860,52870,52880,52890,52900,52910,52920,52930,52940,52950,52960,52970,52980,52990,53000,53010,53020,53030,53040,53050,53060,53070,53080,53090,53100,53110,53120,53130,53140,53150,53160,53170,53180,53190,53200,53210,53220,53230,53240,53250,53260,53270,53280,53290,53300,53310,53320,53330,53340,53350,53360,53370,53380,53390,53400,53410,53420,53430,53440,53450,53460,53470,53480,53490,53500,53510,53520,53530,53540,53550,53560,53570,53580,53590,53600,53610,53620,53630,53640,53650,53660,53670,53680,53690,53700,53710,53720,53730,53740,53750,53760,53770,53780,53790,53800,53810,53820,53830,53840,53850,53860,53870,53880,53890,53900,53910,53920,53930,53940,53950,53960,53970,53980,53990,54000,54010,54020,54030,54040,54050,54060,54070,54080,54090,54100,54110,54120,54130,54140,54150,54160,54170,54180,54190,54200,54210,54220,54230,54240,54250,54260,54270,54280,54290,54300,54310,54320,54330,54340,54350,54360,54370,54380,54390,54400,54410,54420,54430,54440,54450,54460,54470,54480,54490,54500,54510,54520,54530,54540,54550,54560,54570,54580,54590,54600,54610,54620,54630,54640,54650,54660,54670,54680,54690,54700,54710,54720,54730,54740,54750,54760,54770,54780,54790,54800,54810,54820,54830,54840,54850,54860,54870,54880,54890,54900,54910,54920,54930,54940,54950,54960,54970,54980,54990,55000,55010,55020,55030,55040,55050,55060,55070,55080,55090,55100,55110,55120,55130,55140,55150,55160,55170,55180,55190,55200,55210,55220,55230,55240,55250,55260,55270,55280,55290,55300,55310,55320,55330,55340,55350,55360,55370,55380,55390,55400,55410,55420,55430,55440,55450,55460,55470,55480,55490,55500,55510,55520,55530,55540,55550,55560,55570,55580,55590,55600,55610,55620,55630,55640,55650,55660,55670,55680,55690,55700,55710,55720,55730,55740,55750,55760,55770,55780,55790,55800,55810,55820,55830,55840,55850,55860,55870,55880,55890,55900,55910,55920,55930,55940,55950,55960,55970,55980,55990,56000,56010,56020,56030,56040,56050,56060,56070,56080,56090,56100,56110,56120,56130,56140,56150,56160,56170,56180,56190,56200,56210,56220,56230,56240,56250,56260,56270,56280,56290,56300,56310,56320,56330,56340,56350,56360,56370,56380,56390,56400,56410,56420,56430,56440,56450,56460,56470,56480,56490,56500,56510,56520,56530,56540,56550,56560,56570,56580,56590,56600,56610,56620,56630,56640,56650,56660,56670,56680,56690,56700,56710,56720,56730,56740,56750,56760,56770,56780,56790,56800,56810,56820,56830,56840,56850,56860,56870,56880,56890,56900,56910,56920,56930,56940,56950,56960,56970,56980,56990,57000,57010,57020,57030,57040,57050,57060,57070,57080,57090,57100,57110,57120,57130,57140,57150,57160,57170,57180,57190,57200,57210,57220,57230,57240,57250,57260,57270,57280,57290,57300,57310,57320,57330,57340,57350,57360,57370,57380,57390,57400,57410,57420,57430,57440,57450,57460,57470,57480,57490,57500,57510,57520,57530,57540,57550,57560,57570,57580,57590,57600,57610,57620,57630,57640,57650,57660,57670,57680,57690,57700,57710,57720,57730,57740,57750,57760,57770,57780,57790,57800,57810,57820,57830,57840,57850,57860,57870,57880,57890,57900,57910,57920,57930,57940,57950,57960,57970,57980,57990,58000,58010,58020,58030,58040,58050,58060,58070,58080,58090,58100,58110,58120,58130,58140,58150,58160,58170,58180,58190,58200,58210,58220,58230,58240,58250,58260,58270,58280,58290,58300,58310,58320,58330,58340,58350,58360,58370,58380,58390,58400,58410,58420,58430,58440,58450,58460,58470,58480,58490,58500,58510,58520,58530,58540,58550,58560,58570,58580,58590,58600,58610,58620,58630,58640,58650,58660,58670,58680,58690,58700,58710,58720,58730,58740,58750,58760,58770,58780,58790,58800,58810,58820,58830,58840,58850,58860,58870,58880,58890,58900,58910,58920,58930,58940,58950,58960,58970,58980,58990,59000,59010,59020,59030,59040,59050,59060,59070,59080,59090,59100,59110,59120,59130,59140,59150,59160,59170,59180,59190,59200,59210,59220,59230,59240,59250,59260,59270,59280,59290,59300,59310,59320,59330,59340,59350,59360,59370,59380,59390,59400,59410,59420,59430,59440,59450,59460,59470,59480,59490,59500,59510,59520,59530,59540,59550,59560,59570,59580,59590,59600,59610,59620,59630,59640,59650,59660,59670,59680,59690,59700,59710,59720,59730,59740,59750,59760,59770,59780,59790,59800,59810,59820,59830,59840,59850,59860,59870,59880,59890,59900,59910,59920,59930,59940,59950,59960,59970,59980,59990,60000,60010,60020,60030,60040,60050,60060,60070,60080,60090,60100,60110,60120,60130,60140,60150,60160,60170,60180,60190,60200,60210,60220,60230,60240,60250,60260,60270,60280,60290,60300,60310,60320,60330,60340,60350,60360,60370,60380,60390,60400,60410,60420,60430,60440,60450,60460,60470,60480,60490,60500,60510,60520,60530,60540,60550,60560,60570,60580,60590,60600,60610,60620,60630,60640,60650,60660,60670,60680,60690,60700,60710,60720,60730,60740,60750,60760,60770,60780,60790,60800,60810,60820,60830,60840,60850,60860,60870,60880,60890,60900,60910,60920,60930,60940,60950,60960,60970,60980,60990,61000,61010,61020,61030,61040,61050,61060,61070,61080,61090,61100,61110,61120,61130,61140,61150,61160,61170,61180,61190,61200,61210,61220,61230,61240,61250,61260,61270,61280,61290,61300,61310,61320,61330,61340,61350,61360,61370,61380,61390,61400,61410,61420,61430,61440,61450,61460,61470,61480,61490,61500,61510,61520,61530,61540,61550,61560,61570,61580,61590,61600,61610,61620,61630,61640,61650,61660,61670,61680,61690,61700,61710,61720,61730,61740,61750,61760,61770,61780,61790,61800,61810,61820,61830,61840,61850,61860,61870,61880,61890,61900,61910,61920,61930,61940,61950,61960,61970,61980,61990,62000,62010,62020,62030,62040,62050,62060,62070,62080,62090,62100,62110,62120,62130,62140,62150,62160,62170,62180,62190,62200,62210,62220,62230,62240,62250,62260,62270,62280,62290,62300,62310,62320,62330,62340,62350,62360,62370,62380,62390,62400,62410,62420,62430,62440,62450,62460,62470,62480,62490,62500,62510,62520,62530,62540,62550,62560,62570,62580,62590,62600,62610,62620,62630,62640,62650,62660,62670,62680,62690,62700,62710,62720,62730,62740,62750,62760,62770,62780,62790,62800,62810,62820,62830,62840,62850,62860,62870,62880,62890,62900,62910,62920,62930,62940,62950,62960,62970,62980,62990,63000,63010,63020,63030,63040,63050,63060,63070,63080,63090,63100,63110,63120,63130,63140,63150,63160,63170,63180,63190,63200,63210,63220,63230,63240,63250,63260,63270,63280,63290,63300,63310,63320,63330,63340,63350,63360,63370,63380,63390,63400,63410,63420,63430,63440,63450,63460,63470,63480,63490,63500,63510,63520,63530,63540,63550,63560,63570,63580,63590,63600,63610,63620,63630,63640,63650,63660,63670,63680,63690,63700,63710,63720,63730,63740,63750,63760,63770,63780,63790,63800,63810,63820,63830,63840,63850,63860,63870,63880,63890,63900,63910,63920,63930,63940,63950,63960,63970,63980,63990,64000,64010,64020,64030,64040,64050,64060,64070,64080,64090,64100,64110,64120,64130,64140,64150,64160,64170,64180,64190,64200,64210,64220,64230,64240,64250,64260,64270,64280,64290,64300,64310,64320,64330,64340,64350,64360,64370,64380,64390,64400,64410,64420,64430,64440,64450,64460,64470,64480,64490,64500,64510,64520,64530,64540,64550,64560,64570,64580,64590,64600,64610,64620,64630,64640,64650,64660,64670,64680,64690,64700,64710,64720,64730,64740,64750,64760,64770,64780,64790,64800,64810,64820,64830,64840,64850,64860,64870,64880,64890,64900,64910,64920,64930,64940,64950,64960,64970,64980,64990,65000,65010,65020,65030,65040,65050,65060,65070,65080,65090,65100,65110,65120,65130,65140,65150,65160,65170,65180,65190,65200,65210,65220,65230,65240,65250,65260,65270,65280,65290,65300,65310,65320,65330,65340,65350,65360,65370,65380,65390,65400,65410,65420,65430,65440,65450,65460,65470,65480,65490,65500,65510,65520,65530,65540,65550,65560,65570,65580,65590,65600,65610,65620,65630,65640,65650,65660,65670,65680,65690,65700,65710,65720,65730,65740,65750,65760,65770,65780,65790,65800,65810,65820,65830,65840,65850,65860,65870,65880,65890,65900,65910,65920,65930,65940,65950,65960,65970,65980,65990,66000,66010,66020,66030,66040,66050,66060,66070,66080,66090,66100,66110,66120,66130,66140,66150,66160,66170,66180,66190,66200,66210,66220,66230,66240,66250,66260,66270,66280,66290,66300,66310,66320,66330,66340,66350,66360,66370,66380,66390,66400,66410,66420,66430,66440,66450,66460,66470,66480,66490,66500,66510,66520,66530,66540,66550,66560,66570,66580,66590,66600,66610,66620,66630,66640,66650,66660,66670,66680,66690,66700,66710,66720,66730,66740,66750,66760,66770,66780,66790,66800,66810,66820,66830,66840,66850,66860,66870,66880,66890,66900,66910,66920,66930,66940,66950,66960,66970,66980,66990,67000,67010,67020,67030,67040,67050,67060,67070,67080,67090,67100,67110,67120,67130,67140,67150,67160,67170,67180,67190,67200,67210,67220,67230,67240,67250,67260,67270,67280,67290,67300,67310,67320,67330,67340,67350,67360,67370,67380,67390,67400,67410,67420,67430,67440,67450,67460,67470,67480,67490,67500,67510,67520,67530,67540,67550,67560,67570,67580,67590,67600,67610,67620,67630,67640,67650,67660,67670,67680,67690,67700,67710,67720,67730,67740,67750,67760,67770,67780,67790,67800,67810,67820,67830,67840,67850,67860,67870,67880,67890,67900,67910,67920,67930,67940,67950,67960,67970,67980,67990,68000,68010,68020,68030,68040,68050,68060,68070,68080,68090,68100,68110,68120,68130,68140,68150,68160,68170,68180,68190,68200,68210,68220,68230,68240,68250,68260,68270,68280,68290,68300,68310,68320,68330,68340,68350,68360,68370,68380,68390,68400,68410,68420,68430,68440,68450,68460,68470,68480,68490,68500,68510,68520,68530,68540,68550,68560,68570,68580,68590,68600,68610,68620,68630,68640,68650,68660,68670,68680,68690,68700,68710,68720,68730,68740,68750,68760,68770,68780,68790,68800,68810,68820,68830,68840,68850,68860,68870,68880,68890,68900,68910,68920,68930,68940,68950,68960,68970,68980,68990,69000,69010,69020,69030,69040,69050,69060,69070,69080,69090,69100,69110,69120,69130,69140,69150,69160,69170,69180,69190,69200,69210,69220,69230,69240,69250,69260,69270,69280,69290,69300,69310,69320,69330,69340,69350,69360,69370,69380,69390,69400,69410,69420,69430,69440,69450,69460,69470,69480,69490,69500,69510,69520,69530,69540,69550,69560,69570,69580,69590,69600,69610,69620,69630,69640,69650,69660,69670,69680,69690,69700,69710,69720,69730,69740,69750,69760,69770,69780,69790,69800,69810,69820,69830,69840,69850,69860,69870,69880,69890,69900,69910,69920,69930,69940,69950,69960,69970,69980,69990,70000,70010,70020,70030,70040,70050,70060,70070,70080,70090,70100,70110,70120,70130,70140,70150,70160,70170,70180,70190,70200,70210,70220,70230,70240,70250,70260,70270,70280,70290,70300,70310,70320,70330,70340,70350,70360,70370,70380,70390,70400,70410,70420,70430,70440,70450,70460,70470,70480,70490,70500,70510,70520,70530,70540,70550,70560,70570,70580,70590,70600,70610,70620,70630,70640,70650,70660,70670,70680,70690,70700,70710,70720,70730,70740,70750,70760,70770,70780,70790,70800,70810,70820,70830,70840,70850,70860,70870,70880,70890,70900,70910,70920,70930,70940,70950,70960,70970,70980,70990,71000,71010,71020,71030,71040,71050,71060,71070,71080,71090,71100,71110,71120,71130,71140,71150,71160,71170,71180,71190,71200,71210,71220,71230,71240,71250,71260,71270,71280,71290,71300,71310,71320,71330,71340,71350,71360,71370,71380,71390,71400,71410,71420,71430,71440,71450,71460,71470,71480,71490,71500,71510,71520,71530,71540,71550,71560,71570,71580,71590,71600,71610,71620,71630,71640,71650,71660,71670,71680,71690,71700,71710,71720,71730,71740,71750,71760,71770,71780,71790,71800,71810,71820,71830,71840,71850,71860,71870,71880,71890,71900,71910,71920,71930,71940,71950,71960,71970,71980,71990,72000,72010,72020,72030,72040,72050,72060,72070,72080,72090,72100,72110,72120,72130,72140,72150,72160,72170,72180,72190,72200,72210,72220,72230,72240,72250,72260,72270,72280,72290,72300,72310,72320,72330,72340,72350,72360,72370,72380,72390,72400,72410,72420,72430,72440,72450,72460,72470,72480,72490,72500,72510,72520,72530,72540,72550,72560,72570,72580,72590,72600,72610,72620,72630,72640,72650,72660,72670,72680,72690,72700,72710,72720,72730,72740,72750,72760,72770,72780,72790,72800,72810,72820,72830,72840,72850,72860,72870,72880,72890,72900,72910,72920,72930,72940,72950,72960,72970,72980,72990,73000,73010,73020,73030,73040,73050,73060,73070,73080,73090,73100,73110,73120,73130,73140,73150,73160,73170,73180,73190,73200,73210,73220,73230,73240,73250,73260,73270,73280,73290,73300,73310,73320,73330,73340,73350,73360,73370,73380,73390,73400,73410,73420,73430,73440,73450,73460,73470,73480,73490,73500,73510,73520,73530,73540,73550,73560,73570,73580,73590,73600,73610,73620,73630,73640,73650,73660,73670,73680,73690,73700,73710,73720,73730,73740,73750,73760,73770,73780,73790,73800,73810,73820,73830,73840,73850,73860,73870,73880,73890,73900,73910,73920,73930,73940,73950,73960,73970,73980,73990,74000,74010,74020,74030,74040,74050,74060,74070,74080,74090,74100,74110,74120,74130,74140,74150,74160,74170,74180,74190,74200,74210,74220,74230,74240,74250,74260,74270,74280,74290,74300,74310,74320,74330,74340,74350,74360,74370,74380,74390,74400,74410,74420,74430,74440,74450,74460,74470,74480,74490,74500,74510,74520,74530,74540,74550,74560,74570,74580,74590,74600,74610,74620,74630,74640,74650,74660,74670,74680,74690,74700,74710,74720,74730,74740,74750,74760,74770,74780,74790,74800,74810,74820,74830,74840,74850,74860,74870,74880,74890,74900,74910,74920,74930,74940,74950,74960,74970,74980,74990,75000,75010,75020,75030,75040,75050,75060,75070,75080,75090,75100,75110,75120,75130,75140,75150,75160,75170,75180,75190,75200,75210,75220,75230,75240,75250,75260,75270,75280,75290,75300,75310,75320,75330,75340,75350,75360,75370,75380,75390,75400,75410,75420,75430,75440,75450,75460,75470,75480,75490,75500,75510,75520,75530,75540,75550,75560,75570,75580,75590,75600,75610,75620,75630,75640,75650,75660,75670,75680,75690,75700,75710,75720,75730,75740,75750,75760,75770,75780,75790,75800,75810,75820,75830,75840,75850,75860,75870,75880,75890,75900,75910,75920,75930,75940,75950,75960,75970,75980,75990,76000,76010,76020,76030,76040,76050,76060,76070,76080,76090,76100,76110,76120,76130,76140,76150,76160,76170,76180,76190,76200,76210,76220,76230,76240,76250,76260,76270,76280,76290,76300,76310,76320,76330,76340,76350,76360,76370,76380,76390,76400,76410,76420,76430,76440,76450,76460,76470,76480,76490,76500,76510,76520,76530,76540,76550,76560,76570,76580,76590,76600,76610,76620,76630,76640,76650,76660,76670,76680,76690,76700,76710,76720,76730,76740,76750,76760,76770,76780,76790,76800,76810,76820,76830,76840,76850,76860,76870,76880,76890,76900,76910,76920,76930,76940,76950,76960,76970,76980,76990,77000,77010,77020,77030,77040,77050,77060,77070,77080,77090,77100,77110,77120,77130,77140,77150,77160,77170,77180,77190,77200,77210,77220,77230,77240,77250,77260,77270,77280,77290,77300,77310,77320,77330,77340,77350,77360,77370,77380,77390,77400,77410,77420,77430,77440,77450,77460,77470,77480,77490,77500,77510,77520,77530,77540,77550,77560,77570,77580,77590,77600,77610,77620,77630,77640,77650,77660,77670,77680,77690,77700,77710,77720,77730,77740,77750,77760,77770,77780,77790,77800,77810,77820,77830,77840,77850,77860,77870,77880,77890,77900,77910,77920,77930,77940,77950,77960,77970,77980,77990,78000,78010,78020,78030,78040,78050,78060,78070,78080,78090,78100,78110,78120,78130,78140,78150,78160,78170,78180,78190,78200,78210,78220,78230,78240,78250,78260,78270,78280,78290,78300,78310,78320,78330,78340,78350,78360,78370,78380,78390,78400,78410,78420,78430,78440,78450,78460,78470,78480,78490,78500,78510,78520,78530,78540,78550,78560,78570,78580,78590,78600,78610,78620,78630,78640,78650,78660,78670,78680,78690,78700,78710,78720,78730,78740,78750,78760,78770,78780,78790,78800,78810,78820,78830,78840,78850,78860,78870,78880,78890,78900,78910,78920,78930,78940,78950,78960,78970,78980,78990,79000,79010,79020,79030,79040,79050,79060,79070,79080,79090,79100,79110,79120,79130,79140,79150,79160,79170,79180,79190,79200,79210,79220,79230,79240,79250,79260,79270,79280,79290,79300,79310,79320,79330,79340,79350,79360,79370,79380,79390,79400,79410,79420,79430,79440,79450,79460,79470,79480,79490,79500,79510,79520,79530,79540,79550,79560,79570,79580,79590,79600,79610,79620,79630,79640,79650,79660,79670,79680,79690,79700,79710,79720,79730,79740,79750,79760,79770,79780,79790,79800,79810,79820,79830,79840,79850,79860,79870,79880,79890,79900,79910,79920,79930,79940,79950,79960,79970,79980,79990,80000,80010,80020,80030,80040,80050,80060,80070,80080,80090,80100,80110,80120,80130,80140,80150,80160,80170,80180,80190,80200,80210,80220,80230,80240,80250,80260,80270,80280,80290,80300,80310,80320,80330,80340,80350,80360,80370,80380,80390,80400,80410,80420,80430,80440,80450,80460,80470,80480,80490,80500,80510,80520,80530,80540,80550,80560,80570,80580,80590,80600,80610,80620,80630,80640,80650,80660,80670,80680,80690,80700,80710,80720,80730,80740,80750,80760,80770,80780,80790,80800,80810,80820,80830,80840,80850,80860,80870,80880,80890,80900,80910,80920,80930,80940,80950,80960,80970,80980,80990,81000,81010,81020,81030,81040,81050,81060,81070,81080,81090,81100,81110,81120,81130,81140,81150,81160,81170,81180,81190,81200,81210,81220,81230,81240,81250,81260,81270,81280,81290,81300,81310,81320,81330,81340,81350,81360,81370,81380,81390,81400,81410,81420,81430,81440,81450,81460,81470,81480,81490,81500,81510,81520,81530,81540,81550,81560,81570,81580,81590,81600,81610,81620,81630,81640,81650,81660,81670,81680,81690,81700,81710,81720,81730,81740,81750,81760,81770,81780,81790,81800,81810,81820,81830,81840,81850,81860,81870,81880,81890,81900,81910,81920,81930,81940,81950,81960,81970,81980,81990,82000,82010,82020,82030,82040,82050,82060,82070,82080,82090,82100,82110,82120,82130,82140,82150,82160,82170,82180,82190,82200,82210,82220,82230,82240,82250,82260,82270,82280,82290,82300,82310,82320,82330,82340,82350,82360,82370,82380,82390,82400,82410,82420,82430,82440,82450,82460,82470,82480,82490,82500,82510,82520,82530,82540,82550,82560,82570,82580,82590,82600,82610,82620,82630,82640,82650,82660,82670,82680,82690,82700,82710,82720,82730,82740,82750,82760,82770,82780,82790,82800,82810,82820,82830,82840,82850,82860,82870,82880,82890,82900,82910,82920,82930,82940,82950,82960,82970,82980,82990,83000,83010,83020,83030,83040,83050,83060,83070,83080,83090,83100,83110,83120,83130,83140,83150,83160,83170,83180,83190,83200,83210,83220,83230,83240,83250,83260,83270,83280,83290,83300,83310,83320,83330,83340,83350,83360,83370,83380,83390,83400,83410,83420,83430,83440,83450,83460,83470,83480,83490,83500,83510,83520,83530,83540,83550,83560,83570,83580,83590,83600,83610,83620,83630,83640,83650,83660,83670,83680,83690,83700,83710,83720,83730,83740,83750,83760,83770,83780,83790,83800,83810,83820,83830,83840,83850,83860,83870,83880,83890,83900,83910,83920,83930,83940,83950,83960,83970,83980,83990,84000,84010,84020,84030,84040,84050,84060,84070,84080,84090,84100,84110,84120,84130,84140,84150,84160,84170,84180,84190,84200,84210,84220,84230,84240,84250,84260,84270,84280,84290,84300,84310,84320,84330,84340,84350,84360,84370,84380,84390,84400,84410,84420,84430,84440,84450,84460,84470,84480,84490,84500,84510,84520,84530,84540,84550,84560,84570,84580,84590,84600,84610,84620,84630,84640,84650,84660,84670,84680,84690,84700,84710,84720,84730,84740,84750,84760,84770,84780,84790,84800,84810,84820,84830,84840,84850,84860,84870,84880,84890,84900,84910,84920,84930,84940,84950,84960,84970,84980,84990,85000,85010,85020,85030,85040,85050,85060,85070,85080,85090,85100,85110,85120,85130,85140,85150,85160,85170,85180,85190,85200,85210,85220,85230,85240,85250,85260,85270,85280,85290,85300,85310,85320,85330,85340,85350,85360,85370,85380,85390,85400,85410,85420,85430,85440,85450,85460,85470,85480,85490,85500,85510,85520,85530,85540,85550,85560,85570,85580,85590,85600,85610,85620,85630,85640,85650,85660,85670,85680,85690,85700,85710,85720,85730,85740,85750,85760,85770,85780,85790,85800,85810,85820,85830,85840,85850,85860,85870,85880,85890,85900,85910,85920,85930,85940,85950,85960,85970,85980,85990,86000,86010,86020,86030,86040,86050,86060,86070,86080,86090,86100,86110,86120,86130,86140,86150,86160,86170,86180,86190,86200,86210,86220,86230,86240,86250,86260,86270,86280,86290,86300,86310,86320,86330,86340,86350,86360,86370,86380,86390,86400,86410,86420,86430,86440,86450,86460,86470,86480,86490,86500,86510,86520,86530,86540,86550,86560,86570,86580,86590,86600,86610,86620,86630,86640,86650,86660,86670,86680,86690,86700,86710,86720,86730,86740,86750,86760,86770,86780,86790,86800,86810,86820,86830,86840,86850,86860,86870,86880,86890,86900,86910,86920,86930,86940,86950,86960,86970,86980,86990,87000,87010,87020,87030,87040,87050,87060,87070,87080,87090,87100,87110,87120,87130,87140,87150,87160,87170,87180,87190,87200,87210,87220,87230,87240,87250,87260,87270,87280,87290,87300,87310,87320,87330,87340,87350,87360,87370,87380,87390,87400,87410,87420,87430,87440,87450,87460,87470,87480,87490,87500,87510,87520,87530,87540,87550,87560,87570,87580,87590,87600,87610,87620,87630,87640,87650,87660,87670,87680,87690,87700,87710,87720,87730,87740,87750,87760,87770,87780,87790,87800,87810,87820,87830,87840,87850,87860,87870,87880,87890,87900,87910,87920,87930,87940,87950,87960,87970,87980,87990,88000,88010,88020,88030,88040,88050,88060,88070,88080,88090,88100,88110,88120,88130,88140,88150,88160,88170,88180,88190,88200,88210,88220,88230,88240,88250,88260,88270,88280,88290,88300,88310,88320,88330,88340,88350,88360,88370,88380,88390,88400,88410,88420,88430,88440,88450,88460,88470,88480,88490,88500,88510,88520,88530,88540,88550,88560,88570,88580,88590,88600,88610,88620,88630,88640,88650,88660,88670,88680,88690,88700,88710,88720,88730,88740,88750,88760,88770,88780,88790,88800,88810,88820,88830,88840,88850,88860,88870,88880,88890,88900,88910,88920,88930,88940,88950,88960,88970,88980,88990,89000,89010,89020,89030,89040,89050,89060,89070,89080,89090,89100,89110,89120,89130,89140,89150,89160,89170,89180,89190,89200,89210,89220,89230,89240,89250,89260,89270,89280,89290,89300,89310,89320,89330,89340,89350,89360,89370,89380,89390,89400,89410,89420,89430,89440,89450,89460,89470,89480,89490,89500,89510,89520,89530,89540,89550,89560,89570,89580,89590,89600,89610,89620,89630,89640,89650,89660,89670,89680,89690,89700,89710,89720,89730,89740,89750,89760,89770,89780,89790,89800,89810,89820,89830,89840,89850,89860,89870,89880,89890,89900,89910,89920,89930,89940,89950,89960,89970,89980,89990,90000,90010,90020,90030,90040,90050,90060,90070,90080,90090,90100,90110,90120,90130,90140,90150,90160,90170,90180,90190,90200,90210,90220,90230,90240,90250,90260,90270,90280,90290,90300,90310,90320,90330,90340,90350,90360,90370,90380,90390,90400,90410,90420,90430,90440,90450,90460,90470,90480,90490,90500,90510,90520,90530,90540,90550,90560,90570,90580,90590,90600,90610,90620,90630,90640,90650,90660,90670,90680,90690,90700,90710,90720,90730,90740,90750,90760,90770,90780,90790,90800,90810,90820,90830,90840,90850,90860,90870,90880,90890,90900,90910,90920,90930,90940,90950,90960,90970,90980,90990,91000,91010,91020,91030,91040,91050,91060,91070,91080,91090,91100,91110,91120,91130,91140,91150,91160,91170,91180,91190,91200,91210,91220,91230,91240,91250,91260,91270,91280,91290,91300,91310,91320,91330,91340,91350,91360,91370,91380,91390,91400,91410,91420,91430,91440,91450,91460,91470,91480,91490,91500,91510,91520,91530,91540,91550,91560,91570,91580,91590,91600,91610,91620,91630,91640,91650,91660,91670,91680,91690,91700,91710,91720,91730,91740,91750,91760,91770,91780,91790,91800,91810,91820,91830,91840,91850,91860,91870,91880,91890,91900,91910,91920,91930,91940,91950,91960,91970,91980,91990,92000,92010,92020,92030,92040,92050,92060,92070,92080,92090,92100,92110,92120,92130,92140,92150,92160,92170,92180,92190,92200,92210,92220,92230,92240,92250,92260,92270,92280,92290,92300,92310,92320,92330,92340,92350,92360,92370,92380,92390,92400,92410,92420,92430,92440,92450,92460,92470,92480,92490,92500,92510,92520,92530,92540,92550,92560,92570,92580,92590,92600,92610,92620,92630,92640,92650,92660,92670,92680,92690,92700,92710,92720,92730,92740,92750,92760,92770,92780,92790,92800,92810,92820,92830,92840,92850,92860,92870,92880,92890,92900,92910,92920,92930,92940,92950,92960,92970,92980,92990,93000,93010,93020,93030,93040,93050,93060,93070,93080,93090,93100,93110,93120,93130,93140,93150,93160,93170,93180,93190,93200,93210,93220,93230,93240,93250,93260,93270,93280,93290,93300,93310,93320,93330,93340,93350,93360,93370,93380,93390,93400,93410,93420,93430,93440,93450,93460,93470,93480,93490,93500,93510,93520,93530,93540,93550,93560,93570,93580,93590,93600,93610,93620,93630,93640,93650,93660,93670,93680,93690,93700,93710,93720,93730,93740,93750,93760,93770,93780,93790,93800,93810,93820,93830,93840,93850,93860,93870,93880,93890,93900,93910,93920,93930,93940,93950,93960,93970,93980,93990,94000,94010,94020,94030,94040,94050,94060,94070,94080,94090,94100,94110,94120,94130,94140,94150,94160,94170,94180,94190,94200,94210,94220,94230,94240,94250,94260,94270,94280,94290,94300,94310,94320,94330,94340,94350,94360,94370,94380,94390,94400,94410,94420,94430,94440,94450,94460,94470,94480,94490,94500,94510,94520,94530,94540,94550,94560,94570,94580,94590,94600,94610,94620,94630,94640,94650,94660,94670,94680,94690,94700,94710,94720,94730,94740,94750,94760,94770,94780,94790,94800,94810,94820,94830,94840,94850,94860,94870,94880,94890,94900,94910,94920,94930,94940,94950,94960,94970,94980,94990,95000,95010,95020,95030,95040,95050,95060,95070,95080,95090,95100,95110,95120,95130,95140,95150,95160,95170,95180,95190,95200,95210,95220,95230,95240,95250,95260,95270,95280,95290,95300,95310,95320,95330,95340,95350,95360,95370,95380,95390,95400,95410,95420,95430,95440,95450,95460,95470,95480,95490,95500,95510,95520,95530,95540,95550,95560,95570,95580,95590,95600,95610,95620,95630,95640,95650,95660,95670,95680,95690,95700,95710,95720,95730,95740,95750,95760,95770,95780,95790,95800,95810,95820,95830,95840,95850,95860,95870,95880,95890,95900,95910,95920,95930,95940,95950,95960,95970,95980,95990,96000,96010,96020,96030,96040,96050,96060,96070,96080,96090,96100,96110,96120,96130,96140,96150,96160,96170,96180,96190,96200,96210,96220,96230,96240,96250,96260,96270,96280,96290,96300,96310,96320,96330,96340,96350,96360,96370,96380,96390,96400,96410,96420,96430,96440,96450,96460,96470,96480,96490,96500,96510,96520,96530,96540,96550,96560,96570,96580,96590,96600,96610,96620,96630,96640,96650,96660,96670,96680,96690,96700,96710,96720,96730,96740,96750,96760,96770,96780,96790,96800,96810,96820,96830,96840,96850,96860,96870,96880,96890,96900,96910,96920,96930,96940,96950,96960,96970,96980,96990,97000,97010,97020,97030,97040,97050,97060,97070,97080,97090,97100,97110,97120,97130,97140,97150,97160,97170,97180,97190,97200,97210,97220,97230,97240,97250,97260,97270,97280,97290,97300,97310,97320,97330,97340,97350,97360,97370,97380,97390,97400,97410,97420,97430,97440,97450,97460,97470,97480,97490,97500,97510,97520,97530,97540,97550,97560,97570,97580,97590,97600,97610,97620,97630,97640,97650,97660,97670,97680,97690,97700,97710,97720,97730,97740,97750,97760,97770,97780,97790,97800,97810,97820,97830,97840,97850,97860,97870,97880,97890,97900,97910,97920,97930,97940,97950,97960,97970,97980,97990,98000,98010,98020,98030,98040,98050,98060,98070,98080,98090,98100,98110,98120,98130,98140,98150,98160,98170,98180,98190,98200,98210,98220,98230,98240,98250,98260,98270,98280,98290,98300,98310,98320,98330,98340,98350,98360,98370,98380,98390,98400,98410,98420,98430,98440,98450,98460,98470,98480,98490,98500,98510,98520,98530,98540,98550,98560,98570,98580,98590,98600,98610,98620,98630,98640,98650,98660,98670,98680,98690,98700,98710,98720,98730,98740,98750,98760,98770,98780,98790,98800,98810,98820,98830,98840,98850,98860,98870,98880,98890,98900,98910,98920,98930,98940,98950,98960,98970,98980,98990,99000,99010,99020,99030,99040,99050,99060,99070,99080,99090,99100,99110,99120,99130,99140,99150,99160,99170,99180,99190,99200,99210,99220,99230,99240,99250,99260,99270,99280,99290,99300,99310,99320,99330,99340,99350,99360,99370,99380,99390,99400,99410,99420,99430,99440,99450,99460,99470,99480,99490,99500,99510,99520,99530,99540,99550,99560,99570,99580,99590,99600,99610,99620,99630,99640,99650,99660,99670,99680,99690,99700,99710,99720,99730,99740,99750,99760,99770,99780,99790,99800,99810,99820,99830,99840,99850,99860,99870,99880,99890,99900,99910,99920,99930,99940,99950,99960,99970,99980,99990,100000,100010,100020,100030,100040,100050,100060,100070,100080,100090,100100,100110,100120,100130,100140,100150,100160,100170,100180,100190,100200,100210,100220,100230,100240,100250,100260,100270,100280,100290,100300,100310,100320,100330,100340,100350,100360,100370,100380,100390,100400,100410,100420,100430,100440,100450,100460,100470,100480,100490,100500,100510,100520,100530,100540,100550,100560,100570,100580,100590,100600,100610,100620,100630,100640,100650,100660,100670,100680,100690,100700,100710,100720,100730,100740,100750,100760,100770,100780,100790,100800,100810,100820,100830,100840,100850,100860,100870,100880,100890,100900,100910,100920,100930,100940,100950,100960,100970,100980,100990,101000,101010,101020,101030,101040,101050,101060,101070,101080,101090,101100,101110,101120,101130,101140,101150,101160,101170,101180,101190,101200,101210,101220,101230,101240,101250,101260,101270,101280,101290,101300,101310,101320,101330,101340,101350,101360,101370,101380,101390,101400,101410,101420,101430,101440,101450,101460,101470,101480,101490,101500,101510,101520,101530,101540,101550,101560,101570,101580,101590,101600,101610,101620,101630,101640,101650,101660,101670,101680,101690,101700,101710,101720,101730,101740,101750,101760,101770,101780,101790,101800,101810,101820,101830,101840,101850,101860,101870,101880,101890,101900,101910,101920,101930,101940,101950,101960,101970,101980,101990,102000,102010,102020,102030,102040,102050,102060,102070,102080,102090,102100,102110,102120,102130,102140,102150,102160,102170,102180,102190,102200,102210,102220,102230,102240,102250,102260,102270,102280,102290,102300,102310,102320,102330,102340,102350,102360,102370,102380,102390,102400,102410,102420,102430,102440,102450,102460,102470,102480,102490,102500,102510,102520,102530,102540,102550,102560,102570,102580,102590,102600,102610,102620,102630,102640,102650,102660,102670,102680,102690,102700,102710,102720,102730,102740,102750,102760,102770,102780,102790,102800,102810,102820,102830,102840,102850,102860,102870,102880,102890,102900,102910,102920,102930,102940,102950,102960,102970,102980,102990,103000,103010,103020,103030,103040,103050,103060,103070,103080,103090,103100,103110,103120,103130,103140,103150,103160,103170,103180,103190,103200,103210,103220,103230,103240,103250,103260,103270,103280,103290,103300,103310,103320,103330,103340,103350,103360,103370,103380,103390,103400,103410,103420,103430,103440,103450,103460,103470,103480,103490,103500,103510,103520,103530,103540,103550,103560,103570,103580,103590,103600,103610,103620,103630,103640,103650,103660,103670,103680,103690,103700,103710,103720,103730,103740,103750,103760,103770,103780,103790,103800,103810,103820,103830,103840,103850,103860,103870,103880,103890,103900,103910,103920,103930,103940,103950,103960,103970,103980,103990,104000,104010,104020,104030,104040,104050,104060,104070,104080,104090,104100,104110,104120,104130,104140,104150,104160,104170,104180,104190,104200,104210,104220,104230,104240,104250,104260,104270,104280,104290,104300,104310,104320,104330,104340,104350,104360,104370,104380,104390,104400,104410,104420,104430,104440,104450,104460,104470,104480,104490,104500,104510,104520,104530,104540,104550,104560,104570,104580,104590,104600,104610,104620,104630,104640,104650,104660,104670,104680,104690,104700,104710,104720,104730,104740,104750,104760,104770,104780,104790,104800,104810,104820,104830,104840,104850,104860,104870,104880,104890,104900,104910,104920,104930,104940,104950,104960,104970,104980,104990,105000,105010,105020,105030,105040,105050,105060,105070,105080,105090,105100,105110,105120,105130,105140,105150,105160,105170,105180,105190,105200,105210,105220,105230,105240,105250,105260,105270,105280,105290,105300,105310,105320,105330,105340,105350,105360,105370,105380,105390,105400,105410,105420,105430,105440,105450,105460,105470,105480,105490,105500,105510,105520,105530,105540,105550,105560,105570,105580,105590,105600,105610,105620,105630,105640,105650,105660,105670,105680,105690,105700,105710,105720,105730,105740,105750,105760,105770,105780,105790,105800,105810,105820,105830,105840,105850,105860,105870,105880,105890,105900,105910,105920,105930,105940,105950,105960,105970,105980,105990,106000,106010,106020,106030,106040,106050,106060,106070,106080,106090,106100,106110,106120,106130,106140,106150,106160,106170,106180,106190,106200,106210,106220,106230,106240,106250,106260,106270,106280,106290,106300,106310,106320,106330,106340,106350,106360,106370,106380,106390,106400,106410,106420,106430,106440,106450,106460,106470,106480,106490,106500,106510,106520,106530,106540,106550,106560,106570,106580,106590,106600,106610,106620,106630,106640,106650,106660,106670,106680,106690,106700,106710,106720,106730,106740,106750,106760,106770,106780,106790,106800,106810,106820,106830,106840,106850,106860,106870,106880,106890,106900,106910,106920,106930,106940,106950,106960,106970,106980,106990,107000,107010,107020,107030,107040,107050,107060,107070,107080,107090,107100,107110,107120,107130,107140,107150,107160,107170,107180,107190,107200,107210,107220,107230,107240,107250,107260,107270,107280,107290,107300,107310,107320,107330,107340,107350,107360,107370,107380,107390,107400,107410,107420,107430,107440,107450,107460,107470,107480,107490,107500,107510,107520,107530,107540,107550,107560,107570,107580,107590,107600,107610,107620,107630,107640,107650,107660,107670,107680,107690,107700,107710,107720,107730,107740,107750,107760,107770,107780,107790,107800,107810,107820,107830,107840,107850,107860,107870,107880,107890,107900,107910,107920,107930,107940,107950,107960,107970,107980,107990,108000,108010,108020,108030,108040,108050,108060,108070,108080,108090,108100,108110,108120,108130,108140,108150,108160,108170,108180,108190,108200,108210,108220,108230,108240,108250,108260,108270,108280,108290,108300,108310,108320,108330,108340,108350,108360,108370,108380,108390,108400,108410,108420,108430,108440,108450,108460,108470,108480,108490,108500,108510,108520,108530,108540,108550,108560,108570,108580,108590,108600,108610,108620,108630,108640,108650,108660,108670,108680,108690,108700,108710,108720,108730,108740,108750,108760,108770,108780,108790,108800,108810,108820,108830,108840,108850,108860,108870,108880,108890,108900,108910,108920,108930,108940,108950,108960,108970,108980,108990,109000,109010,109020,109030,109040,109050,109060,109070,109080,109090,109100,109110,109120,109130,109140,109150,109160,109170,109180,109190,109200,109210,109220,109230,109240,109250,109260,109270,109280,109290,109300,109310,109320,109330,109340,109350,109360,109370,109380,109390,109400,109410,109420,109430,109440,109450,109460,109470,109480,109490,109500,109510,109520,109530,109540,109550,109560,109570,109580,109590,109600,109610,109620,109630,109640,109650,109660,109670,109680,109690,109700,109710,109720,109730,109740,109750,109760,109770,109780,109790,109800,109810,109820,109830,109840,109850,109860,109870,109880,109890,109900,109910,109920,109930,109940,109950,109960,109970,109980,109990,110000,110010,110020,110030,110040,110050,110060,110070,110080,110090,110100,110110,110120,110130,110140,110150,110160,110170,110180,110190,110200,110210,110220,110230,110240,110250,110260,110270,110280,110290,110300,110310,110320,110330,110340,110350,110360,110370,110380,110390,110400,110410,110420,110430,110440,110450,110460,110470,110480,110490,110500,110510,110520,110530,110540,110550,110560,110570,110580,110590,110600,110610,110620,110630,110640,110650,110660,110670,110680,110690,110700,110710,110720,110730,110740,110750,110760,110770,110780,110790,110800,110810,110820,110830,110840,110850,110860,110870,110880,110890,110900,110910,110920,110930,110940,110950,110960,110970,110980,110990,111000,111010,111020,111030,111040,111050,111060,111070,111080,111090,111100,111110,111120,111130,111140,111150,111160,111170,111180,111190,111200,111210,111220,111230,111240,111250,111260,111270,111280,111290,111300,111310,111320,111330,111340,111350,111360,111370,111380,111390,111400,111410,111420,111430,111440,111450,111460,111470,111480,111490,111500,111510,111520,111530,111540,111550,111560,111570,111580,111590,111600,111610,111620,111630,111640,111650,111660,111670,111680,111690,111700,111710,111720,111730,111740,111750,111760,111770,111780,111790,111800,111810,111820,111830,111840,111850,111860,111870,111880,111890,111900,111910,111920,111930,111940,111950,111960,111970,111980,111990,112000,112010,112020,112030,112040,112050,112060,112070,112080,112090,112100,112110,112120,112130,112140,112150,112160,112170,112180,112190,112200,112210,112220,112230,112240,112250,112260,112270,112280,112290,112300,112310,112320,112330,112340,112350,112360,112370,112380,112390,112400,112410,112420,112430,112440,112450,112460,112470,112480,112490,112500,112510,112520,112530,112540,112550,112560,112570,112580,112590,112600,112610,112620,112630,112640,112650,112660,112670,112680,112690,112700,112710,112720,112730,112740,112750,112760,112770,112780,112790,112800,112810,112820,112830,112840,112850,112860,112870,112880,112890,112900,112910,112920,112930,112940,112950,112960,112970,112980,112990,113000,113010,113020,113030,113040,113050,113060,113070,113080,113090,113100,113110,113120,113130,113140,113150,113160,113170,113180,113190,113200,113210,113220,113230,113240,113250,113260,113270,113280,113290,113300,113310,113320,113330,113340,113350,113360,113370,113380,113390,113400,113410,113420,113430,113440,113450,113460,113470,113480,113490,113500,113510,113520,113530,113540,113550,113560,113570,113580,113590,113600,113610,113620,113630,113640,113650,113660,113670,113680,113690,113700,113710,113720,113730,113740,113750,113760,113770,113780,113790,113800,113810,113820,113830,113840,113850,113860,113870,113880,113890,113900,113910,113920,113930,113940,113950,113960,113970,113980,113990,114000,114010,114020,114030,114040,114050,114060,114070,114080,114090,114100,114110,114120,114130,114140,114150,114160,114170,114180,114190,114200,114210,114220,114230,114240,114250,114260,114270,114280,114290,114300,114310,114320,114330,114340,114350,114360,114370,114380,114390,114400,114410,114420,114430,114440,114450,114460,114470,114480,114490,114500,114510,114520,114530,114540,114550,114560,114570,114580,114590,114600,114610,114620,114630,114640,114650,114660,114670,114680,114690,114700,114710,114720,114730,114740,114750,114760,114770,114780,114790,114800,114810,114820,114830,114840,114850,114860,114870,114880,114890,114900,114910,114920,114930,114940,114950,114960,114970,114980,114990,115000,115010,115020,115030,115040,115050,115060,115070,115080,115090,115100,115110,115120,115130,115140,115150,115160,115170,115180,115190,115200,115210,115220,115230,115240,115250,115260,115270,115280,115290,115300,115310,115320,115330,115340,115350,115360,115370,115380,115390,115400,115410,115420,115430,115440,115450,115460,115470,115480,115490,115500,115510,115520,115530,115540,115550,115560,115570,115580,115590,115600,115610,115620,115630,115640,115650,115660,115670,115680,115690,115700,115710,115720,115730,115740,115750,115760,115770,115780,115790,115800,115810,115820,115830,115840,115850,115860,115870,115880,115890,115900,115910,115920,115930,115940,115950,115960,115970,115980,115990,116000,116010,116020,116030,116040,116050,116060,116070,116080,116090,116100,116110,116120,116130,116140,116150,116160,116170,116180,116190,116200,116210,116220,116230,116240,116250,116260,116270,116280,116290,116300,116310,116320,116330,116340,116350,116360,116370,116380,116390,116400,116410,116420,116430,116440,116450,116460,116470,116480,116490,116500,116510,116520,116530,116540,116550,116560,116570,116580,116590,116600,116610,116620,116630,116640,116650,116660,116670,116680,116690,116700,116710,116720,116730,116740,116750,116760,116770,116780,116790,116800,116810,116820,116830,116840,116850,116860,116870,116880,116890,116900,116910,116920,116930,116940,116950,116960,116970,116980,116990,117000,117010,117020,117030,117040,117050,117060,117070,117080,117090,117100,117110,117120,117130,117140,117150,117160,117170,117180,117190,117200,117210,117220,117230,117240,117250,117260,117270,117280,117290,117300,117310,117320,117330,117340,117350,117360,117370,117380,117390,117400,117410,117420,117430,117440,117450,117460,117470,117480,117490,117500,117510,117520,117530,117540,117550,117560,117570,117580,117590,117600,117610,117620,117630,117640,117650,117660,117670,117680,117690,117700,117710,117720,117730,117740,117750,117760,117770,117780,117790,117800,117810,117820,117830,117840,117850,117860,117870,117880,117890,117900,117910,117920,117930,117940,117950,117960,117970,117980,117990,118000,118010,118020,118030,118040,118050,118060,118070,118080,118090,118100,118110,118120,118130,118140,118150,118160,118170,118180,118190,118200,118210,118220,118230,118240,118250,118260,118270,118280,118290,118300,118310,118320,118330,118340,118350,118360,118370,118380,118390,118400,118410,118420,118430,118440,118450,118460,118470,118480,118490,118500,118510,118520,118530,118540,118550,118560,118570,118580,118590,118600,118610,118620,118630,118640,118650,118660,118670,118680,118690,118700,118710,118720,118730,118740,118750,118760,118770,118780,118790,118800,118810,118820,118830,118840,118850,118860,118870,118880,118890,118900,118910,118920,118930,118940,118950,118960,118970,118980,118990,119000,119010,119020,119030,119040,119050,119060,119070,119080,119090,119100,119110,119120,119130,119140,119150,119160,119170,119180,119190,119200,119210,119220,119230,119240,119250,119260,119270,119280,119290,119300,119310,119320,119330,119340,119350,119360,119370,119380,119390,119400,119410,119420,119430,119440,119450,119460,119470,119480,119490,119500,119510,119520,119530,119540,119550,119560,119570,119580,119590,119600,119610,119620,119630,119640,119650,119660,119670,119680,119690,119700,119710,119720,119730,119740,119750,119760,119770,119780,119790,119800,119810,119820,119830,119840,119850,119860,119870,119880,119890,119900,119910,119920,119930,119940,119950,119960,119970,119980,119990,120000,120010,120020,120030,120040,120050,120060,120070,120080,120090,120100,120110,120120,120130,120140,120150,120160,120170,120180,120190,120200,120210,120220,120230,120240,120250,120260,120270,120280,120290,120300,120310,120320,120330,120340,120350,120360,120370,120380,120390,120400,120410,120420,120430,120440,120450,120460,120470,120480,120490,120500,120510,120520,120530,120540,120550,120560,120570,120580,120590,120600,120610,120620,120630,120640,120650,120660,120670,120680,120690,120700,120710,120720,120730,120740,120750,120760,120770,120780,120790,120800,120810,120820,120830,120840,120850,120860,120870,120880,120890,120900,120910,120920,120930,120940,120950,120960,120970,120980,120990,121000,121010,121020,121030,121040,121050,121060,121070,121080,121090,121100,121110,121120,121130,121140,121150,121160,121170,121180,121190,121200,121210,121220,121230,121240,121250,121260,121270,121280,121290,121300,121310,121320,121330,121340,121350,121360,121370,121380,121390,121400,121410,121420,121430,121440,121450,121460,121470,121480,121490,121500,121510,121520,121530,121540,121550,121560,121570,121580,121590,121600,121610,121620,121630,121640,121650,121660,121670,121680,121690,121700,121710,121720,121730,121740,121750,121760,121770,121780,121790,121800,121810,121820,121830,121840,121850,121860,121870,121880,121890,121900,121910,121920,121930,121940,121950,121960,121970,121980,121990,122000,122010,122020,122030,122040,122050,122060,122070,122080,122090,122100,122110,122120,122130,122140,122150,122160,122170,122180,122190,122200,122210,122220,122230,122240,122250,122260,122270,122280,122290,122300,122310,122320,122330,122340,122350,122360,122370,122380,122390,122400,122410,122420,122430,122440,122450,122460,122470,122480,122490,122500,122510,122520,122530,122540,122550,122560,122570,122580,122590,122600,122610,122620,122630,122640,122650,122660,122670,122680,122690,122700,122710,122720,122730,122740,122750,122760,122770,122780,122790,122800,122810,122820,122830,122840,122850,122860,122870,122880,122890,122900,122910,122920,122930,122940,122950,122960,122970,122980,122990,123000,123010,123020,123030,123040,123050,123060,123070,123080,123090,123100,123110,123120,123130,123140,123150,123160,123170,123180,123190,123200,123210,123220,123230,123240,123250,123260,123270,123280,123290,123300,123310,123320,123330,123340,123350,123360,123370,123380,123390,123400,123410,123420,123430,123440,123450,123460,123470,123480,123490,123500,123510,123520,123530,123540,123550,123560,123570,123580,123590,123600,123610,123620,123630,123640,123650,123660,123670,123680,123690,123700,123710,123720,123730,123740,123750,123760,123770,123780,123790,123800,123810,123820,123830,123840,123850,123860,123870,123880,123890,123900,123910,123920,123930,123940,123950,123960,123970,123980,123990,124000,124010,124020,124030,124040,124050,124060,124070,124080,124090,124100,124110,124120,124130,124140,124150,124160,124170,124180,124190,124200,124210,124220,124230,124240,124250,124260,124270,124280,124290,124300,124310,124320,124330,124340,124350,124360,124370,124380,124390,124400,124410,124420,124430,124440,124450,124460,124470,124480,124490,124500,124510,124520,124530,124540,124550,124560,124570,124580,124590,124600,124610,124620,124630,124640,124650,124660,124670,124680,124690,124700,124710,124720,124730,124740,124750,124760,124770,124780,124790,124800,124810,124820,124830,124840,124850,124860,124870,124880,124890,124900,124910,124920,124930,124940,124950,124960,124970,124980,124990,125000,125010,125020,125030,125040,125050,125060,125070,125080,125090,125100,125110,125120,125130,125140,125150,125160,125170,125180,125190,125200,125210,125220,125230,125240,125250,125260,125270,125280,125290,125300,125310,125320,125330,125340,125350,125360,125370,125380,125390,125400,125410,125420,125430,125440,125450,125460,125470,125480,125490,125500,125510,125520,125530,125540,125550,125560,125570,125580,125590,125600,125610,125620,125630,125640,125650,125660,125670,125680,125690,125700,125710,125720,125730,125740,125750,125760,125770,125780,125790,125800,125810,125820,125830,125840,125850,125860,125870,125880,125890,125900,125910,125920,125930,125940,125950,125960,125970,125980,125990,126000,126010,126020,126030,126040,126050,126060,126070,126080,126090,126100,126110,126120,126130,126140,126150,126160,126170,126180,126190,126200,126210,126220,126230,126240,126250,126260,126270,126280,126290,126300,126310,126320,126330,126340,126350,126360,126370,126380,126390,126400,126410,126420,126430,126440,126450,126460,126470,126480,126490,126500,126510,126520,126530,126540,126550,126560,126570,126580,126590,126600,126610,126620,126630,126640,126650,126660,126670,126680,126690,126700,126710,126720,126730,126740,126750,126760,126770,126780,126790,126800,126810,126820,126830,126840,126850,126860,126870,126880,126890,126900,126910,126920,126930,126940,126950,126960,126970,126980,126990,127000,127010,127020,127030,127040,127050,127060,127070,127080,127090,127100,127110,127120,127130,127140,127150,127160,127170,127180,127190,127200,127210,127220,127230,127240,127250,127260,127270,127280,127290,127300,127310,127320,127330,127340,127350,127360,127370,127380,127390,127400,127410,127420,127430,127440,127450,127460,127470,127480,127490,127500,127510,127520,127530,127540,127550,127560,127570,127580,127590,127600,127610,127620,127630,127640,127650,127660,127670,127680,127690,127700,127710,127720,127730,127740,127750,127760,127770,127780,127790,127800,127810,127820,127830,127840,127850,127860,127870,127880,127890,127900,127910,127920,127930,127940,127950,127960,127970,127980,127990,128000,128010,128020,128030,128040,128050,128060,128070,128080,128090,128100,128110,128120,128130,128140,128150,128160,128170,128180,128190,128200,128210,128220,128230,128240,128250,128260,128270,128280,128290,128300,128310,128320,128330,128340,128350,128360,128370,128380,128390,128400,128410,128420,128430,128440,128450,128460,128470,128480,128490,128500,128510,128520,128530,128540,128550,128560,128570,128580,128590,128600,128610,128620,128630,128640,128650,128660,128670,128680,128690,128700,128710,128720,128730,128740,128750,128760,128770,128780,128790,128800,128810,128820,128830,128840,128850,128860,128870,128880,128890,128900,128910,128920,128930,128940,128950,128960,128970,128980,128990,129000,129010,129020,129030,129040,129050,129060,129070,129080,129090,129100,129110,129120,129130,129140,129150,129160,129170,129180,129190,129200,129210,129220,129230,129240,129250,129260,129270,129280,129290,129300,129310,129320,129330,129340,129350,129360,129370,129380,129390,129400,129410,129420,129430,129440,129450,129460,129470,129480,129490,129500,129510,129520,129530,129540,129550,129560,129570,129580,129590,129600,129610,129620,129630,129640,129650,129660,129670,129680,129690,129700,129710,129720,129730,129740,129750,129760,129770,129780,129790,129800,129810,129820,129830,129840,129850,129860,129870,129880,129890,129900,129910,129920,129930,129940,129950,129960,129970,129980,129990,130000,130010,130020,130030,130040,130050,130060,130070,130080,130090,130100,130110,130120,130130,130140,130150,130160,130170,130180,130190,130200,130210,130220,130230,130240,130250,130260,130270,130280,130290,130300,130310,130320,130330,130340,130350,130360,130370,130380,130390,130400,130410,130420,130430,130440,130450,130460,130470,130480,130490,130500,130510,130520,130530,130540,130550,130560,130570,130580,130590,130600,130610,130620,130630,130640,130650,130660,130670,130680,130690,130700,130710,130720,130730,130740,130750,130760,130770,130780,130790,130800,130810,130820,130830,130840,130850,130860,130870,130880,130890,130900,130910,130920,130930,130940,130950,130960,130970,130980,130990,131000,131010,131020,131030,131040,131050,131060,131070,131080,131090,131100,131110,131120,131130,131140,131150,131160,131170,131180,131190,131200,131210,131220,131230,131240,131250,131260,131270,131280,131290,131300,131310,131320,131330,131340,131350,131360,131370,131380,131390,131400,131410,131420,131430,131440,131450,131460,131470,131480,131490,131500,131510,131520,131530,131540,131550,131560,131570,131580,131590,131600,131610,131620,131630,131640,131650,131660,131670,131680,131690,131700,131710,131720,131730,131740,131750,131760,131770,131780,131790,131800,131810,131820,131830,131840,131850,131860,131870,131880,131890,131900,131910,131920,131930,131940,131950,131960,131970,131980,131990,132000,132010,132020,132030,132040,132050,132060,132070,132080,132090,132100,132110,132120,132130,132140,132150,132160,132170,132180,132190,132200,132210,132220,132230,132240,132250,132260,132270,132280,132290,132300,132310,132320,132330,132340,132350,132360,132370,132380,132390,132400,132410,132420,132430,132440,132450,132460,132470,132480,132490,132500,132510,132520,132530,132540,132550,132560,132570,132580,132590,132600,132610,132620,132630,132640,132650,132660,132670,132680,132690,132700,132710,132720,132730,132740,132750,132760,132770,132780,132790,132800,132810,132820,132830,132840,132850,132860,132870,132880,132890,132900,132910,132920,132930,132940,132950,132960,132970,132980,132990,133000,133010,133020,133030,133040,133050,133060,133070,133080,133090,133100,133110,133120,133130,133140,133150,133160,133170,133180,133190,133200,133210,133220,133230,133240,133250,133260,133270,133280,133290,133300,133310,133320,133330,133340,133350,133360,133370,133380,133390,133400,133410,133420,133430,133440,133450,133460,133470,133480,133490,133500,133510,133520,133530,133540,133550,133560,133570,133580,133590,133600,133610,133620,133630,133640,133650,133660,133670,133680,133690,133700,133710,133720,133730,133740,133750,133760,133770,133780,133790,133800,133810,133820,133830,133840,133850,133860,133870,133880,133890,133900,133910,133920,133930,133940,133950,133960,133970,133980,133990,134000,134010,134020,134030,134040,134050,134060,134070,134080,134090,134100,134110,134120,134130,134140,134150,134160,134170,134180,134190,134200,134210,134220,134230,134240,134250,134260,134270,134280,134290,134300,134310,134320,134330,134340,134350,134360,134370,134380,134390,134400,134410,134420,134430,134440,134450,134460,134470,134480,134490,134500,134510,134520,134530,134540,134550,134560,134570,134580,134590,134600,134610,134620,134630,134640,134650,134660,134670,134680,134690,134700,134710,134720,134730,134740,134750,134760,134770,134780,134790,134800,134810,134820,134830,134840,134850,134860,134870,134880,134890,134900,134910,134920,134930,134940,134950,134960,134970,134980,134990,135000,135010,135020,135030,135040,135050,135060,135070,135080,135090,135100,135110,135120,135130,135140,135150,135160,135170,135180,135190,135200,135210,135220,135230,135240,135250,135260,135270,135280,135290,135300,135310,135320,135330,135340,135350,135360,135370,135380,135390,135400,135410,135420,135430,135440,135450,135460,135470,135480,135490,135500,135510,135520,135530,135540,135550,135560,135570,135580,135590,135600,135610,135620,135630,135640,135650,135660,135670,135680,135690,135700,135710,135720,135730,135740,135750,135760,135770,135780,135790,135800,135810,135820,135830,135840,135850,135860,135870,135880,135890,135900,135910,135920,135930,135940,135950,135960,135970,135980,135990,136000,136010,136020,136030,136040,136050,136060,136070,136080,136090,136100,136110,136120,136130,136140,136150,136160,136170,136180,136190,136200,136210,136220,136230,136240,136250,136260,136270,136280,136290,136300,136310,136320,136330,136340,136350,136360,136370,136380,136390,136400,136410,136420,136430,136440,136450,136460,136470,136480,136490,136500,136510,136520,136530,136540,136550,136560,136570,136580,136590,136600,136610,136620,136630,136640,136650,136660,136670,136680,136690,136700,136710,136720,136730,136740,136750,136760,136770,136780,136790,136800,136810,136820,136830,136840,136850,136860,136870,136880,136890,136900,136910,136920,136930,136940,136950,136960,136970,136980,136990,137000,137010,137020,137030,137040,137050,137060,137070,137080,137090,137100,137110,137120,137130,137140,137150,137160,137170,137180,137190,137200,137210,137220,137230,137240,137250,137260,137270,137280,137290,137300,137310,137320,137330,137340,137350,137360,137370,137380,137390,137400,137410,137420,137430,137440,137450,137460,137470,137480,137490,137500,137510,137520,137530,137540,137550,137560,137570,137580,137590,137600,137610,137620,137630,137640,137650,137660,137670,137680,137690,137700,137710,137720,137730,137740,137750,137760,137770,137780,137790,137800,137810,137820,137830,137840,137850,137860,137870,137880,137890,137900,137910,137920,137930,137940,137950,137960,137970,137980,137990,138000,138010,138020,138030,138040,138050,138060,138070,138080,138090,138100,138110,138120,138130,138140,138150,138160,138170,138180,138190,138200,138210,138220,138230,138240,138250,138260,138270,138280,138290,138300,138310,138320,138330,138340,138350,138360,138370,138380,138390,138400,138410,138420,138430,138440,138450,138460,138470,138480,138490,138500,138510,138520,138530,138540,138550,138560,138570,138580,138590,138600,138610,138620,138630,138640,138650,138660,138670,138680,138690,138700,138710,138720,138730,138740,138750,138760,138770,138780,138790,138800,138810,138820,138830,138840,138850,138860,138870,138880,138890,138900,138910,138920,138930,138940,138950,138960,138970,138980,138990,139000,139010,139020,139030,139040,139050,139060,139070,139080,139090,139100,139110,139120,139130,139140,139150,139160,139170,139180,139190,139200,139210,139220,139230,139240,139250,139260,139270,139280,139290,139300,139310,139320,139330,139340,139350,139360,139370,139380,139390,139400,139410,139420,139430,139440,139450,139460,139470,139480,139490,139500,139510,139520,139530,139540,139550,139560,139570,139580,139590,139600,139610,139620,139630,139640,139650,139660,139670,139680,139690,139700,139710,139720,139730,139740,139750,139760,139770,139780,139790,139800,139810,139820,139830,139840,139850,139860,139870,139880,139890,139900,139910,139920,139930,139940,139950,139960,139970,139980,139990,140000,140010,140020,140030,140040,140050,140060,140070,140080,140090,140100,140110,140120,140130,140140,140150,140160,140170,140180,140190,140200,140210,140220,140230,140240,140250,140260,140270,140280,140290,140300,140310,140320,140330,140340,140350,140360,140370,140380,140390,140400,140410,140420,140430,140440,140450,140460,140470,140480,140490,140500,140510,140520,140530,140540,140550,140560,140570,140580,140590,140600,140610,140620,140630,140640,140650,140660,140670,140680,140690,140700,140710,140720,140730,140740,140750,140760,140770,140780,140790,140800,140810,140820,140830,140840,140850,140860,140870,140880,140890,140900,140910,140920,140930,140940,140950,140960,140970,140980,140990,141000,141010,141020,141030,141040,141050,141060,141070,141080,141090,141100,141110,141120,141130,141140,141150,141160,141170,141180,141190,141200,141210,141220,141230,141240,141250,141260,141270,141280,141290,141300,141310,141320,141330,141340,141350,141360,141370,141380,141390,141400,141410,141420,141430,141440,141450,141460,141470,141480,141490,141500,141510,141520,141530,141540,141550,141560,141570,141580,141590,141600,141610,141620,141630,141640,141650,141660,141670,141680,141690,141700,141710,141720,141730,141740,141750,141760,141770,141780,141790,141800,141810,141820,141830,141840,141850,141860,141870,141880,141890,141900,141910,141920,141930,141940,141950,141960,141970,141980,141990,142000,142010,142020,142030,142040,142050,142060,142070,142080,142090,142100,142110,142120,142130,142140,142150,142160,142170,142180,142190,142200,142210,142220,142230,142240,142250,142260,142270,142280,142290,142300,142310,142320,142330,142340,142350,142360,142370,142380,142390,142400,142410,142420,142430,142440,142450,142460,142470,142480,142490,142500,142510,142520,142530,142540,142550,142560,142570,142580,142590,142600,142610,142620,142630,142640,142650,142660,142670,142680,142690,142700,142710,142720,142730,142740,142750,142760,142770,142780,142790,142800,142810,142820,142830,142840,142850,142860,142870,142880,142890,142900,142910,142920,142930,142940,142950,142960,142970,142980,142990,143000,143010,143020,143030,143040,143050,143060,143070,143080,143090,143100,143110,143120,143130,143140,143150,143160,143170,143180,143190,143200,143210,143220,143230,143240,143250,143260,143270,143280,143290,143300,143310,143320,143330,143340,143350,143360,143370,143380,143390,143400,143410,143420,143430,143440,143450,143460,143470,143480,143490,143500,143510,143520,143530,143540,143550,143560,143570,143580,143590,143600,143610,143620,143630,143640,143650,143660,143670,143680,143690,143700,143710,143720,143730,143740,143750,143760,143770,143780,143790,143800,143810,143820,143830,143840,143850,143860,143870,143880,143890,143900,143910,143920,143930,143940,143950,143960,143970,143980,143990,144000,144010,144020,144030,144040,144050,144060,144070,144080,144090,144100,144110,144120,144130,144140,144150,144160,144170,144180,144190,144200,144210,144220,144230,144240,144250,144260,144270,144280,144290,144300,144310,144320,144330,144340,144350,144360,144370,144380,144390,144400,144410,144420,144430,144440,144450,144460,144470,144480,144490,144500,144510,144520,144530,144540,144550,144560,144570,144580,144590,144600,144610,144620,144630,144640,144650,144660,144670,144680,144690,144700,144710,144720,144730,144740,144750,144760,144770,144780,144790,144800,144810,144820,144830,144840,144850,144860,144870,144880,144890,144900,144910,144920,144930,144940,144950,144960,144970,144980,144990,145000,145010,145020,145030,145040,145050,145060,145070,145080,145090,145100,145110,145120,145130,145140,145150,145160,145170,145180,145190,145200,145210,145220,145230,145240,145250,145260,145270,145280,145290,145300,145310,145320,145330,145340,145350,145360,145370,145380,145390,145400,145410,145420,145430,145440,145450,145460,145470,145480,145490,145500,145510,145520,145530,145540,145550,145560,145570,145580,145590,145600,145610,145620,145630,145640,145650,145660,145670,145680,145690,145700,145710,145720,145730,145740,145750,145760,145770,145780,145790,145800,145810,145820,145830,145840,145850,145860,145870,145880,145890,145900,145910,145920,145930,145940,145950,145960,145970,145980,145990,146000,146010,146020,146030,146040,146050,146060,146070,146080,146090,146100,146110,146120,146130,146140,146150,146160,146170,146180,146190,146200,146210,146220,146230,146240,146250,146260,146270,146280,146290,146300,146310,146320,146330,146340,146350,146360,146370,146380,146390,146400,146410,146420,146430,146440,146450,146460,146470,146480,146490,146500,146510,146520,146530,146540,146550,146560,146570,146580,146590,146600,146610,146620,146630,146640,146650,146660,146670,146680,146690,146700,146710,146720,146730,146740,146750,146760,146770,146780,146790,146800,146810,146820,146830,146840,146850,146860,146870,146880,146890,146900,146910,146920,146930,146940,146950,146960,146970,146980,146990,147000,147010,147020,147030,147040,147050,147060,147070,147080,147090,147100,147110,147120,147130,147140,147150,147160,147170,147180,147190,147200,147210,147220,147230,147240,147250,147260,147270,147280,147290,147300,147310,147320,147330,147340,147350,147360,147370,147380,147390,147400,147410,147420,147430,147440,147450,147460,147470,147480,147490,147500,147510,147520,147530,147540,147550,147560,147570,147580,147590,147600,147610,147620,147630,147640,147650,147660,147670,147680,147690,147700,147710,147720,147730,147740,147750,147760,147770,147780,147790,147800,147810,147820,147830,147840,147850,147860,147870,147880,147890,147900,147910,147920,147930,147940,147950,147960,147970,147980,147990,148000,148010,148020,148030,148040,148050,148060,148070,148080,148090,148100,148110,148120,148130,148140,148150,148160,148170,148180,148190,148200,148210,148220,148230,148240,148250,148260,148270,148280,148290,148300,148310,148320,148330,148340,148350,148360,148370,148380,148390,148400,148410,148420,148430,148440,148450,148460,148470,148480,148490,148500,148510,148520,148530,148540,148550,148560,148570,148580,148590,148600,148610,148620,148630,148640,148650,148660,148670,148680,148690,148700,148710,148720,148730,148740,148750,148760,148770,148780,148790,148800,148810,148820,148830,148840,148850,148860,148870,148880,148890,148900,148910,148920,148930,148940,148950,148960,148970,148980,148990,149000,149010,149020,149030,149040,149050,149060,149070,149080,149090,149100,149110,149120,149130,149140,149150,149160,149170,149180,149190,149200,149210,149220,149230,149240,149250,149260,149270,149280,149290,149300,149310,149320,149330,149340,149350,149360,149370,149380,149390,149400,149410,149420,149430,149440,149450,149460,149470,149480,149490,149500,149510,149520,149530,149540,149550,149560,149570,149580,149590,149600,149610,149620,149630,149640,149650,149660,149670,149680,149690,149700,149710,149720,149730,149740,149750,149760,149770,149780,149790,149800,149810,149820,149830,149840,149850,149860,149870,149880,149890,149900,149910,149920,149930,149940,149950,149960,149970,149980,149990,150000,150010,150020,150030,150040,150050,150060,150070,150080,150090,150100,150110,150120,150130,150140,150150,150160,150170,150180,150190,150200,150210,150220,150230,150240,150250,150260,150270,150280,150290,150300,150310,150320,150330,150340,150350,150360,150370,150380,150390,150400,150410,150420,150430,150440,150450,150460,150470,150480,150490,150500,150510,150520,150530,150540,150550,150560,150570,150580,150590,150600,150610,150620,150630,150640,150650,150660,150670,150680,150690,150700,150710,150720,150730,150740,150750,150760,150770,150780,150790,150800,150810,150820,150830,150840,150850,150860,150870,150880,150890,150900,150910,150920,150930,150940,150950,150960,150970,150980,150990,151000,151010,151020,151030,151040,151050,151060,151070,151080,151090,151100,151110,151120,151130,151140,151150,151160,151170,151180,151190,151200,151210,151220,151230,151240,151250,151260,151270,151280,151290,151300,151310,151320,151330,151340,151350,151360,151370,151380,151390,151400,151410,151420,151430,151440,151450,151460,151470,151480,151490,151500,151510,151520,151530,151540,151550,151560,151570,151580,151590,151600,151610,151620,151630,151640,151650,151660,151670,151680,151690,151700,151710,151720,151730,151740,151750,151760,151770,151780,151790,151800,151810,151820,151830,151840,151850,151860,151870,151880,151890,151900,151910,151920,151930,151940,151950,151960,151970,151980,151990,152000,152010,152020,152030,152040,152050,152060,152070,152080,152090,152100,152110,152120,152130,152140,152150,152160,152170,152180,152190,152200,152210,152220,152230,152240,152250,152260,152270,152280,152290,152300,152310,152320,152330,152340,152350,152360,152370,152380,152390,152400,152410,152420,152430,152440,152450,152460,152470,152480,152490,152500,152510,152520,152530,152540,152550,152560,152570,152580,152590,152600,152610,152620,152630,152640,152650,152660,152670,152680,152690,152700,152710,152720,152730,152740,152750,152760,152770,152780,152790,152800,152810,152820,152830,152840,152850,152860,152870,152880,152890,152900,152910,152920,152930,152940,152950,152960,152970,152980,152990,153000,153010,153020,153030,153040,153050,153060,153070,153080,153090,153100,153110,153120,153130,153140,153150,153160,153170,153180,153190,153200,153210,153220,153230,153240,153250,153260,153270,153280,153290,153300,153310,153320,153330,153340,153350,153360,153370,153380,153390,153400,153410,153420,153430,153440,153450,153460,153470,153480,153490,153500,153510,153520,153530,153540,153550,153560,153570,153580,153590,153600,153610,153620,153630,153640,153650,153660,153670,153680,153690,153700,153710,153720,153730,153740,153750,153760,153770,153780,153790,153800,153810,153820,153830,153840,153850,153860,153870,153880,153890,153900,153910,153920,153930,153940,153950,153960,153970,153980,153990,154000,154010,154020,154030,154040,154050,154060,154070,154080,154090,154100,154110,154120,154130,154140,154150,154160,154170,154180,154190,154200,154210,154220,154230,154240,154250,154260,154270,154280,154290,154300,154310,154320,154330,154340,154350,154360,154370,154380,154390,154400,154410,154420,154430,154440,154450,154460,154470,154480,154490,154500,154510,154520,154530,154540,154550,154560,154570,154580,154590,154600,154610,154620,154630,154640,154650,154660,154670,154680,154690,154700,154710,154720,154730,154740,154750,154760,154770,154780,154790,154800,154810,154820,154830,154840,154850,154860,154870,154880,154890,154900,154910,154920,154930,154940,154950,154960,154970,154980,154990,155000,155010,155020,155030,155040,155050,155060,155070,155080,155090,155100,155110,155120,155130,155140,155150,155160,155170,155180,155190,155200,155210,155220,155230,155240,155250,155260,155270,155280,155290,155300,155310,155320,155330,155340,155350,155360,155370,155380,155390,155400,155410,155420,155430,155440,155450,155460,155470,155480,155490,155500,155510,155520,155530,155540,155550,155560,155570,155580,155590,155600,155610,155620,155630,155640,155650,155660,155670,155680,155690,155700,155710,155720,155730,155740,155750,155760,155770,155780,155790,155800,155810,155820,155830,155840,155850,155860,155870,155880,155890,155900,155910,155920,155930,155940,155950,155960,155970,155980,155990,156000,156010,156020,156030,156040,156050,156060,156070,156080,156090,156100,156110,156120,156130,156140,156150,156160,156170,156180,156190,156200,156210,156220,156230,156240,156250,156260,156270,156280,156290,156300,156310,156320,156330,156340,156350,156360,156370,156380,156390,156400,156410,156420,156430,156440,156450,156460,156470,156480,156490,156500,156510,156520,156530,156540,156550,156560,156570,156580,156590,156600,156610,156620,156630,156640,156650,156660,156670,156680,156690,156700,156710,156720,156730,156740,156750,156760,156770,156780,156790,156800,156810,156820,156830,156840,156850,156860,156870,156880,156890,156900,156910,156920,156930,156940,156950,156960,156970,156980,156990,157000,157010,157020,157030,157040,157050,157060,157070,157080,157090,157100,157110,157120,157130,157140,157150,157160,157170,157180,157190,157200,157210,157220,157230,157240,157250,157260,157270,157280,157290,157300,157310,157320,157330,157340,157350,157360,157370,157380,157390,157400,157410,157420,157430,157440,157450,157460,157470,157480,157490,157500,157510,157520,157530,157540,157550,157560,157570,157580,157590,157600,157610,157620,157630,157640,157650,157660,157670,157680,157690,157700,157710,157720,157730,157740,157750,157760,157770,157780,157790,157800,157810,157820,157830,157840,157850,157860,157870,157880,157890,157900,157910,157920,157930,157940,157950,157960,157970,157980,157990,158000,158010,158020,158030,158040,158050,158060,158070,158080,158090,158100,158110,158120,158130,158140,158150,158160,158170,158180,158190,158200,158210,158220,158230,158240,158250,158260,158270,158280,158290,158300,158310,158320,158330,158340,158350,158360,158370,158380,158390,158400,158410,158420,158430,158440,158450,158460,158470,158480,158490,158500,158510,158520,158530,158540,158550,158560,158570,158580,158590,158600,158610,158620,158630,158640,158650,158660,158670,158680,158690,158700,158710,158720,158730,158740,158750,158760,158770,158780,158790,158800,158810,158820,158830,158840,158850,158860,158870,158880,158890,158900,158910,158920,158930,158940,158950,158960,158970,158980,158990,159000,159010,159020,159030,159040,159050,159060,159070,159080,159090,159100,159110,159120,159130,159140,159150,159160,159170,159180,159190,159200,159210,159220,159230,159240,159250,159260,159270,159280,159290,159300,159310,159320,159330,159340,159350,159360,159370,159380,159390,159400,159410,159420,159430,159440,159450,159460,159470,159480,159490,159500,159510,159520,159530,159540,159550,159560,159570,159580,159590,159600,159610,159620,159630,159640,159650,159660,159670,159680,159690,159700,159710,159720,159730,159740,159750,159760,159770,159780,159790,159800,159810,159820,159830,159840,159850,159860,159870,159880,159890,159900,159910,159920,159930,159940,159950,159960,159970,159980,159990,160000,160010,160020,160030,160040,160050,160060,160070,160080,160090,160100,160110,160120,160130,160140,160150,160160,160170,160180,160190,160200,160210,160220,160230,160240,160250,160260,160270,160280,160290,160300,160310,160320,160330,160340,160350,160360,160370,160380,160390,160400,160410,160420,160430,160440,160450,160460,160470,160480,160490,160500,160510,160520,160530,160540,160550,160560,160570,160580,160590,160600,160610,160620,160630,160640,160650,160660,160670,160680,160690,160700,160710,160720,160730,160740,160750,160760,160770,160780,160790,160800,160810,160820,160830,160840,160850,160860,160870,160880,160890,160900,160910,160920,160930,160940,160950,160960,160970,160980,160990,161000,161010,161020,161030,161040,161050,161060,161070,161080,161090,161100,161110,161120,161130,161140,161150,161160,161170,161180,161190,161200,161210,161220,161230,161240,161250,161260,161270,161280,161290,161300,161310,161320,161330,161340,161350,161360,161370,161380,161390,161400,161410,161420,161430,161440,161450,161460,161470,161480,161490,161500,161510,161520,161530,161540,161550,161560,161570,161580,161590,161600,161610,161620,161630,161640,161650,161660,161670,161680,161690,161700,161710,161720,161730,161740,161750,161760,161770,161780,161790,161800,161810,161820,161830,161840,161850,161860,161870,161880,161890,161900,161910,161920,161930,161940,161950,161960,161970,161980,161990,162000,162010,162020,162030,162040,162050,162060,162070,162080,162090,162100,162110,162120,162130,162140,162150,162160,162170,162180,162190,162200,162210,162220,162230,162240,162250,162260,162270,162280,162290,162300,162310,162320,162330,162340,162350,162360,162370,162380,162390,162400,162410,162420,162430,162440,162450,162460,162470,162480,162490,162500,162510,162520,162530,162540,162550,162560,162570,162580,162590,162600,162610,162620,162630,162640,162650,162660,162670,162680,162690,162700,162710,162720,162730,162740,162750,162760,162770,162780,162790,162800,162810,162820,162830,162840,162850,162860,162870,162880,162890,162900,162910,162920,162930,162940,162950,162960,162970,162980,162990,163000,163010,163020,163030,163040,163050,163060,163070,163080,163090,163100,163110,163120,163130,163140,163150,163160,163170,163180,163190,163200,163210,163220,163230,163240,163250,163260,163270,163280,163290,163300,163310,163320,163330,163340,163350,163360,163370,163380,163390,163400,163410,163420,163430,163440,163450,163460,163470,163480,163490,163500,163510,163520,163530,163540,163550,163560,163570,163580,163590,163600,163610,163620,163630,163640,163650,163660,163670,163680,163690,163700,163710,163720,163730,163740,163750,163760,163770,163780,163790,163800,163810,163820,163830,163840,163850,163860,163870,163880,163890,163900,163910,163920,163930,163940,163950,163960,163970,163980,163990,164000,164010,164020,164030,164040,164050,164060,164070,164080,164090,164100,164110,164120,164130,164140,164150,164160,164170,164180,164190,164200,164210,164220,164230,164240,164250,164260,164270,164280,164290,164300,164310,164320,164330,164340,164350,164360,164370,164380,164390,164400,164410,164420,164430,164440,164450,164460,164470,164480,164490,164500,164510,164520,164530,164540,164550,164560,164570,164580,164590,164600,164610,164620,164630,164640,164650,164660,164670,164680,164690,164700,164710,164720,164730,164740,164750,164760,164770,164780,164790,164800,164810,164820,164830,164840,164850,164860,164870,164880,164890,164900,164910,164920,164930,164940,164950,164960,164970,164980,164990,165000,165010,165020,165030,165040,165050,165060,165070,165080,165090,165100,165110,165120,165130,165140,165150,165160,165170,165180,165190,165200,165210,165220,165230,165240,165250,165260,165270,165280,165290,165300,165310,165320,165330,165340,165350,165360,165370,165380,165390,165400,165410,165420,165430,165440,165450,165460,165470,165480,165490,165500,165510,165520,165530,165540,165550,165560,165570,165580,165590,165600,165610,165620,165630,165640,165650,165660,165670,165680,165690,165700,165710,165720,165730,165740,165750,165760,165770,165780,165790,165800,165810,165820,165830,165840,165850,165860,165870,165880,165890,165900,165910,165920,165930,165940,165950,165960,165970,165980,165990,166000,166010,166020,166030,166040,166050,166060,166070,166080,166090,166100,166110,166120,166130,166140,166150,166160,166170,166180,166190,166200,166210,166220,166230,166240,166250,166260,166270,166280,166290,166300,166310,166320,166330,166340,166350,166360,166370,166380,166390,166400,166410,166420,166430,166440,166450,166460,166470,166480,166490,166500,166510,166520,166530,166540,166550,166560,166570,166580,166590,166600,166610,166620,166630,166640,166650,166660,166670,166680,166690,166700,166710,166720,166730,166740,166750,166760,166770,166780,166790,166800,166810,166820,166830,166840,166850,166860,166870,166880,166890,166900,166910,166920,166930,166940,166950,166960,166970,166980,166990,167000,167010,167020,167030,167040,167050,167060,167070,167080,167090,167100,167110,167120,167130,167140,167150,167160,167170,167180,167190,167200,167210,167220,167230,167240,167250,167260,167270,167280,167290,167300,167310,167320,167330,167340,167350,167360,167370,167380,167390,167400,167410,167420,167430,167440,167450,167460,167470,167480,167490,167500,167510,167520,167530,167540,167550,167560,167570,167580,167590,167600,167610,167620,167630,167640,167650,167660,167670,167680,167690,167700,167710,167720,167730,167740,167750,167760,167770,167780,167790,167800,167810,167820,167830,167840,167850,167860,167870,167880,167890,167900,167910,167920,167930,167940,167950,167960,167970,167980,167990,168000,168010,168020,168030,168040,168050,168060,168070,168080,168090,168100,168110,168120,168130,168140,168150,168160,168170,168180,168190,168200,168210,168220,168230,168240,168250,168260,168270,168280,168290,168300,168310,168320,168330,168340,168350,168360,168370,168380,168390,168400,168410,168420,168430,168440,168450,168460,168470,168480,168490,168500,168510,168520,168530,168540,168550,168560,168570,168580,168590,168600,168610,168620,168630,168640,168650,168660,168670,168680,168690,168700,168710,168720,168730,168740,168750,168760,168770,168780,168790,168800,168810,168820,168830,168840,168850,168860,168870,168880,168890,168900,168910,168920,168930,168940,168950,168960,168970,168980,168990,169000,169010,169020,169030,169040,169050,169060,169070,169080,169090,169100,169110,169120,169130,169140,169150,169160,169170,169180,169190,169200,169210,169220,169230,169240,169250,169260,169270,169280,169290,169300,169310,169320,169330,169340,169350,169360,169370,169380,169390,169400,169410,169420,169430,169440,169450,169460,169470,169480,169490,169500,169510,169520,169530,169540,169550,169560,169570,169580,169590,169600,169610,169620,169630,169640,169650,169660,169670,169680,169690,169700,169710,169720,169730,169740,169750,169760,169770,169780,169790,169800,169810,169820,169830,169840,169850,169860,169870,169880,169890,169900,169910,169920,169930,169940,169950,169960,169970,169980,169990,170000,170010,170020,170030,170040,170050,170060,170070,170080,170090,170100,170110,170120,170130,170140,170150,170160,170170,170180,170190,170200,170210,170220,170230,170240,170250,170260,170270,170280,170290,170300,170310,170320,170330,170340,170350,170360,170370,170380,170390,170400,170410,170420,170430,170440,170450,170460,170470,170480,170490,170500,170510,170520,170530,170540,170550,170560,170570,170580,170590,170600,170610,170620,170630,170640,170650,170660,170670,170680,170690,170700,170710,170720,170730,170740,170750,170760,170770,170780,170790,170800,170810,170820,170830,170840,170850,170860,170870,170880,170890,170900,170910,170920,170930,170940,170950,170960,170970,170980,170990,171000,171010,171020,171030,171040,171050,171060,171070,171080,171090,171100,171110,171120,171130,171140,171150,171160,171170,171180,171190,171200,171210,171220,171230,171240,171250,171260,171270,171280,171290,171300,171310,171320,171330,171340,171350,171360,171370,171380,171390,171400,171410,171420,171430,171440,171450,171460,171470,171480,171490,171500,171510,171520,171530,171540,171550,171560,171570,171580,171590,171600,171610,171620,171630,171640,171650,171660,171670,171680,171690,171700,171710,171720,171730,171740,171750,171760,171770,171780,171790,171800,171810,171820,171830,171840,171850,171860,171870,171880,171890,171900,171910,171920,171930,171940,171950,171960,171970,171980,171990,172000,172010,172020,172030,172040,172050,172060,172070,172080,172090,172100,172110,172120,172130,172140,172150,172160,172170,172180,172190,172200,172210,172220,172230,172240,172250,172260,172270,172280,172290,172300,172310,172320,172330,172340,172350,172360,172370,172380,172390,172400,172410,172420,172430,172440,172450,172460,172470,172480,172490,172500,172510,172520,172530,172540,172550,172560,172570,172580,172590,172600,172610,172620,172630,172640,172650,172660,172670,172680,172690,172700,172710,172720,172730,172740,172750,172760,172770,172780,172790,172800,172810,172820,172830,172840,172850,172860,172870,172880,172890,172900,172910,172920,172930,172940,172950,172960,172970,172980,172990,173000,173010,173020,173030,173040,173050,173060,173070,173080,173090,173100,173110,173120,173130,173140,173150,173160,173170,173180,173190,173200,173210,173220,173230,173240,173250,173260,173270,173280,173290,173300,173310,173320,173330,173340,173350,173360,173370,173380,173390,173400,173410,173420,173430,173440,173450,173460,173470,173480,173490,173500,173510,173520,173530,173540,173550,173560,173570,173580,173590,173600,173610,173620,173630,173640,173650,173660,173670,173680,173690,173700,173710,173720,173730,173740,173750,173760,173770,173780,173790,173800,173810,173820,173830,173840,173850,173860,173870,173880,173890,173900,173910,173920,173930,173940,173950,173960,173970,173980,173990,174000,174010,174020,174030,174040,174050,174060,174070,174080,174090,174100,174110,174120,174130,174140,174150,174160,174170,174180,174190,174200,174210,174220,174230,174240,174250,174260,174270,174280,174290,174300,174310,174320,174330,174340,174350,174360,174370,174380,174390,174400,174410,174420,174430,174440,174450,174460,174470,174480,174490,174500,174510,174520,174530,174540,174550,174560,174570,174580,174590,174600,174610,174620,174630,174640,174650,174660,174670,174680,174690,174700,174710,174720,174730,174740,174750,174760,174770,174780,174790,174800,174810,174820,174830,174840,174850,174860,174870,174880,174890,174900,174910,174920,174930,174940,174950,174960,174970,174980,174990,175000,175010,175020,175030,175040,175050,175060,175070,175080,175090,175100,175110,175120,175130,175140,175150,175160,175170,175180,175190,175200,175210,175220,175230,175240,175250,175260,175270,175280,175290,175300,175310,175320,175330,175340,175350,175360,175370,175380,175390,175400,175410,175420,175430,175440,175450,175460,175470,175480,175490,175500,175510,175520,175530,175540,175550,175560,175570,175580,175590,175600,175610,175620,175630,175640,175650,175660,175670,175680,175690,175700,175710,175720,175730,175740,175750,175760,175770,175780,175790,175800,175810,175820,175830,175840,175850,175860,175870,175880,175890,175900,175910,175920,175930,175940,175950,175960,175970,175980,175990,176000,176010,176020,176030,176040,176050,176060,176070,176080,176090,176100,176110,176120,176130,176140,176150,176160,176170,176180,176190,176200,176210,176220,176230,176240,176250,176260,176270,176280,176290,176300,176310,176320,176330,176340,176350,176360,176370,176380,176390,176400,176410,176420,176430,176440,176450,176460,176470,176480,176490,176500,176510,176520,176530,176540,176550,176560,176570,176580,176590,176600,176610,176620,176630,176640,176650,176660,176670,176680,176690,176700,176710,176720,176730,176740,176750,176760,176770,176780,176790,176800,176810,176820,176830,176840,176850,176860,176870,176880,176890,176900,176910,176920,176930,176940,176950,176960,176970,176980,176990,177000,177010,177020,177030,177040,177050,177060,177070,177080,177090,177100,177110,177120,177130,177140,177150,177160,177170,177180,177190,177200,177210,177220,177230,177240,177250,177260,177270,177280,177290,177300,177310,177320,177330,177340,177350,177360,177370,177380,177390,177400,177410,177420,177430,177440,177450,177460,177470,177480,177490,177500,177510,177520,177530,177540,177550,177560,177570,177580,177590,177600,177610,177620,177630,177640,177650,177660,177670,177680,177690,177700,177710,177720,177730,177740,177750,177760,177770,177780,177790,177800,177810,177820,177830,177840,177850,177860,177870,177880,177890,177900,177910,177920,177930,177940,177950,177960,177970,177980,177990,178000,178010,178020,178030,178040,178050,178060,178070,178080,178090,178100,178110,178120,178130,178140,178150,178160,178170,178180,178190,178200,178210,178220,178230,178240,178250,178260,178270,178280,178290,178300,178310,178320,178330,178340,178350,178360,178370,178380,178390,178400,178410,178420,178430,178440,178450,178460,178470,178480,178490,178500,178510,178520,178530,178540,178550,178560,178570,178580,178590,178600,178610,178620,178630,178640,178650,178660,178670,178680,178690,178700,178710,178720,178730,178740,178750,178760,178770,178780,178790,178800,178810,178820,178830,178840,178850,178860,178870,178880,178890,178900,178910,178920,178930,178940,178950,178960,178970,178980,178990,179000,179010,179020,179030,179040,179050,179060,179070,179080,179090,179100,179110,179120,179130,179140,179150,179160,179170,179180,179190,179200,179210,179220,179230,179240,179250,179260,179270,179280,179290,179300,179310,179320,179330,179340,179350,179360,179370,179380,179390,179400,179410,179420,179430,179440,179450,179460,179470,179480,179490,179500,179510,179520,179530,179540,179550,179560,179570,179580,179590,179600,179610,179620,179630,179640,179650,179660,179670,179680,179690,179700,179710,179720,179730,179740,179750,179760,179770,179780,179790,179800,179810,179820,179830,179840,179850,179860,179870,179880,179890,179900,179910,179920,179930,179940,179950,179960,179970,179980,179990,180000,180010,180020,180030,180040,180050,180060,180070,180080,180090,180100,180110,180120,180130,180140,180150,180160,180170,180180,180190,180200,180210,180220,180230,180240,180250,180260,180270,180280,180290,180300,180310,180320,180330,180340,180350,180360,180370,180380,180390,180400,180410,180420,180430,180440,180450,180460,180470,180480,180490,180500,180510,180520,180530,180540,180550,180560,180570,180580,180590,180600,180610,180620,180630,180640,180650,180660,180670,180680,180690,180700,180710,180720,180730,180740,180750,180760,180770,180780,180790,180800,180810,180820,180830,180840,180850,180860,180870,180880,180890,180900,180910,180920,180930,180940,180950,180960,180970,180980,180990,181000,181010,181020,181030,181040,181050,181060,181070,181080,181090,181100,181110,181120,181130,181140,181150,181160,181170,181180,181190,181200,181210,181220,181230,181240,181250,181260,181270,181280,181290,181300,181310,181320,181330,181340,181350,181360,181370,181380,181390,181400,181410,181420,181430,181440,181450,181460,181470,181480,181490,181500,181510,181520,181530,181540,181550,181560,181570,181580,181590,181600,181610,181620,181630,181640,181650,181660,181670,181680,181690,181700,181710,181720,181730,181740,181750,181760,181770,181780,181790,181800,181810,181820,181830,181840,181850,181860,181870,181880,181890,181900,181910,181920,181930,181940,181950,181960,181970,181980,181990,182000,182010,182020,182030,182040,182050,182060,182070,182080,182090,182100,182110,182120,182130,182140,182150,182160,182170,182180,182190,182200,182210,182220,182230,182240,182250,182260,182270,182280,182290,182300,182310,182320,182330,182340,182350,182360,182370,182380,182390,182400,182410,182420,182430,182440,182450,182460,182470,182480,182490,182500,182510,182520,182530,182540,182550,182560,182570,182580,182590,182600,182610,182620,182630,182640,182650,182660,182670,182680,182690,182700,182710,182720,182730,182740,182750,182760,182770,182780,182790,182800,182810,182820,182830,182840,182850,182860,182870,182880,182890,182900,182910,182920,182930,182940,182950,182960,182970,182980,182990,183000,183010,183020,183030,183040,183050,183060,183070,183080,183090,183100,183110,183120,183130,183140,183150,183160,183170,183180,183190,183200,183210,183220,183230,183240,183250,183260,183270,183280,183290,183300,183310,183320,183330,183340,183350,183360,183370,183380,183390,183400,183410,183420,183430,183440,183450,183460,183470,183480,183490,183500,183510,183520,183530,183540,183550,183560,183570,183580,183590,183600,183610,183620,183630,183640,183650,183660,183670,183680,183690,183700,183710,183720,183730,183740,183750,183760,183770,183780,183790,183800,183810,183820,183830,183840,183850,183860,183870,183880,183890,183900,183910,183920,183930,183940,183950,183960,183970,183980,183990,184000,184010,184020,184030,184040,184050,184060,184070,184080,184090,184100,184110,184120,184130,184140,184150,184160,184170,184180,184190,184200,184210,184220,184230,184240,184250,184260,184270,184280,184290,184300,184310,184320,184330,184340,184350,184360,184370,184380,184390,184400,184410,184420,184430,184440,184450,184460,184470,184480,184490,184500,184510,184520,184530,184540,184550,184560,184570,184580,184590,184600,184610,184620,184630,184640,184650,184660,184670,184680,184690,184700,184710,184720,184730,184740,184750,184760,184770,184780,184790,184800,184810,184820,184830,184840,184850,184860,184870,184880,184890,184900,184910,184920,184930,184940,184950,184960,184970,184980,184990,185000,185010,185020,185030,185040,185050,185060,185070,185080,185090,185100,185110,185120,185130,185140,185150,185160,185170,185180,185190,185200,185210,185220,185230,185240,185250,185260,185270,185280,185290,185300,185310,185320,185330,185340,185350,185360,185370,185380,185390,185400,185410,185420,185430,185440,185450,185460,185470,185480,185490,185500,185510,185520,185530,185540,185550,185560,185570,185580,185590,185600,185610,185620,185630,185640,185650,185660,185670,185680,185690,185700,185710,185720,185730,185740,185750,185760,185770,185780,185790,185800,185810,185820,185830,185840,185850,185860,185870,185880,185890,185900,185910,185920,185930,185940,185950,185960,185970,185980,185990,186000,186010,186020,186030,186040,186050,186060,186070,186080,186090,186100,186110,186120,186130,186140,186150,186160,186170,186180,186190,186200,186210,186220,186230,186240,186250,186260,186270,186280,186290,186300,186310,186320,186330,186340,186350,186360,186370,186380,186390,186400,186410,186420,186430,186440,186450,186460,186470,186480,186490,186500,186510,186520,186530,186540,186550,186560,186570,186580,186590,186600,186610,186620,186630,186640,186650,186660,186670,186680,186690,186700,186710,186720,186730,186740,186750,186760,186770,186780,186790,186800,186810,186820,186830,186840,186850,186860,186870,186880,186890,186900,186910,186920,186930,186940,186950,186960,186970,186980,186990,187000,187010,187020,187030,187040,187050,187060,187070,187080,187090,187100,187110,187120,187130,187140,187150,187160,187170,187180,187190,187200,187210,187220,187230,187240,187250,187260,187270,187280,187290,187300,187310,187320,187330,187340,187350,187360,187370,187380,187390,187400,187410,187420,187430,187440,187450,187460,187470,187480,187490,187500,187510,187520,187530,187540,187550,187560,187570,187580,187590,187600,187610,187620,187630,187640,187650,187660,187670,187680,187690,187700,187710,187720,187730,187740,187750,187760,187770,187780,187790,187800,187810,187820,187830,187840,187850,187860,187870,187880,187890,187900,187910,187920,187930,187940,187950,187960,187970,187980,187990,188000,188010,188020,188030,188040,188050,188060,188070,188080,188090,188100,188110,188120,188130,188140,188150,188160,188170,188180,188190,188200,188210,188220,188230,188240,188250,188260,188270,188280,188290,188300,188310,188320,188330,188340,188350,188360,188370,188380,188390,188400,188410,188420,188430,188440,188450,188460,188470,188480,188490,188500,188510,188520,188530,188540,188550,188560,188570,188580,188590,188600,188610,188620,188630,188640,188650,188660,188670,188680,188690,188700,188710,188720,188730,188740,188750,188760,188770,188780,188790,188800,188810,188820,188830,188840,188850,188860,188870,188880,188890,188900,188910,188920,188930,188940,188950,188960,188970,188980,188990,189000,189010,189020,189030,189040,189050,189060,189070,189080,189090,189100,189110,189120,189130,189140,189150,189160,189170,189180,189190,189200,189210,189220,189230,189240,189250,189260,189270,189280,189290,189300,189310,189320,189330,189340,189350,189360,189370,189380,189390,189400,189410,189420,189430,189440,189450,189460,189470,189480,189490,189500,189510,189520,189530,189540,189550,189560,189570,189580,189590,189600,189610,189620,189630,189640,189650,189660,189670,189680,189690,189700,189710,189720,189730,189740,189750,189760,189770,189780,189790,189800,189810,189820,189830,189840,189850,189860,189870,189880,189890,189900,189910,189920,189930,189940,189950,189960,189970,189980,189990,190000,190010,190020,190030,190040,190050,190060,190070,190080,190090,190100,190110,190120,190130,190140,190150,190160,190170,190180,190190,190200,190210,190220,190230,190240,190250,190260,190270,190280,190290,190300,190310,190320,190330,190340,190350,190360,190370,190380,190390,190400,190410,190420,190430,190440,190450,190460,190470,190480,190490,190500,190510,190520,190530,190540,190550,190560,190570,190580,190590,190600,190610,190620,190630,190640,190650,190660,190670,190680,190690,190700,190710,190720,190730,190740,190750,190760,190770,190780,190790,190800,190810,190820,190830,190840,190850,190860,190870,190880,190890,190900,190910,190920,190930,190940,190950,190960,190970,190980,190990,191000,191010,191020,191030,191040,191050,191060,191070,191080,191090,191100,191110,191120,191130,191140,191150,191160,191170,191180,191190,191200,191210,191220,191230,191240,191250,191260,191270,191280,191290,191300,191310,191320,191330,191340,191350,191360,191370,191380,191390,191400,191410,191420,191430,191440,191450,191460,191470,191480,191490,191500,191510,191520,191530,191540,191550,191560,191570,191580,191590,191600,191610,191620,191630,191640,191650,191660,191670,191680,191690,191700,191710,191720,191730,191740,191750,191760,191770,191780,191790,191800,191810,191820,191830,191840,191850,191860,191870,191880,191890,191900,191910,191920,191930,191940,191950,191960,191970,191980,191990,192000,192010,192020,192030,192040,192050,192060,192070,192080,192090,192100,192110,192120,192130,192140,192150,192160,192170,192180,192190,192200,192210,192220,192230,192240,192250,192260,192270,192280,192290,192300,192310,192320,192330,192340,192350,192360,192370,192380,192390,192400,192410,192420,192430,192440,192450,192460,192470,192480,192490,192500,192510,192520,192530,192540,192550,192560,192570,192580,192590,192600,192610,192620,192630,192640,192650,192660,192670,192680,192690,192700,192710,192720,192730,192740,192750,192760,192770,192780,192790,192800,192810,192820,192830,192840,192850,192860,192870,192880,192890,192900,192910,192920,192930,192940,192950,192960,192970,192980,192990,193000,193010,193020,193030,193040,193050,193060,193070,193080,193090,193100,193110,193120,193130,193140,193150,193160,193170,193180,193190,193200,193210,193220,193230,193240,193250,193260,193270,193280,193290,193300,193310,193320,193330,193340,193350,193360,193370,193380,193390,193400,193410,193420,193430,193440,193450,193460,193470,193480,193490,193500,193510,193520,193530,193540,193550,193560,193570,193580,193590,193600,193610,193620,193630,193640,193650,193660,193670,193680,193690,193700,193710,193720,193730,193740,193750,193760,193770,193780,193790,193800,193810,193820,193830,193840,193850,193860,193870,193880,193890,193900,193910,193920,193930,193940,193950,193960,193970,193980,193990,194000,194010,194020,194030,194040,194050,194060,194070,194080,194090,194100,194110,194120,194130,194140,194150,194160,194170,194180,194190,194200,194210,194220,194230,194240,194250,194260,194270,194280,194290,194300,194310,194320,194330,194340,194350,194360,194370,194380,194390,194400,194410,194420,194430,194440,194450,194460,194470,194480,194490,194500,194510,194520,194530,194540,194550,194560,194570,194580,194590,194600,194610,194620,194630,194640,194650,194660,194670,194680,194690,194700,194710,194720,194730,194740,194750,194760,194770,194780,194790,194800,194810,194820,194830,194840,194850,194860,194870,194880,194890,194900,194910,194920,194930,194940,194950,194960,194970,194980,194990,195000,195010,195020,195030,195040,195050,195060,195070,195080,195090,195100,195110,195120,195130,195140,195150,195160,195170,195180,195190,195200,195210,195220,195230,195240,195250,195260,195270,195280,195290,195300,195310,195320,195330,195340,195350,195360,195370,195380,195390,195400,195410,195420,195430,195440,195450,195460,195470,195480,195490,195500,195510,195520,195530,195540,195550,195560,195570,195580,195590,195600,195610,195620,195630,195640,195650,195660,195670,195680,195690,195700,195710,195720,195730,195740,195750,195760,195770,195780,195790,195800,195810,195820,195830,195840,195850,195860,195870,195880,195890,195900,195910,195920,195930,195940,195950,195960,195970,195980,195990,196000,196010,196020,196030,196040,196050,196060,196070,196080,196090,196100,196110,196120,196130,196140,196150,196160,196170,196180,196190,196200,196210,196220,196230,196240,196250,196260,196270,196280,196290,196300,196310,196320,196330,196340,196350,196360,196370,196380,196390,196400,196410,196420,196430,196440,196450,196460,196470,196480,196490,196500,196510,196520,196530,196540,196550,196560,196570,196580,196590,196600,196610,196620,196630,196640,196650,196660,196670,196680,196690,196700,196710,196720,196730,196740,196750,196760,196770,196780,196790,196800,196810,196820,196830,196840,196850,196860,196870,196880,196890,196900,196910,196920,196930,196940,196950,196960,196970,196980,196990,197000,197010,197020,197030,197040,197050,197060,197070,197080,197090,197100,197110,197120,197130,197140,197150,197160,197170,197180,197190,197200,197210,197220,197230,197240,197250,197260,197270,197280,197290,197300,197310,197320,197330,197340,197350,197360,197370,197380,197390,197400,197410,197420,197430,197440,197450,197460,197470,197480,197490,197500,197510,197520,197530,197540,197550,197560,197570,197580,197590,197600,197610,197620,197630,197640,197650,197660,197670,197680,197690,197700,197710,197720,197730,197740,197750,197760,197770,197780,197790,197800,197810,197820,197830,197840,197850,197860,197870,197880,197890,197900,197910,197920,197930,197940,197950,197960,197970,197980,197990,198000,198010,198020,198030,198040,198050,198060,198070,198080,198090,198100,198110,198120,198130,198140,198150,198160,198170,198180,198190,198200,198210,198220,198230,198240,198250,198260,198270,198280,198290,198300,198310,198320,198330,198340,198350,198360,198370,198380,198390,198400,198410,198420,198430,198440,198450,198460,198470,198480,198490,198500,198510,198520,198530,198540,198550,198560,198570,198580,198590,198600,198610,198620,198630,198640,198650,198660,198670,198680,198690,198700,198710,198720,198730,198740,198750,198760,198770,198780,198790,198800,198810,198820,198830,198840,198850,198860,198870,198880,198890,198900,198910,198920,198930,198940,198950,198960,198970,198980,198990,199000,199010,199020,199030,199040,199050,199060,199070,199080,199090,199100,199110,199120,199130,199140,199150,199160,199170,199180,199190,199200,199210,199220,199230,199240,199250,199260,199270,199280,199290,199300,199310,199320,199330,199340,199350,199360,199370,199380,199390,199400,199410,199420,199430,199440,199450,199460,199470,199480,199490,199500,199510,199520,199530,199540,199550,199560,199570,199580,199590,199600,199610,199620,199630,199640,199650,199660,199670,199680,199690,199700,199710,199720,199730,199740,199750,199760,199770,199780,199790,199800,199810,199820,199830,199840,199850,199860,199870,199880,199890,199900,199910,199920,199930,199940,199950,199960,199970,199980,199990,200000 ]; - var b = 2; - var d = 4; + var b = 2.0; + var d = 4.0; var c = delay(a, b); var e = delay(c, d); diff --git a/mlir/test/Examples/DspExample/dsp_sub_op.py b/mlir/test/Examples/DspExample/dsp_sub_op.py index da634fde628f..65544e2133b8 100644 --- a/mlir/test/Examples/DspExample/dsp_sub_op.py +++ b/mlir/test/Examples/DspExample/dsp_sub_op.py @@ -8,7 +8,7 @@ def main() { # var a = [[[10,20],[30,40]] , [[10,20],[30,40]]]; # var b = [[[40,50],[60,70]] , [[0,0],[10,20]]]; - var a = [[[10,20],[30,0]] ]; + var a = [[[10.0,20.0],[30.0,0]] ]; var b = [[[40,50],[60,70]] ]; var c = sub(a, b); print(c);