{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Notebook" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## More About Strings" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "str" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = 'Hello World'\n", "type(s)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello World'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'Hello World'" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello World\n" ] } ], "source": [ "print(s)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Hello World'" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\"We don't have much money\"" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'We don\\'t have much money'" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\"We don't have much money\"" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"We don't have much money\"" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'\"\\''" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"\\\"'\"" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "windows_path = 'C:\\Windows\\neue Festplatte'" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C:\\Windows\n", "eue Festplatte\n" ] } ], "source": [ "print(windows_path)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C:\\Windows\\neue Festplatte\n" ] } ], "source": [ "windows_path = 'C:\\\\Windows\\\\neue Festplatte'\n", "print(windows_path)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C:\\Windows\\neue Festplatte\n" ] } ], "source": [ "windows_path = r'C:\\Windows\\neue Festplatte'\n", "print(windows_path)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "line = ' 1234 Joerg Faschingbauer [Lehrer] '" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "regex = r'^\\s*(\\d+)\\s+(\\.+)\\s+(\\.+)\\s+[(\\.+)]\\s*$'\n", "import re\n", "match = re.search(regex, line)\n", "print(match)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Multiline Strings (docstrings?)**" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello\n", "World\n" ] } ], "source": [ "s = '''Hello\n", "World'''\n", "print(s)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3\n" ] } ], "source": [ "# This function adds two values. These two values can be anything, \n", "# but both values must support the '+' operator.\n", "\n", "# Parameters:\n", "# * a\n", "# * b\n", "# Return: a+b (of the same type that the '+' operator produces \n", "# when ....)\n", "def add(a, b):\n", " return a+b\n", "print(add(1, 2))" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3\n" ] } ], "source": [ "def add(a, b):\n", " '''\n", " This function adds two values. These two values can be anything, \n", " but both values must support the '+' operator.\n", "\n", " Parameters:\n", " * a\n", " * b\n", " Return: a+b (of the same type that the '+' operator produces \n", " when ....)\n", " '''\n", " return a+b\n", "print(add(1, 2))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "add" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\"\\n This function adds two values. These two values can be anything, \\n but both values must support the '+' operator.\\n\\n Parameters:\\n * a\\n * b\\n Return: a+b (of the same type that the '+' operator produces \\n when ....)\\n \"" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "add.__doc__" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on function add in module __main__:\n", "\n", "add(a, b)\n", " This function adds two values. These two values can be anything, \n", " but both values must support the '+' operator.\n", " \n", " Parameters:\n", " * a\n", " * b\n", " Return: a+b (of the same type that the '+' operator produces \n", " when ....)\n", "\n" ] } ], "source": [ "help(add)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on built-in module sys:\n", "\n", "NAME\n", " sys\n", "\n", "MODULE REFERENCE\n", " https://docs.python.org/3.9/library/sys\n", " \n", " The following documentation is automatically generated from the Python\n", " source files. It may be incomplete, incorrect or include features that\n", " are considered implementation detail and may vary between Python\n", " implementations. When in doubt, consult the module reference at the\n", " location listed above.\n", "\n", "DESCRIPTION\n", " This module provides access to some objects used or maintained by the\n", " interpreter and to functions that interact strongly with the interpreter.\n", " \n", " Dynamic objects:\n", " \n", " argv -- command line arguments; argv[0] is the script pathname if known\n", " path -- module search path; path[0] is the script directory, else ''\n", " modules -- dictionary of loaded modules\n", " \n", " displayhook -- called to show results in an interactive session\n", " excepthook -- called to handle any uncaught exception other than SystemExit\n", " To customize printing in an interactive session or to install a custom\n", " top-level exception handler, assign other functions to replace these.\n", " \n", " stdin -- standard input file object; used by input()\n", " stdout -- standard output file object; used by print()\n", " stderr -- standard error object; used for error messages\n", " By assigning other file objects (or objects that behave like files)\n", " to these, it is possible to redirect all of the interpreter's I/O.\n", " \n", " last_type -- type of last uncaught exception\n", " last_value -- value of last uncaught exception\n", " last_traceback -- traceback of last uncaught exception\n", " These three are only available in an interactive session after a\n", " traceback has been printed.\n", " \n", " Static objects:\n", " \n", " builtin_module_names -- tuple of module names built into this interpreter\n", " copyright -- copyright notice pertaining to this interpreter\n", " exec_prefix -- prefix used to find the machine-specific Python library\n", " executable -- absolute path of the executable binary of the Python interpreter\n", " float_info -- a named tuple with information about the float implementation.\n", " float_repr_style -- string indicating the style of repr() output for floats\n", " hash_info -- a named tuple with information about the hash algorithm.\n", " hexversion -- version information encoded as a single integer\n", " implementation -- Python implementation information.\n", " int_info -- a named tuple with information about the int implementation.\n", " maxsize -- the largest supported length of containers.\n", " maxunicode -- the value of the largest Unicode code point\n", " platform -- platform identifier\n", " prefix -- prefix used to find the Python library\n", " thread_info -- a named tuple with information about the thread implementation.\n", " version -- the version of this interpreter as a string\n", " version_info -- version information as a named tuple\n", " __stdin__ -- the original stdin; don't touch!\n", " __stdout__ -- the original stdout; don't touch!\n", " __stderr__ -- the original stderr; don't touch!\n", " __displayhook__ -- the original displayhook; don't touch!\n", " __excepthook__ -- the original excepthook; don't touch!\n", " \n", " Functions:\n", " \n", " displayhook() -- print an object to the screen, and save it in builtins._\n", " excepthook() -- print an exception and its traceback to sys.stderr\n", " exc_info() -- return thread-safe information about the current exception\n", " exit() -- exit the interpreter by raising SystemExit\n", " getdlopenflags() -- returns flags to be used for dlopen() calls\n", " getprofile() -- get the global profiling function\n", " getrefcount() -- return the reference count for an object (plus one :-)\n", " getrecursionlimit() -- return the max recursion depth for the interpreter\n", " getsizeof() -- return the size of an object in bytes\n", " gettrace() -- get the global debug tracing function\n", " setdlopenflags() -- set the flags to be used for dlopen() calls\n", " setprofile() -- set the global profiling function\n", " setrecursionlimit() -- set the max recursion depth for the interpreter\n", " settrace() -- set the global debug tracing function\n", "\n", "FUNCTIONS\n", " __breakpointhook__ = breakpointhook(...)\n", " breakpointhook(*args, **kws)\n", " \n", " This hook function is called by built-in breakpoint().\n", " \n", " __displayhook__ = displayhook(object, /)\n", " Print an object to sys.stdout and also save it in builtins._\n", " \n", " __excepthook__ = excepthook(exctype, value, traceback, /)\n", " Handle an exception by displaying it with a traceback on sys.stderr.\n", " \n", " __unraisablehook__ = unraisablehook(unraisable, /)\n", " Handle an unraisable exception.\n", " \n", " The unraisable argument has the following attributes:\n", " \n", " * exc_type: Exception type.\n", " * exc_value: Exception value, can be None.\n", " * exc_traceback: Exception traceback, can be None.\n", " * err_msg: Error message, can be None.\n", " * object: Object causing the exception, can be None.\n", " \n", " addaudithook(hook)\n", " Adds a new audit hook callback.\n", " \n", " audit(...)\n", " audit(event, *args)\n", " \n", " Passes the event to any audit hooks that are attached.\n", " \n", " call_tracing(func, args, /)\n", " Call func(*args), while tracing is enabled.\n", " \n", " The tracing state is saved, and restored afterwards. This is intended\n", " to be called from a debugger from a checkpoint, to recursively debug\n", " some other code.\n", " \n", " exc_info()\n", " Return current exception information: (type, value, traceback).\n", " \n", " Return information about the most recent exception caught by an except\n", " clause in the current stack frame or in an older stack frame.\n", " \n", " exit(status=None, /)\n", " Exit the interpreter by raising SystemExit(status).\n", " \n", " If the status is omitted or None, it defaults to zero (i.e., success).\n", " If the status is an integer, it will be used as the system exit status.\n", " If it is another kind of object, it will be printed and the system\n", " exit status will be one (i.e., failure).\n", " \n", " get_asyncgen_hooks()\n", " Return the installed asynchronous generators hooks.\n", " \n", " This returns a namedtuple of the form (firstiter, finalizer).\n", " \n", " get_coroutine_origin_tracking_depth()\n", " Check status of origin tracking for coroutine objects in this thread.\n", " \n", " getallocatedblocks()\n", " Return the number of memory blocks currently allocated.\n", " \n", " getdefaultencoding()\n", " Return the current default encoding used by the Unicode implementation.\n", " \n", " getdlopenflags()\n", " Return the current value of the flags that are used for dlopen calls.\n", " \n", " The flag constants are defined in the os module.\n", " \n", " getfilesystemencodeerrors()\n", " Return the error mode used Unicode to OS filename conversion.\n", " \n", " getfilesystemencoding()\n", " Return the encoding used to convert Unicode filenames to OS filenames.\n", " \n", " getprofile()\n", " Return the profiling function set with sys.setprofile.\n", " \n", " See the profiler chapter in the library manual.\n", " \n", " getrecursionlimit()\n", " Return the current value of the recursion limit.\n", " \n", " The recursion limit is the maximum depth of the Python interpreter\n", " stack. This limit prevents infinite recursion from causing an overflow\n", " of the C stack and crashing Python.\n", " \n", " getrefcount(object, /)\n", " Return the reference count of object.\n", " \n", " The count returned is generally one higher than you might expect,\n", " because it includes the (temporary) reference as an argument to\n", " getrefcount().\n", " \n", " getsizeof(...)\n", " getsizeof(object [, default]) -> int\n", " \n", " Return the size of object in bytes.\n", " \n", " getswitchinterval()\n", " Return the current thread switch interval; see sys.setswitchinterval().\n", " \n", " gettrace()\n", " Return the global debug tracing function set with sys.settrace.\n", " \n", " See the debugger chapter in the library manual.\n", " \n", " intern(string, /)\n", " ``Intern'' the given string.\n", " \n", " This enters the string in the (global) table of interned strings whose\n", " purpose is to speed up dictionary lookups. Return the string itself or\n", " the previously interned string object with the same value.\n", " \n", " is_finalizing()\n", " Return True if Python is exiting.\n", " \n", " set_asyncgen_hooks(...)\n", " set_asyncgen_hooks(* [, firstiter] [, finalizer])\n", " \n", " Set a finalizer for async generators objects.\n", " \n", " set_coroutine_origin_tracking_depth(depth)\n", " Enable or disable origin tracking for coroutine objects in this thread.\n", " \n", " Coroutine objects will track 'depth' frames of traceback information\n", " about where they came from, available in their cr_origin attribute.\n", " \n", " Set a depth of 0 to disable.\n", " \n", " setdlopenflags(flags, /)\n", " Set the flags used by the interpreter for dlopen calls.\n", " \n", " This is used, for example, when the interpreter loads extension\n", " modules. Among other things, this will enable a lazy resolving of\n", " symbols when importing a module, if called as sys.setdlopenflags(0).\n", " To share symbols across extension modules, call as\n", " sys.setdlopenflags(os.RTLD_GLOBAL). Symbolic names for the flag\n", " modules can be found in the os module (RTLD_xxx constants, e.g.\n", " os.RTLD_LAZY).\n", " \n", " setprofile(...)\n", " setprofile(function)\n", " \n", " Set the profiling function. It will be called on each function call\n", " and return. See the profiler chapter in the library manual.\n", " \n", " setrecursionlimit(limit, /)\n", " Set the maximum depth of the Python interpreter stack to n.\n", " \n", " This limit prevents infinite recursion from causing an overflow of the C\n", " stack and crashing Python. The highest possible limit is platform-\n", " dependent.\n", " \n", " setswitchinterval(interval, /)\n", " Set the ideal thread switching delay inside the Python interpreter.\n", " \n", " The actual frequency of switching threads can be lower if the\n", " interpreter executes long sequences of uninterruptible code\n", " (this is implementation-specific and workload-dependent).\n", " \n", " The parameter must represent the desired switching delay in seconds\n", " A typical value is 0.005 (5 milliseconds).\n", " \n", " settrace(...)\n", " settrace(function)\n", " \n", " Set the global debug tracing function. It will be called on each\n", " function call. See the debugger chapter in the library manual.\n", " \n", " unraisablehook(unraisable, /)\n", " Handle an unraisable exception.\n", " \n", " The unraisable argument has the following attributes:\n", " \n", " * exc_type: Exception type.\n", " * exc_value: Exception value, can be None.\n", " * exc_traceback: Exception traceback, can be None.\n", " * err_msg: Error message, can be None.\n", " * object: Object causing the exception, can be None.\n", "\n", "DATA\n", " __stderr__ = <_io.TextIOWrapper name='' mode='w' encoding='utf...\n", " __stdin__ = <_io.TextIOWrapper name='' mode='r' encoding='utf-8...\n", " __stdout__ = <_io.TextIOWrapper name='' mode='w' encoding='utf...\n", " abiflags = ''\n", " api_version = 1013\n", " argv = ['/home/jfasch/venv/jfasch-home/lib64/python3.9/site-packages/i...\n", " base_exec_prefix = '/usr'\n", " base_prefix = '/usr'\n", " builtin_module_names = ('_abc', '_ast', '_codecs', '_collections', '_f...\n", " byteorder = 'little'\n", " copyright = 'Copyright (c) 2001-2021 Python Software Foundati...ematis...\n", " displayhook = \n", " dont_write_bytecode = False\n", " exec_prefix = '/home/jfasch/venv/jfasch-home'\n", " executable = '/home/jfasch/venv/jfasch-home/bin/python'\n", " flags = sys.flags(debug=0, inspect=0, interactive=0, opt...ation=1, is...\n", " float_info = sys.float_info(max=1.7976931348623157e+308, max_...epsilo...\n", " float_repr_style = 'short'\n", " hash_info = sys.hash_info(width=64, modulus=2305843009213693...iphash2...\n", " hexversion = 50923504\n", " implementation = namespace(name='cpython', cache_tag='cpython-39'...xv...\n", " int_info = sys.int_info(bits_per_digit=30, sizeof_digit=4)\n", " maxsize = 9223372036854775807\n", " maxunicode = 1114111\n", " meta_path = [, , \n", " stdin = <_io.TextIOWrapper name='' mode='r' encoding='utf-8'>\n", " stdout = \n", " thread_info = sys.thread_info(name='pthread', lock='semaphore', versio...\n", " version = '3.9.7 (default, Aug 30 2021, 00:00:00) \\n[GCC 11.2.1 202107...\n", " version_info = sys.version_info(major=3, minor=9, micro=7, releaseleve...\n", " warnoptions = []\n", "\n", "FILE\n", " (built-in)\n", "\n", "\n" ] } ], "source": [ "import sys\n", "help(sys)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## References" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A variable refers to an object (an integer, with value 42 in this case)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "140106795875920" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = 42\n", "id(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Assigning variables to other variables only increments the reference count." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "140106795875920" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b = a\n", "id(b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Integer increment? Are integers mutable?**" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "c = 666\n", "d = c" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "140106669190640" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "id(c)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "140106669190640" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "id(d)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "c += 3" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "669" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "666" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ah: '+=' creates a new object" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "140106669191024" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "id(c)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compound Datatypes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### List, Tuple" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "l = ['one', 2, 3.0]" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "list" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(l)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "one\n", "2\n", "3.0\n" ] } ], "source": [ "for element in l:\n", " print(element)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "l.append(complex(4,0))" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['one', 2, 3.0, (4+0j)]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['one', 2, 3.0, (4+0j), 5, 6, 7]" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l.extend([5, 6, 7])\n", "l" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[None, 'one', 2, 3.0, (4+0j), 5, 6, 7]" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l.insert(0, None)\n", "l" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "None\n", "one\n", "2\n", "3.0\n", "(4+0j)\n", "5\n", "6\n", "7\n" ] } ], "source": [ "for element in l:\n", " print(element)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "del l[3]" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[None, 'one', 2, (4+0j), 5, 6, 7]" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [], "source": [ "copied_l = l" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[None, 'one', 2, (4+0j), 5, 6, 7]" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "copied_l" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[None, 'one', 2, (4+0j), 5, 6, 7]" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "140106669249856" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "id(l)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[None, 'one', 2, (4+0j), 5, 6, 7, 10000000]" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l.append(10000000)\n", "l" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "140106669249856" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "id(l)" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "140106669249856" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "id(copied_l)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[None, 'one', 2, (4+0j), 5, 6, 7, 10000000]" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "copied_l" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Enter Tuples ..." ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "t = ('one', 2, 3.0)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('one', 2, 3.0)" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tuple" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(t)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [], "source": [ "copied_t = t" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 'tuple' object has no attribute 'append'\n" ] } ], "source": [ "try:\n", " t.append(10000000)\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "int" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tuple_containing_one_element = (1)\n", "type(tuple_containing_one_element)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 + 2 * 3" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(1 + 2) * 3" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tuple" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tuple_containing_one_element = (1,)\n", "type(tuple_containing_one_element)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Sequence: '+' operator**" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4, 5, 6]" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l1 = [1,2,3]\n", "l2 = [4,5,6]\n", "l1 + l2" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3]" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l1" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[4, 5, 6]" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dictionary" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [], "source": [ "trans = {\n", " 'one': 1,\n", " 'two': 2,\n", "}" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(trans)" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [], "source": [ "trans['three'] = 3" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'one': 1, 'two': 2, 'three': 3}" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trans" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [], "source": [ "import pprint" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'one': 1,\n", " 'three': 3,\n", " 'two': 2}\n" ] } ], "source": [ "pprint.pprint(trans, width=10)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trans['three']" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 'four'\n" ] } ], "source": [ "try:\n", " trans['four']\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3\n" ] } ], "source": [ "value = trans.get('three')\n", "if value:\n", " print(value)\n", "else:\n", " print('na, leider nicht')" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "na, leider nicht\n" ] } ], "source": [ "value = trans.get('four')\n", "if value:\n", " print(value)\n", "else:\n", " print('na, leider nicht')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "None? NoneType?" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "print(value)" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "NoneType" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(value)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Boolean value of None?" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bool(None)" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bool(5)" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bool(0)" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'one': 1,\n", " 'three': 3,\n", " 'two': 2,\n", " 'zero': 0}\n" ] } ], "source": [ "trans['zero'] = 0\n", "pprint.pprint(trans, width=10)" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "na, leider nicht\n" ] } ], "source": [ "value = trans.get('zero')\n", "if value: # \"found\"\n", " print(value)\n", "else:\n", " print('na, leider nicht')" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n" ] } ], "source": [ "value = trans.get('zero')\n", "if value is not None:\n", " print(value)\n", "else:\n", " print('na, leider nicht')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Remove entries" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [], "source": [ "del trans['zero']" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'one': 1, 'two': 2, 'three': 3}" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trans" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Set" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "set" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = {1,2,3,4,5}\n", "type(s)" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "4 in s" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [], "source": [ "s.remove(4)" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "4 in s" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [], "source": [ "s.add(4)" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{1, 2, 3, 4, 5}" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Iteration" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### List" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n", "4\n", "5\n", "6\n", "7\n", "8\n", "9\n", "0\n" ] } ], "source": [ "l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]\n", "for element in l:\n", " print(element)" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "9 in l" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Tuple" ] }, { "cell_type": "code", "execution_count": 88, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n", "4\n", "5\n", "6\n", "7\n", "8\n", "9\n", "0\n" ] } ], "source": [ "t = (1, 2, 3, 4, 5, 6, 7, 8, 9, 0)\n", "for element in t:\n", " print(element)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Set" ] }, { "cell_type": "code", "execution_count": 89, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n", "5\n", "6\n", "7\n", "8\n", "9\n" ] } ], "source": [ "s = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}\n", "for element in s:\n", " print(element)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Note**: sets are not ordered!" ] }, { "cell_type": "code", "execution_count": 90, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "9 in s" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Dictionary" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [], "source": [ "d = {\n", " 'one': 1,\n", " 'two': 2,\n", " 'three': 3,\n", " }" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "one\n", "two\n", "three\n" ] } ], "source": [ "for element in d:\n", " print(element)" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'one' in d" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n" ] } ], "source": [ "for element in d.values():\n", " print(element)" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "one\n", "two\n", "three\n" ] } ], "source": [ "for element in d.keys():\n", " print(element)" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('one', 1)\n", "('two', 2)\n", "('three', 3)\n" ] } ], "source": [ "for element in d.items():\n", " print(element)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Potschert: manual tuple unpacking**" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Key: one, Value: 1\n", "Key: two, Value: 2\n", "Key: three, Value: 3\n" ] } ], "source": [ "for element in d.items():\n", " key = element[0]\n", " value = element[1]\n", " print(f'Key: {key}, Value: {value}')" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Key: one, Value: 1\n", "Key: two, Value: 2\n", "Key: three, Value: 3\n" ] } ], "source": [ "for key, value in d.items():\n", " print(f'Key: {key}, Value: {value}')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tuple Unpacking: What Else" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [], "source": [ "l = [\n", " [1234, 'joerg', 55],\n", " [666, 'satan', 10**10],\n", " [42, 'queen', 10*2],\n", "]" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SVNr:1234, Name:joerg, Age:55\n", "SVNr:666, Name:satan, Age:10000000000\n", "SVNr:42, Name:queen, Age:20\n" ] } ], "source": [ "for svnr, name, age in l:\n", " print(f'SVNr:{svnr}, Name:{name}, Age:{age}')" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [], "source": [ "a, b = 1, 2" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Same as:" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [], "source": [ "(a, b) = (1, 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Swap two variables:" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [], "source": [ "a, b = b, a" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 106, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b" ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [], "source": [ "a, b, = 1, 2, " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Swap, traditional" ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [], "source": [ "c = a\n", "a = b\n", "b = c" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Function returns multiple values" ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [], "source": [ "def f(a, b):\n", " return a+b" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(1,2)" ] }, { "cell_type": "code", "execution_count": 114, "metadata": {}, "outputs": [], "source": [ "def f(a, b):\n", " return a+b, a-b, a*b, a/b" ] }, { "cell_type": "code", "execution_count": 115, "metadata": {}, "outputs": [], "source": [ "sum, diff, prod, quot = f(100, 50)" ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "150" ] }, "execution_count": 116, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum" ] }, { "cell_type": "code", "execution_count": 117, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "50" ] }, "execution_count": 117, "metadata": {}, "output_type": "execute_result" } ], "source": [ "diff" ] }, { "cell_type": "code", "execution_count": 118, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5000" ] }, "execution_count": 118, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prod" ] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.0" ] }, "execution_count": 119, "metadata": {}, "output_type": "execute_result" } ], "source": [ "quot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Comprehensions" ] }, { "cell_type": "code", "execution_count": 120, "metadata": {}, "outputs": [], "source": [ "numbers = (1, 2, 3, 4, 5, 6, 7, 8, 9)" ] }, { "cell_type": "code", "execution_count": 121, "metadata": {}, "outputs": [], "source": [ "def squares(iterable):\n", " sq = []\n", " for i in iterable:\n", " sq.append(i**2)\n", " return sq" ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 4, 9, 16, 25, 36, 49, 64, 81]" ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result = squares(numbers)\n", "result" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**List comprehension**" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 4, 9, 16, 25, 36, 49, 64, 81]" ] }, "execution_count": 123, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result = [n**2 for n in numbers]\n", "result" ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[4, 16, 36, 64]" ] }, "execution_count": 124, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[n**2 for n in numbers if n%2==0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Set comprehension**" ] }, { "cell_type": "code", "execution_count": 125, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{1, 4, 9, 16, 25, 36, 49, 64, 81}" ] }, "execution_count": 125, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result = {n**2 for n in numbers}\n", "result" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Dictionary comprehension**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Mapping Number->Square number" ] }, { "cell_type": "code", "execution_count": 126, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{1: 1,\n", " 2: 4,\n", " 3: 9,\n", " 4: 16,\n", " 5: 25,\n", " 6: 36,\n", " 7: 49,\n", " 8: 64,\n", " 9: 81}\n" ] } ], "source": [ "result = {n: n**2 for n in numbers}\n", "pprint.pprint(result, width=5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "WTF? How would I use that?" ] }, { "cell_type": "code", "execution_count": 127, "metadata": {}, "outputs": [], "source": [ "resultset = [\n", " [1234, 'joerg', 55],\n", " [666, 'satan', 10**10],\n", " [42, 'queen', 10*2],\n", "]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dictionary: SVNr -> (Name, Age) " ] }, { "cell_type": "code", "execution_count": 128, "metadata": {}, "outputs": [], "source": [ "def resultset_to_local_db(rs):\n", " d = {}\n", " for svnr, name, age in rs:\n", " d[svnr] = (name, age)\n", " return d" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [], "source": [ "my_local_db = resultset_to_local_db(resultset)" ] }, { "cell_type": "code", "execution_count": 130, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{1234: ('joerg', 55), 666: ('satan', 10000000000), 42: ('queen', 20)}" ] }, "execution_count": 130, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_local_db" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Potschert!!" ] }, { "cell_type": "code", "execution_count": 131, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{1234: ('joerg', 55), 666: ('satan', 10000000000), 42: ('queen', 20)}" ] }, "execution_count": 131, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_local_db = {svnr: (name, age) for svnr, name, age in resultset}\n", "my_local_db" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ``os.path``" ] }, { "cell_type": "code", "execution_count": 132, "metadata": {}, "outputs": [], "source": [ "import os.path" ] }, { "cell_type": "code", "execution_count": 133, "metadata": {}, "outputs": [], "source": [ "filename = '/home/jfasch/tmp/2021-12-01/tests/__init__.py'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Directory Name?" ] }, { "cell_type": "code", "execution_count": 134, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'/home/jfasch/tmp/2021-12-01/tests'" ] }, "execution_count": 134, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dirname = os.path.dirname(filename)\n", "dirname" ] }, { "cell_type": "code", "execution_count": 135, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'__init__.py'" ] }, "execution_count": 135, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.path.basename(filename)" ] }, { "cell_type": "code", "execution_count": 136, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'/home/jfasch/tmp/2021-12-01/tests/../src'" ] }, "execution_count": 136, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path = os.path.join(dirname, '../src')\n", "path" ] }, { "cell_type": "code", "execution_count": 137, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'/home/jfasch/tmp/2021-12-01/src'" ] }, "execution_count": 137, "metadata": {}, "output_type": "execute_result" } ], "source": [ "normalized_path = os.path.normpath(path)\n", "normalized_path" ] }, { "cell_type": "code", "execution_count": 138, "metadata": {}, "outputs": [], "source": [ "import os" ] }, { "cell_type": "code", "execution_count": 139, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'/'" ] }, "execution_count": 139, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.sep # Doze: '\\\\' (r'\\'))" ] }, { "cell_type": "code", "execution_count": 140, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'../src'" ] }, "execution_count": 140, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.path.join('..', 'src')" ] }, { "cell_type": "code", "execution_count": 141, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('/home/jfasch/tmp/2021-12-01', 'src')" ] }, "execution_count": 141, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.path.split(normalized_path)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Iterable" ] }, { "cell_type": "code", "execution_count": 142, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a\n", "b\n", "c\n" ] } ], "source": [ "s = 'abc'\n", "for element in s:\n", " print(element)" ] }, { "cell_type": "code", "execution_count": 143, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n" ] } ], "source": [ "l = [0, 1, 2, 3, 4]\n", "for element in l:\n", " print(element)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**``range()``**" ] }, { "cell_type": "code", "execution_count": 144, "metadata": {}, "outputs": [], "source": [ "l = []\n", "i = 0\n", "while i < 1000:\n", " l.append(i)\n", " i += 1" ] }, { "cell_type": "code", "execution_count": 145, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0,\n", " 1,\n", " 2,\n", " 3,\n", " 4,\n", " 5,\n", " 6,\n", " 7,\n", " 8,\n", " 9,\n", " 10,\n", " 11,\n", " 12,\n", " 13,\n", " 14,\n", " 15,\n", " 16,\n", " 17,\n", " 18,\n", " 19,\n", " 20,\n", " 21,\n", " 22,\n", " 23,\n", " 24,\n", " 25,\n", " 26,\n", " 27,\n", " 28,\n", " 29,\n", " 30,\n", " 31,\n", " 32,\n", " 33,\n", " 34,\n", " 35,\n", " 36,\n", " 37,\n", " 38,\n", " 39,\n", " 40,\n", " 41,\n", " 42,\n", " 43,\n", " 44,\n", " 45,\n", " 46,\n", " 47,\n", " 48,\n", " 49,\n", " 50,\n", " 51,\n", " 52,\n", " 53,\n", " 54,\n", " 55,\n", " 56,\n", " 57,\n", " 58,\n", " 59,\n", " 60,\n", " 61,\n", " 62,\n", " 63,\n", " 64,\n", " 65,\n", " 66,\n", " 67,\n", " 68,\n", " 69,\n", " 70,\n", " 71,\n", " 72,\n", " 73,\n", " 74,\n", " 75,\n", " 76,\n", " 77,\n", " 78,\n", " 79,\n", " 80,\n", " 81,\n", " 82,\n", " 83,\n", " 84,\n", " 85,\n", " 86,\n", " 87,\n", " 88,\n", " 89,\n", " 90,\n", " 91,\n", " 92,\n", " 93,\n", " 94,\n", " 95,\n", " 96,\n", " 97,\n", " 98,\n", " 99,\n", " 100,\n", " 101,\n", " 102,\n", " 103,\n", " 104,\n", " 105,\n", " 106,\n", " 107,\n", " 108,\n", " 109,\n", " 110,\n", " 111,\n", " 112,\n", " 113,\n", " 114,\n", " 115,\n", " 116,\n", " 117,\n", " 118,\n", " 119,\n", " 120,\n", " 121,\n", " 122,\n", " 123,\n", " 124,\n", " 125,\n", " 126,\n", " 127,\n", " 128,\n", " 129,\n", " 130,\n", " 131,\n", " 132,\n", " 133,\n", " 134,\n", " 135,\n", " 136,\n", " 137,\n", " 138,\n", " 139,\n", " 140,\n", " 141,\n", " 142,\n", " 143,\n", " 144,\n", " 145,\n", " 146,\n", " 147,\n", " 148,\n", " 149,\n", " 150,\n", " 151,\n", " 152,\n", " 153,\n", " 154,\n", " 155,\n", " 156,\n", " 157,\n", " 158,\n", " 159,\n", " 160,\n", " 161,\n", " 162,\n", " 163,\n", " 164,\n", " 165,\n", " 166,\n", " 167,\n", " 168,\n", " 169,\n", " 170,\n", " 171,\n", " 172,\n", " 173,\n", " 174,\n", " 175,\n", " 176,\n", " 177,\n", " 178,\n", " 179,\n", " 180,\n", " 181,\n", " 182,\n", " 183,\n", " 184,\n", " 185,\n", " 186,\n", " 187,\n", " 188,\n", " 189,\n", " 190,\n", " 191,\n", " 192,\n", " 193,\n", " 194,\n", " 195,\n", " 196,\n", " 197,\n", " 198,\n", " 199,\n", " 200,\n", " 201,\n", " 202,\n", " 203,\n", " 204,\n", " 205,\n", " 206,\n", " 207,\n", " 208,\n", " 209,\n", " 210,\n", " 211,\n", " 212,\n", " 213,\n", " 214,\n", " 215,\n", " 216,\n", " 217,\n", " 218,\n", " 219,\n", " 220,\n", " 221,\n", " 222,\n", " 223,\n", " 224,\n", " 225,\n", " 226,\n", " 227,\n", " 228,\n", " 229,\n", " 230,\n", " 231,\n", " 232,\n", " 233,\n", " 234,\n", " 235,\n", " 236,\n", " 237,\n", " 238,\n", " 239,\n", " 240,\n", " 241,\n", " 242,\n", " 243,\n", " 244,\n", " 245,\n", " 246,\n", " 247,\n", " 248,\n", " 249,\n", " 250,\n", " 251,\n", " 252,\n", " 253,\n", " 254,\n", " 255,\n", " 256,\n", " 257,\n", " 258,\n", " 259,\n", " 260,\n", " 261,\n", " 262,\n", " 263,\n", " 264,\n", " 265,\n", " 266,\n", " 267,\n", " 268,\n", " 269,\n", " 270,\n", " 271,\n", " 272,\n", " 273,\n", " 274,\n", " 275,\n", " 276,\n", " 277,\n", " 278,\n", " 279,\n", " 280,\n", " 281,\n", " 282,\n", " 283,\n", " 284,\n", " 285,\n", " 286,\n", " 287,\n", " 288,\n", " 289,\n", " 290,\n", " 291,\n", " 292,\n", " 293,\n", " 294,\n", " 295,\n", " 296,\n", " 297,\n", " 298,\n", " 299,\n", " 300,\n", " 301,\n", " 302,\n", " 303,\n", " 304,\n", " 305,\n", " 306,\n", " 307,\n", " 308,\n", " 309,\n", " 310,\n", " 311,\n", " 312,\n", " 313,\n", " 314,\n", " 315,\n", " 316,\n", " 317,\n", " 318,\n", " 319,\n", " 320,\n", " 321,\n", " 322,\n", " 323,\n", " 324,\n", " 325,\n", " 326,\n", " 327,\n", " 328,\n", " 329,\n", " 330,\n", " 331,\n", " 332,\n", " 333,\n", " 334,\n", " 335,\n", " 336,\n", " 337,\n", " 338,\n", " 339,\n", " 340,\n", " 341,\n", " 342,\n", " 343,\n", " 344,\n", " 345,\n", " 346,\n", " 347,\n", " 348,\n", " 349,\n", " 350,\n", " 351,\n", " 352,\n", " 353,\n", " 354,\n", " 355,\n", " 356,\n", " 357,\n", " 358,\n", " 359,\n", " 360,\n", " 361,\n", " 362,\n", " 363,\n", " 364,\n", " 365,\n", " 366,\n", " 367,\n", " 368,\n", " 369,\n", " 370,\n", " 371,\n", " 372,\n", " 373,\n", " 374,\n", " 375,\n", " 376,\n", " 377,\n", " 378,\n", " 379,\n", " 380,\n", " 381,\n", " 382,\n", " 383,\n", " 384,\n", " 385,\n", " 386,\n", " 387,\n", " 388,\n", " 389,\n", " 390,\n", " 391,\n", " 392,\n", " 393,\n", " 394,\n", " 395,\n", " 396,\n", " 397,\n", " 398,\n", " 399,\n", " 400,\n", " 401,\n", " 402,\n", " 403,\n", " 404,\n", " 405,\n", " 406,\n", " 407,\n", " 408,\n", " 409,\n", " 410,\n", " 411,\n", " 412,\n", " 413,\n", " 414,\n", " 415,\n", " 416,\n", " 417,\n", " 418,\n", " 419,\n", " 420,\n", " 421,\n", " 422,\n", " 423,\n", " 424,\n", " 425,\n", " 426,\n", " 427,\n", " 428,\n", " 429,\n", " 430,\n", " 431,\n", " 432,\n", " 433,\n", " 434,\n", " 435,\n", " 436,\n", " 437,\n", " 438,\n", " 439,\n", " 440,\n", " 441,\n", " 442,\n", " 443,\n", " 444,\n", " 445,\n", " 446,\n", " 447,\n", " 448,\n", " 449,\n", " 450,\n", " 451,\n", " 452,\n", " 453,\n", " 454,\n", " 455,\n", " 456,\n", " 457,\n", " 458,\n", " 459,\n", " 460,\n", " 461,\n", " 462,\n", " 463,\n", " 464,\n", " 465,\n", " 466,\n", " 467,\n", " 468,\n", " 469,\n", " 470,\n", " 471,\n", " 472,\n", " 473,\n", " 474,\n", " 475,\n", " 476,\n", " 477,\n", " 478,\n", " 479,\n", " 480,\n", " 481,\n", " 482,\n", " 483,\n", " 484,\n", " 485,\n", " 486,\n", " 487,\n", " 488,\n", " 489,\n", " 490,\n", " 491,\n", " 492,\n", " 493,\n", " 494,\n", " 495,\n", " 496,\n", " 497,\n", " 498,\n", " 499,\n", " 500,\n", " 501,\n", " 502,\n", " 503,\n", " 504,\n", " 505,\n", " 506,\n", " 507,\n", " 508,\n", " 509,\n", " 510,\n", " 511,\n", " 512,\n", " 513,\n", " 514,\n", " 515,\n", " 516,\n", " 517,\n", " 518,\n", " 519,\n", " 520,\n", " 521,\n", " 522,\n", " 523,\n", " 524,\n", " 525,\n", " 526,\n", " 527,\n", " 528,\n", " 529,\n", " 530,\n", " 531,\n", " 532,\n", " 533,\n", " 534,\n", " 535,\n", " 536,\n", " 537,\n", " 538,\n", " 539,\n", " 540,\n", " 541,\n", " 542,\n", " 543,\n", " 544,\n", " 545,\n", " 546,\n", " 547,\n", " 548,\n", " 549,\n", " 550,\n", " 551,\n", " 552,\n", " 553,\n", " 554,\n", " 555,\n", " 556,\n", " 557,\n", " 558,\n", " 559,\n", " 560,\n", " 561,\n", " 562,\n", " 563,\n", " 564,\n", " 565,\n", " 566,\n", " 567,\n", " 568,\n", " 569,\n", " 570,\n", " 571,\n", " 572,\n", " 573,\n", " 574,\n", " 575,\n", " 576,\n", " 577,\n", " 578,\n", " 579,\n", " 580,\n", " 581,\n", " 582,\n", " 583,\n", " 584,\n", " 585,\n", " 586,\n", " 587,\n", " 588,\n", " 589,\n", " 590,\n", " 591,\n", " 592,\n", " 593,\n", " 594,\n", " 595,\n", " 596,\n", " 597,\n", " 598,\n", " 599,\n", " 600,\n", " 601,\n", " 602,\n", " 603,\n", " 604,\n", " 605,\n", " 606,\n", " 607,\n", " 608,\n", " 609,\n", " 610,\n", " 611,\n", " 612,\n", " 613,\n", " 614,\n", " 615,\n", " 616,\n", " 617,\n", " 618,\n", " 619,\n", " 620,\n", " 621,\n", " 622,\n", " 623,\n", " 624,\n", " 625,\n", " 626,\n", " 627,\n", " 628,\n", " 629,\n", " 630,\n", " 631,\n", " 632,\n", " 633,\n", " 634,\n", " 635,\n", " 636,\n", " 637,\n", " 638,\n", " 639,\n", " 640,\n", " 641,\n", " 642,\n", " 643,\n", " 644,\n", " 645,\n", " 646,\n", " 647,\n", " 648,\n", " 649,\n", " 650,\n", " 651,\n", " 652,\n", " 653,\n", " 654,\n", " 655,\n", " 656,\n", " 657,\n", " 658,\n", " 659,\n", " 660,\n", " 661,\n", " 662,\n", " 663,\n", " 664,\n", " 665,\n", " 666,\n", " 667,\n", " 668,\n", " 669,\n", " 670,\n", " 671,\n", " 672,\n", " 673,\n", " 674,\n", " 675,\n", " 676,\n", " 677,\n", " 678,\n", " 679,\n", " 680,\n", " 681,\n", " 682,\n", " 683,\n", " 684,\n", " 685,\n", " 686,\n", " 687,\n", " 688,\n", " 689,\n", " 690,\n", " 691,\n", " 692,\n", " 693,\n", " 694,\n", " 695,\n", " 696,\n", " 697,\n", " 698,\n", " 699,\n", " 700,\n", " 701,\n", " 702,\n", " 703,\n", " 704,\n", " 705,\n", " 706,\n", " 707,\n", " 708,\n", " 709,\n", " 710,\n", " 711,\n", " 712,\n", " 713,\n", " 714,\n", " 715,\n", " 716,\n", " 717,\n", " 718,\n", " 719,\n", " 720,\n", " 721,\n", " 722,\n", " 723,\n", " 724,\n", " 725,\n", " 726,\n", " 727,\n", " 728,\n", " 729,\n", " 730,\n", " 731,\n", " 732,\n", " 733,\n", " 734,\n", " 735,\n", " 736,\n", " 737,\n", " 738,\n", " 739,\n", " 740,\n", " 741,\n", " 742,\n", " 743,\n", " 744,\n", " 745,\n", " 746,\n", " 747,\n", " 748,\n", " 749,\n", " 750,\n", " 751,\n", " 752,\n", " 753,\n", " 754,\n", " 755,\n", " 756,\n", " 757,\n", " 758,\n", " 759,\n", " 760,\n", " 761,\n", " 762,\n", " 763,\n", " 764,\n", " 765,\n", " 766,\n", " 767,\n", " 768,\n", " 769,\n", " 770,\n", " 771,\n", " 772,\n", " 773,\n", " 774,\n", " 775,\n", " 776,\n", " 777,\n", " 778,\n", " 779,\n", " 780,\n", " 781,\n", " 782,\n", " 783,\n", " 784,\n", " 785,\n", " 786,\n", " 787,\n", " 788,\n", " 789,\n", " 790,\n", " 791,\n", " 792,\n", " 793,\n", " 794,\n", " 795,\n", " 796,\n", " 797,\n", " 798,\n", " 799,\n", " 800,\n", " 801,\n", " 802,\n", " 803,\n", " 804,\n", " 805,\n", " 806,\n", " 807,\n", " 808,\n", " 809,\n", " 810,\n", " 811,\n", " 812,\n", " 813,\n", " 814,\n", " 815,\n", " 816,\n", " 817,\n", " 818,\n", " 819,\n", " 820,\n", " 821,\n", " 822,\n", " 823,\n", " 824,\n", " 825,\n", " 826,\n", " 827,\n", " 828,\n", " 829,\n", " 830,\n", " 831,\n", " 832,\n", " 833,\n", " 834,\n", " 835,\n", " 836,\n", " 837,\n", " 838,\n", " 839,\n", " 840,\n", " 841,\n", " 842,\n", " 843,\n", " 844,\n", " 845,\n", " 846,\n", " 847,\n", " 848,\n", " 849,\n", " 850,\n", " 851,\n", " 852,\n", " 853,\n", " 854,\n", " 855,\n", " 856,\n", " 857,\n", " 858,\n", " 859,\n", " 860,\n", " 861,\n", " 862,\n", " 863,\n", " 864,\n", " 865,\n", " 866,\n", " 867,\n", " 868,\n", " 869,\n", " 870,\n", " 871,\n", " 872,\n", " 873,\n", " 874,\n", " 875,\n", " 876,\n", " 877,\n", " 878,\n", " 879,\n", " 880,\n", " 881,\n", " 882,\n", " 883,\n", " 884,\n", " 885,\n", " 886,\n", " 887,\n", " 888,\n", " 889,\n", " 890,\n", " 891,\n", " 892,\n", " 893,\n", " 894,\n", " 895,\n", " 896,\n", " 897,\n", " 898,\n", " 899,\n", " 900,\n", " 901,\n", " 902,\n", " 903,\n", " 904,\n", " 905,\n", " 906,\n", " 907,\n", " 908,\n", " 909,\n", " 910,\n", " 911,\n", " 912,\n", " 913,\n", " 914,\n", " 915,\n", " 916,\n", " 917,\n", " 918,\n", " 919,\n", " 920,\n", " 921,\n", " 922,\n", " 923,\n", " 924,\n", " 925,\n", " 926,\n", " 927,\n", " 928,\n", " 929,\n", " 930,\n", " 931,\n", " 932,\n", " 933,\n", " 934,\n", " 935,\n", " 936,\n", " 937,\n", " 938,\n", " 939,\n", " 940,\n", " 941,\n", " 942,\n", " 943,\n", " 944,\n", " 945,\n", " 946,\n", " 947,\n", " 948,\n", " 949,\n", " 950,\n", " 951,\n", " 952,\n", " 953,\n", " 954,\n", " 955,\n", " 956,\n", " 957,\n", " 958,\n", " 959,\n", " 960,\n", " 961,\n", " 962,\n", " 963,\n", " 964,\n", " 965,\n", " 966,\n", " 967,\n", " 968,\n", " 969,\n", " 970,\n", " 971,\n", " 972,\n", " 973,\n", " 974,\n", " 975,\n", " 976,\n", " 977,\n", " 978,\n", " 979,\n", " 980,\n", " 981,\n", " 982,\n", " 983,\n", " 984,\n", " 985,\n", " 986,\n", " 987,\n", " 988,\n", " 989,\n", " 990,\n", " 991,\n", " 992,\n", " 993,\n", " 994,\n", " 995,\n", " 996,\n", " 997,\n", " 998,\n", " 999]" ] }, "execution_count": 145, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**STUPID!**" ] }, { "cell_type": "code", "execution_count": 146, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n" ] } ], "source": [ "r = range(3)\n", "for element in r:\n", " print(element)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Iterator Protocol" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**A list is iterable**" ] }, { "cell_type": "code", "execution_count": 147, "metadata": {}, "outputs": [], "source": [ "l = [3, 4, 5]\n", "iterator = iter(l)" ] }, { "cell_type": "code", "execution_count": 148, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 148, "metadata": {}, "output_type": "execute_result" } ], "source": [ "element = next(iterator)\n", "element" ] }, { "cell_type": "code", "execution_count": 149, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 149, "metadata": {}, "output_type": "execute_result" } ], "source": [ "element = next(iterator)\n", "element" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5" ] }, "execution_count": 150, "metadata": {}, "output_type": "execute_result" } ], "source": [ "element = next(iterator)\n", "element" ] }, { "cell_type": "code", "execution_count": 151, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " \n" ] } ], "source": [ "try:\n", " element = next(iterator)\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**A ``range`` object is iterable**" ] }, { "cell_type": "code", "execution_count": 152, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n" ] } ], "source": [ "r = range(3)\n", "for element in r:\n", " print(element)" ] }, { "cell_type": "code", "execution_count": 153, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3\n", "4\n", "5\n" ] } ], "source": [ "for element in range(3, 6):\n", " print(element)" ] }, { "cell_type": "code", "execution_count": 154, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n", "6\n", "8\n", "10\n", "12\n", "14\n", "16\n", "18\n" ] } ], "source": [ "for element in range(4, 20, 2):\n", " print(element)" ] }, { "cell_type": "code", "execution_count": 155, "metadata": {}, "outputs": [], "source": [ "timeaxis = range(1000)\n", "iterator = iter(timeaxis)" ] }, { "cell_type": "code", "execution_count": 156, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 156, "metadata": {}, "output_type": "execute_result" } ], "source": [ "next(iterator)" ] }, { "cell_type": "code", "execution_count": 157, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n", "4\n", "5\n", "6\n", "7\n", "8\n", "9\n", "10\n", "11\n", "12\n", "13\n", "14\n", "15\n", "16\n", "17\n", "18\n", "19\n", "20\n", "21\n", "22\n", "23\n", "24\n", "25\n", "26\n", "27\n", "28\n", "29\n", "30\n", "31\n", "32\n", "33\n", "34\n", "35\n", "36\n", "37\n", "38\n", "39\n", "40\n", "41\n", "42\n", "43\n", "44\n", "45\n", "46\n", "47\n", "48\n", "49\n", "50\n", "51\n", "52\n", "53\n", "54\n", "55\n", "56\n", "57\n", "58\n", "59\n", "60\n", "61\n", "62\n", "63\n", "64\n", "65\n", "66\n", "67\n", "68\n", "69\n", "70\n", "71\n", "72\n", "73\n", "74\n", "75\n", "76\n", "77\n", "78\n", "79\n", "80\n", "81\n", "82\n", "83\n", "84\n", "85\n", "86\n", "87\n", "88\n", "89\n", "90\n", "91\n", "92\n", "93\n", "94\n", "95\n", "96\n", "97\n", "98\n", "99\n", "100\n", "101\n", "102\n", "103\n", "104\n", "105\n", "106\n", "107\n", "108\n", "109\n", "110\n", "111\n", "112\n", "113\n", "114\n", "115\n", "116\n", "117\n", "118\n", "119\n", "120\n", "121\n", "122\n", "123\n", "124\n", "125\n", "126\n", "127\n", "128\n", "129\n", "130\n", "131\n", "132\n", "133\n", "134\n", "135\n", "136\n", "137\n", "138\n", "139\n", "140\n", "141\n", "142\n", "143\n", "144\n", "145\n", "146\n", "147\n", "148\n", "149\n", "150\n", "151\n", "152\n", "153\n", "154\n", "155\n", "156\n", "157\n", "158\n", "159\n", "160\n", "161\n", "162\n", "163\n", "164\n", "165\n", "166\n", "167\n", "168\n", "169\n", "170\n", "171\n", "172\n", "173\n", "174\n", "175\n", "176\n", "177\n", "178\n", "179\n", "180\n", "181\n", "182\n", "183\n", "184\n", "185\n", "186\n", "187\n", "188\n", "189\n", "190\n", "191\n", "192\n", "193\n", "194\n", "195\n", "196\n", "197\n", "198\n", "199\n", "200\n", "201\n", "202\n", "203\n", "204\n", "205\n", "206\n", "207\n", "208\n", "209\n", "210\n", "211\n", "212\n", "213\n", "214\n", "215\n", "216\n", "217\n", "218\n", "219\n", "220\n", "221\n", "222\n", "223\n", "224\n", "225\n", "226\n", "227\n", "228\n", "229\n", "230\n", "231\n", "232\n", "233\n", "234\n", "235\n", "236\n", "237\n", "238\n", "239\n", "240\n", "241\n", "242\n", "243\n", "244\n", "245\n", "246\n", "247\n", "248\n", "249\n", "250\n", "251\n", "252\n", "253\n", "254\n", "255\n", "256\n", "257\n", "258\n", "259\n", "260\n", "261\n", "262\n", "263\n", "264\n", "265\n", "266\n", "267\n", "268\n", "269\n", "270\n", "271\n", "272\n", "273\n", "274\n", "275\n", "276\n", "277\n", "278\n", "279\n", "280\n", "281\n", "282\n", "283\n", "284\n", "285\n", "286\n", "287\n", "288\n", "289\n", "290\n", "291\n", "292\n", "293\n", "294\n", "295\n", "296\n", "297\n", "298\n", "299\n", "300\n", "301\n", "302\n", "303\n", "304\n", "305\n", "306\n", "307\n", "308\n", "309\n", "310\n", "311\n", "312\n", "313\n", "314\n", "315\n", "316\n", "317\n", "318\n", "319\n", "320\n", "321\n", "322\n", "323\n", "324\n", "325\n", "326\n", "327\n", "328\n", "329\n", "330\n", "331\n", "332\n", "333\n", "334\n", "335\n", "336\n", "337\n", "338\n", "339\n", "340\n", "341\n", "342\n", "343\n", "344\n", "345\n", "346\n", "347\n", "348\n", "349\n", "350\n", "351\n", "352\n", "353\n", "354\n", "355\n", "356\n", "357\n", "358\n", "359\n", "360\n", "361\n", "362\n", "363\n", "364\n", "365\n", "366\n", "367\n", "368\n", "369\n", "370\n", "371\n", "372\n", "373\n", "374\n", "375\n", "376\n", "377\n", "378\n", "379\n", "380\n", "381\n", "382\n", "383\n", "384\n", "385\n", "386\n", "387\n", "388\n", "389\n", "390\n", "391\n", "392\n", "393\n", "394\n", "395\n", "396\n", "397\n", "398\n", "399\n", "400\n", "401\n", "402\n", "403\n", "404\n", "405\n", "406\n", "407\n", "408\n", "409\n", "410\n", "411\n", "412\n", "413\n", "414\n", "415\n", "416\n", "417\n", "418\n", "419\n", "420\n", "421\n", "422\n", "423\n", "424\n", "425\n", "426\n", "427\n", "428\n", "429\n", "430\n", "431\n", "432\n", "433\n", "434\n", "435\n", "436\n", "437\n", "438\n", "439\n", "440\n", "441\n", "442\n", "443\n", "444\n", "445\n", "446\n", "447\n", "448\n", "449\n", "450\n", "451\n", "452\n", "453\n", "454\n", "455\n", "456\n", "457\n", "458\n", "459\n", "460\n", "461\n", "462\n", "463\n", "464\n", "465\n", "466\n", "467\n", "468\n", "469\n", "470\n", "471\n", "472\n", "473\n", "474\n", "475\n", "476\n", "477\n", "478\n", "479\n", "480\n", "481\n", "482\n", "483\n", "484\n", "485\n", "486\n", "487\n", "488\n", "489\n", "490\n", "491\n", "492\n", "493\n", "494\n", "495\n", "496\n", "497\n", "498\n", "499\n", "500\n", "501\n", "502\n", "503\n", "504\n", "505\n", "506\n", "507\n", "508\n", "509\n", "510\n", "511\n", "512\n", "513\n", "514\n", "515\n", "516\n", "517\n", "518\n", "519\n", "520\n", "521\n", "522\n", "523\n", "524\n", "525\n", "526\n", "527\n", "528\n", "529\n", "530\n", "531\n", "532\n", "533\n", "534\n", "535\n", "536\n", "537\n", "538\n", "539\n", "540\n", "541\n", "542\n", "543\n", "544\n", "545\n", "546\n", "547\n", "548\n", "549\n", "550\n", "551\n", "552\n", "553\n", "554\n", "555\n", "556\n", "557\n", "558\n", "559\n", "560\n", "561\n", "562\n", "563\n", "564\n", "565\n", "566\n", "567\n", "568\n", "569\n", "570\n", "571\n", "572\n", "573\n", "574\n", "575\n", "576\n", "577\n", "578\n", "579\n", "580\n", "581\n", "582\n", "583\n", "584\n", "585\n", "586\n", "587\n", "588\n", "589\n", "590\n", "591\n", "592\n", "593\n", "594\n", "595\n", "596\n", "597\n", "598\n", "599\n", "600\n", "601\n", "602\n", "603\n", "604\n", "605\n", "606\n", "607\n", "608\n", "609\n", "610\n", "611\n", "612\n", "613\n", "614\n", "615\n", "616\n", "617\n", "618\n", "619\n", "620\n", "621\n", "622\n", "623\n", "624\n", "625\n", "626\n", "627\n", "628\n", "629\n", "630\n", "631\n", "632\n", "633\n", "634\n", "635\n", "636\n", "637\n", "638\n", "639\n", "640\n", "641\n", "642\n", "643\n", "644\n", "645\n", "646\n", "647\n", "648\n", "649\n", "650\n", "651\n", "652\n", "653\n", "654\n", "655\n", "656\n", "657\n", "658\n", "659\n", "660\n", "661\n", "662\n", "663\n", "664\n", "665\n", "666\n", "667\n", "668\n", "669\n", "670\n", "671\n", "672\n", "673\n", "674\n", "675\n", "676\n", "677\n", "678\n", "679\n", "680\n", "681\n", "682\n", "683\n", "684\n", "685\n", "686\n", "687\n", "688\n", "689\n", "690\n", "691\n", "692\n", "693\n", "694\n", "695\n", "696\n", "697\n", "698\n", "699\n", "700\n", "701\n", "702\n", "703\n", "704\n", "705\n", "706\n", "707\n", "708\n", "709\n", "710\n", "711\n", "712\n", "713\n", "714\n", "715\n", "716\n", "717\n", "718\n", "719\n", "720\n", "721\n", "722\n", "723\n", "724\n", "725\n", "726\n", "727\n", "728\n", "729\n", "730\n", "731\n", "732\n", "733\n", "734\n", "735\n", "736\n", "737\n", "738\n", "739\n", "740\n", "741\n", "742\n", "743\n", "744\n", "745\n", "746\n", "747\n", "748\n", "749\n", "750\n", "751\n", "752\n", "753\n", "754\n", "755\n", "756\n", "757\n", "758\n", "759\n", "760\n", "761\n", "762\n", "763\n", "764\n", "765\n", "766\n", "767\n", "768\n", "769\n", "770\n", "771\n", "772\n", "773\n", "774\n", "775\n", "776\n", "777\n", "778\n", "779\n", "780\n", "781\n", "782\n", "783\n", "784\n", "785\n", "786\n", "787\n", "788\n", "789\n", "790\n", "791\n", "792\n", "793\n", "794\n", "795\n", "796\n", "797\n", "798\n", "799\n", "800\n", "801\n", "802\n", "803\n", "804\n", "805\n", "806\n", "807\n", "808\n", "809\n", "810\n", "811\n", "812\n", "813\n", "814\n", "815\n", "816\n", "817\n", "818\n", "819\n", "820\n", "821\n", "822\n", "823\n", "824\n", "825\n", "826\n", "827\n", "828\n", "829\n", "830\n", "831\n", "832\n", "833\n", "834\n", "835\n", "836\n", "837\n", "838\n", "839\n", "840\n", "841\n", "842\n", "843\n", "844\n", "845\n", "846\n", "847\n", "848\n", "849\n", "850\n", "851\n", "852\n", "853\n", "854\n", "855\n", "856\n", "857\n", "858\n", "859\n", "860\n", "861\n", "862\n", "863\n", "864\n", "865\n", "866\n", "867\n", "868\n", "869\n", "870\n", "871\n", "872\n", "873\n", "874\n", "875\n", "876\n", "877\n", "878\n", "879\n", "880\n", "881\n", "882\n", "883\n", "884\n", "885\n", "886\n", "887\n", "888\n", "889\n", "890\n", "891\n", "892\n", "893\n", "894\n", "895\n", "896\n", "897\n", "898\n", "899\n", "900\n", "901\n", "902\n", "903\n", "904\n", "905\n", "906\n", "907\n", "908\n", "909\n", "910\n", "911\n", "912\n", "913\n", "914\n", "915\n", "916\n", "917\n", "918\n", "919\n", "920\n", "921\n", "922\n", "923\n", "924\n", "925\n", "926\n", "927\n", "928\n", "929\n", "930\n", "931\n", "932\n", "933\n", "934\n", "935\n", "936\n", "937\n", "938\n", "939\n", "940\n", "941\n", "942\n", "943\n", "944\n", "945\n", "946\n", "947\n", "948\n", "949\n", "950\n", "951\n", "952\n", "953\n", "954\n", "955\n", "956\n", "957\n", "958\n", "959\n", "960\n", "961\n", "962\n", "963\n", "964\n", "965\n", "966\n", "967\n", "968\n", "969\n", "970\n", "971\n", "972\n", "973\n", "974\n", "975\n", "976\n", "977\n", "978\n", "979\n", "980\n", "981\n", "982\n", "983\n", "984\n", "985\n", "986\n", "987\n", "988\n", "989\n", "990\n", "991\n", "992\n", "993\n", "994\n", "995\n", "996\n", "997\n", "998\n", "999\n" ] } ], "source": [ "while True:\n", " try:\n", " print(next(iterator))\n", " except StopIteration:\n", " break" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ``yield``" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A naive **function**:" ] }, { "cell_type": "code", "execution_count": 158, "metadata": {}, "outputs": [], "source": [ "def myrange(begin, end, step):\n", " l = []\n", " element = begin\n", " while element < end:\n", " l.append(element)\n", " element += step\n", " return l" ] }, { "cell_type": "code", "execution_count": 159, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n", "6\n", "8\n", "10\n", "12\n", "14\n", "16\n", "18\n" ] } ], "source": [ "for element in myrange(4, 20, 2):\n", " print(element)" ] }, { "cell_type": "code", "execution_count": 160, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n", "6\n", "8\n", "10\n", "12\n", "14\n", "16\n", "18\n", "20\n", "22\n", "24\n", "26\n", "28\n", "30\n", "32\n", "34\n", "36\n", "38\n", "40\n", "42\n", "44\n", "46\n", "48\n", "50\n", "52\n", "54\n", "56\n", "58\n", "60\n", "62\n", "64\n", "66\n", "68\n", "70\n", "72\n", "74\n", "76\n", "78\n", "80\n", "82\n", "84\n", "86\n", "88\n", "90\n", "92\n", "94\n", "96\n", "98\n", "100\n", "102\n", "104\n", "106\n", "108\n", "110\n", "112\n", "114\n", "116\n", "118\n", "120\n", "122\n", "124\n", "126\n", "128\n", "130\n", "132\n", "134\n", "136\n", "138\n", "140\n", "142\n", "144\n", "146\n", "148\n", "150\n", "152\n", "154\n", "156\n", "158\n", "160\n", "162\n", "164\n", "166\n", "168\n", "170\n", "172\n", "174\n", "176\n", "178\n", "180\n", "182\n", "184\n", "186\n", "188\n", "190\n", "192\n", "194\n", "196\n", "198\n", "200\n", "202\n", "204\n", "206\n", "208\n", "210\n", "212\n", "214\n", "216\n", "218\n", "220\n", "222\n", "224\n", "226\n", "228\n", "230\n", "232\n", "234\n", "236\n", "238\n", "240\n", "242\n", "244\n", "246\n", "248\n", "250\n", "252\n", "254\n", "256\n", "258\n", "260\n", "262\n", "264\n", "266\n", "268\n", "270\n", "272\n", "274\n", "276\n", "278\n", "280\n", "282\n", "284\n", "286\n", "288\n", "290\n", "292\n", "294\n", "296\n", "298\n", "300\n", "302\n", "304\n", "306\n", "308\n", "310\n", "312\n", "314\n", "316\n", "318\n", "320\n", "322\n", "324\n", "326\n", "328\n", "330\n", "332\n", "334\n", "336\n", "338\n", "340\n", "342\n", "344\n", "346\n", "348\n", "350\n", "352\n", "354\n", "356\n", "358\n", "360\n", "362\n", "364\n", "366\n", "368\n", "370\n", "372\n", "374\n", "376\n", "378\n", "380\n", "382\n", "384\n", "386\n", "388\n", "390\n", "392\n", "394\n", "396\n", "398\n", "400\n", "402\n", "404\n", "406\n", "408\n", "410\n", "412\n", "414\n", "416\n", "418\n", "420\n", "422\n", "424\n", "426\n", "428\n", "430\n", "432\n", "434\n", "436\n", "438\n", "440\n", "442\n", "444\n", "446\n", "448\n", "450\n", "452\n", "454\n", "456\n", "458\n", "460\n", "462\n", "464\n", "466\n", "468\n", "470\n", "472\n", "474\n", "476\n", "478\n", "480\n", "482\n", "484\n", "486\n", "488\n", "490\n", "492\n", "494\n", "496\n", "498\n", "500\n", "502\n", "504\n", "506\n", "508\n", "510\n", "512\n", "514\n", "516\n", "518\n", "520\n", "522\n", "524\n", "526\n", "528\n", "530\n", "532\n", "534\n", "536\n", "538\n", "540\n", "542\n", "544\n", "546\n", "548\n", "550\n", "552\n", "554\n", "556\n", "558\n", "560\n", "562\n", "564\n", "566\n", "568\n", "570\n", "572\n", "574\n", "576\n", "578\n", "580\n", "582\n", "584\n", "586\n", "588\n", "590\n", "592\n", "594\n", "596\n", "598\n", "600\n", "602\n", "604\n", "606\n", "608\n", "610\n", "612\n", "614\n", "616\n", "618\n", "620\n", "622\n", "624\n", "626\n", "628\n", "630\n", "632\n", "634\n", "636\n", "638\n", "640\n", "642\n", "644\n", "646\n", "648\n", "650\n", "652\n", "654\n", "656\n", "658\n", "660\n", "662\n", "664\n", "666\n", "668\n", "670\n", "672\n", "674\n", "676\n", "678\n", "680\n", "682\n", "684\n", "686\n", "688\n", "690\n", "692\n", "694\n", "696\n", "698\n", "700\n", "702\n", "704\n", "706\n", "708\n", "710\n", "712\n", "714\n", "716\n", "718\n", "720\n", "722\n", "724\n", "726\n", "728\n", "730\n", "732\n", "734\n", "736\n", "738\n", "740\n", "742\n", "744\n", "746\n", "748\n", "750\n", "752\n", "754\n", "756\n", "758\n", "760\n", "762\n", "764\n", "766\n", "768\n", "770\n", "772\n", "774\n", "776\n", "778\n", "780\n", "782\n", "784\n", "786\n", "788\n", "790\n", "792\n", "794\n", "796\n", "798\n", "800\n", "802\n", "804\n", "806\n", "808\n", "810\n", "812\n", "814\n", "816\n", "818\n", "820\n", "822\n", "824\n", "826\n", "828\n", "830\n", "832\n", "834\n", "836\n", "838\n", "840\n", "842\n", "844\n", "846\n", "848\n", "850\n", "852\n", "854\n", "856\n", "858\n", "860\n", "862\n", "864\n", "866\n", "868\n", "870\n", "872\n", "874\n", "876\n", "878\n", "880\n", "882\n", "884\n", "886\n", "888\n", "890\n", "892\n", "894\n", "896\n", "898\n", "900\n", "902\n", "904\n", "906\n", "908\n", "910\n", "912\n", "914\n", "916\n", "918\n", "920\n", "922\n", "924\n", "926\n", "928\n", "930\n", "932\n", "934\n", "936\n", "938\n", "940\n", "942\n", "944\n", "946\n", "948\n", "950\n", "952\n", "954\n", "956\n", "958\n", "960\n", "962\n", "964\n", "966\n", "968\n", "970\n", "972\n", "974\n", "976\n", "978\n", "980\n", "982\n", "984\n", "986\n", "988\n", "990\n", "992\n", "994\n", "996\n", "998\n", "1000\n", "1002\n", "1004\n", "1006\n", "1008\n", "1010\n", "1012\n", "1014\n", "1016\n", "1018\n", "1020\n", "1022\n", "1024\n", "1026\n", "1028\n", "1030\n", "1032\n", "1034\n", "1036\n", "1038\n", "1040\n", "1042\n", "1044\n", "1046\n", "1048\n", "1050\n", "1052\n", "1054\n", "1056\n", "1058\n", "1060\n", "1062\n", "1064\n", "1066\n", "1068\n", "1070\n", "1072\n", "1074\n", "1076\n", "1078\n", "1080\n", "1082\n", "1084\n", "1086\n", "1088\n", "1090\n", "1092\n", "1094\n", "1096\n", "1098\n", "1100\n", "1102\n", "1104\n", "1106\n", "1108\n", "1110\n", "1112\n", "1114\n", "1116\n", "1118\n", "1120\n", "1122\n", "1124\n", "1126\n", "1128\n", "1130\n", "1132\n", "1134\n", "1136\n", "1138\n", "1140\n", "1142\n", "1144\n", "1146\n", "1148\n", "1150\n", "1152\n", "1154\n", "1156\n", "1158\n", "1160\n", "1162\n", "1164\n", "1166\n", "1168\n", "1170\n", "1172\n", "1174\n", "1176\n", "1178\n", "1180\n", "1182\n", "1184\n", "1186\n", "1188\n", "1190\n", "1192\n", "1194\n", "1196\n", "1198\n", "1200\n", "1202\n", "1204\n", "1206\n", "1208\n", "1210\n", "1212\n", "1214\n", "1216\n", "1218\n", "1220\n", "1222\n", "1224\n", "1226\n", "1228\n", "1230\n", "1232\n", "1234\n", "1236\n", "1238\n", "1240\n", "1242\n", "1244\n", "1246\n", "1248\n", "1250\n", "1252\n", "1254\n", "1256\n", "1258\n", "1260\n", "1262\n", "1264\n", "1266\n", "1268\n", "1270\n", "1272\n", "1274\n", "1276\n", "1278\n", "1280\n", "1282\n", "1284\n", "1286\n", "1288\n", "1290\n", "1292\n", "1294\n", "1296\n", "1298\n", "1300\n", "1302\n", "1304\n", "1306\n", "1308\n", "1310\n", "1312\n", "1314\n", "1316\n", "1318\n", "1320\n", "1322\n", "1324\n", "1326\n", "1328\n", "1330\n", "1332\n", "1334\n", "1336\n", "1338\n", "1340\n", "1342\n", "1344\n", "1346\n", "1348\n", "1350\n", "1352\n", "1354\n", "1356\n", "1358\n", "1360\n", "1362\n", "1364\n", "1366\n", "1368\n", "1370\n", "1372\n", "1374\n", "1376\n", "1378\n", "1380\n", "1382\n", "1384\n", "1386\n", "1388\n", "1390\n", "1392\n", "1394\n", "1396\n", "1398\n", "1400\n", "1402\n", "1404\n", "1406\n", "1408\n", "1410\n", "1412\n", "1414\n", "1416\n", "1418\n", "1420\n", "1422\n", "1424\n", "1426\n", "1428\n", "1430\n", "1432\n", "1434\n", "1436\n", "1438\n", "1440\n", "1442\n", "1444\n", "1446\n", "1448\n", "1450\n", "1452\n", "1454\n", "1456\n", "1458\n", "1460\n", "1462\n", "1464\n", "1466\n", "1468\n", "1470\n", "1472\n", "1474\n", "1476\n", "1478\n", "1480\n", "1482\n", "1484\n", "1486\n", "1488\n", "1490\n", "1492\n", "1494\n", "1496\n", "1498\n", "1500\n", "1502\n", "1504\n", "1506\n", "1508\n", "1510\n", "1512\n", "1514\n", "1516\n", "1518\n", "1520\n", "1522\n", "1524\n", "1526\n", "1528\n", "1530\n", "1532\n", "1534\n", "1536\n", "1538\n", "1540\n", "1542\n", "1544\n", "1546\n", "1548\n", "1550\n", "1552\n", "1554\n", "1556\n", "1558\n", "1560\n", "1562\n", "1564\n", "1566\n", "1568\n", "1570\n", "1572\n", "1574\n", "1576\n", "1578\n", "1580\n", "1582\n", "1584\n", "1586\n", "1588\n", "1590\n", "1592\n", "1594\n", "1596\n", "1598\n", "1600\n", "1602\n", "1604\n", "1606\n", "1608\n", "1610\n", "1612\n", "1614\n", "1616\n", "1618\n", "1620\n", "1622\n", "1624\n", "1626\n", "1628\n", "1630\n", "1632\n", "1634\n", "1636\n", "1638\n", "1640\n", "1642\n", "1644\n", "1646\n", "1648\n", "1650\n", "1652\n", "1654\n", "1656\n", "1658\n", "1660\n", "1662\n", "1664\n", "1666\n", "1668\n", "1670\n", "1672\n", "1674\n", "1676\n", "1678\n", "1680\n", "1682\n", "1684\n", "1686\n", "1688\n", "1690\n", "1692\n", "1694\n", "1696\n", "1698\n", "1700\n", "1702\n", "1704\n", "1706\n", "1708\n", "1710\n", "1712\n", "1714\n", "1716\n", "1718\n", "1720\n", "1722\n", "1724\n", "1726\n", "1728\n", "1730\n", "1732\n", "1734\n", "1736\n", "1738\n", "1740\n", "1742\n", "1744\n", "1746\n", "1748\n", "1750\n", "1752\n", "1754\n", "1756\n", "1758\n", "1760\n", "1762\n", "1764\n", "1766\n", "1768\n", "1770\n", "1772\n", "1774\n", "1776\n", "1778\n", "1780\n", "1782\n", "1784\n", "1786\n", "1788\n", "1790\n", "1792\n", "1794\n", "1796\n", "1798\n", "1800\n", "1802\n", "1804\n", "1806\n", "1808\n", "1810\n", "1812\n", "1814\n", "1816\n", "1818\n", "1820\n", "1822\n", "1824\n", "1826\n", "1828\n", "1830\n", "1832\n", "1834\n", "1836\n", "1838\n", "1840\n", "1842\n", "1844\n", "1846\n", "1848\n", "1850\n", "1852\n", "1854\n", "1856\n", "1858\n", "1860\n", "1862\n", "1864\n", "1866\n", "1868\n", "1870\n", "1872\n", "1874\n", "1876\n", "1878\n", "1880\n", "1882\n", "1884\n", "1886\n", "1888\n", "1890\n", "1892\n", "1894\n", "1896\n", "1898\n", "1900\n", "1902\n", "1904\n", "1906\n", "1908\n", "1910\n", "1912\n", "1914\n", "1916\n", "1918\n", "1920\n", "1922\n", "1924\n", "1926\n", "1928\n", "1930\n", "1932\n", "1934\n", "1936\n", "1938\n", "1940\n", "1942\n", "1944\n", "1946\n", "1948\n", "1950\n", "1952\n", "1954\n", "1956\n", "1958\n", "1960\n", "1962\n", "1964\n", "1966\n", "1968\n", "1970\n", "1972\n", "1974\n", "1976\n", "1978\n", "1980\n", "1982\n", "1984\n", "1986\n", "1988\n", "1990\n", "1992\n", "1994\n", "1996\n", "1998\n", "2000\n", "2002\n", "2004\n", "2006\n", "2008\n", "2010\n", "2012\n", "2014\n", "2016\n", "2018\n", "2020\n", "2022\n", "2024\n", "2026\n", "2028\n", "2030\n", "2032\n", "2034\n", "2036\n", "2038\n", "2040\n", "2042\n", "2044\n", "2046\n", "2048\n", "2050\n", "2052\n", "2054\n", "2056\n", "2058\n", "2060\n", "2062\n", "2064\n", "2066\n", "2068\n", "2070\n", "2072\n", "2074\n", "2076\n", "2078\n", "2080\n", "2082\n", "2084\n", "2086\n", "2088\n", "2090\n", "2092\n", "2094\n", "2096\n", "2098\n", "2100\n", "2102\n", "2104\n", "2106\n", "2108\n", "2110\n", "2112\n", "2114\n", "2116\n", "2118\n", "2120\n", "2122\n", "2124\n", "2126\n", "2128\n", "2130\n", "2132\n", "2134\n", "2136\n", "2138\n", "2140\n", "2142\n", "2144\n", "2146\n", "2148\n", "2150\n", "2152\n", "2154\n", "2156\n", "2158\n", "2160\n", "2162\n", "2164\n", "2166\n", "2168\n", "2170\n", "2172\n", "2174\n", "2176\n", "2178\n", "2180\n", "2182\n", "2184\n", "2186\n", "2188\n", "2190\n", "2192\n", "2194\n", "2196\n", "2198\n", "2200\n", "2202\n", "2204\n", "2206\n", "2208\n", "2210\n", "2212\n", "2214\n", "2216\n", "2218\n", "2220\n", "2222\n", "2224\n", "2226\n", "2228\n", "2230\n", "2232\n", "2234\n", "2236\n", "2238\n", "2240\n", "2242\n", "2244\n", "2246\n", "2248\n", "2250\n", "2252\n", "2254\n", "2256\n", "2258\n", "2260\n", "2262\n", "2264\n", "2266\n", "2268\n", "2270\n", "2272\n", "2274\n", "2276\n", "2278\n", "2280\n", "2282\n", "2284\n", "2286\n", "2288\n", "2290\n", "2292\n", "2294\n", "2296\n", "2298\n", "2300\n", "2302\n", "2304\n", "2306\n", "2308\n", "2310\n", "2312\n", "2314\n", "2316\n", "2318\n", "2320\n", "2322\n", "2324\n", "2326\n", "2328\n", "2330\n", "2332\n", "2334\n", "2336\n", "2338\n", "2340\n", "2342\n", "2344\n", "2346\n", "2348\n", "2350\n", "2352\n", "2354\n", "2356\n", "2358\n", "2360\n", "2362\n", "2364\n", "2366\n", "2368\n", "2370\n", "2372\n", "2374\n", "2376\n", "2378\n", "2380\n", "2382\n", "2384\n", "2386\n", "2388\n", "2390\n", "2392\n", "2394\n", "2396\n", "2398\n", "2400\n", "2402\n", "2404\n", "2406\n", "2408\n", "2410\n", "2412\n", "2414\n", "2416\n", "2418\n", "2420\n", "2422\n", "2424\n", "2426\n", "2428\n", "2430\n", "2432\n", "2434\n", "2436\n", "2438\n", "2440\n", "2442\n", "2444\n", "2446\n", "2448\n", "2450\n", "2452\n", "2454\n", "2456\n", "2458\n", "2460\n", "2462\n", "2464\n", "2466\n", "2468\n", "2470\n", "2472\n", "2474\n", "2476\n", "2478\n", "2480\n", "2482\n", "2484\n", "2486\n", "2488\n", "2490\n", "2492\n", "2494\n", "2496\n", "2498\n", "2500\n", "2502\n", "2504\n", "2506\n", "2508\n", "2510\n", "2512\n", "2514\n", "2516\n", "2518\n", "2520\n", "2522\n", "2524\n", "2526\n", "2528\n", "2530\n", "2532\n", "2534\n", "2536\n", "2538\n", "2540\n", "2542\n", "2544\n", "2546\n", "2548\n", "2550\n", "2552\n", "2554\n", "2556\n", "2558\n", "2560\n", "2562\n", "2564\n", "2566\n", "2568\n", "2570\n", "2572\n", "2574\n", "2576\n", "2578\n", "2580\n", "2582\n", "2584\n", "2586\n", "2588\n", "2590\n", "2592\n", "2594\n", "2596\n", "2598\n", "2600\n", "2602\n", "2604\n", "2606\n", "2608\n", "2610\n", "2612\n", "2614\n", "2616\n", "2618\n", "2620\n", "2622\n", "2624\n", "2626\n", "2628\n", "2630\n", "2632\n", "2634\n", "2636\n", "2638\n", "2640\n", "2642\n", "2644\n", "2646\n", "2648\n", "2650\n", "2652\n", "2654\n", "2656\n", "2658\n", "2660\n", "2662\n", "2664\n", "2666\n", "2668\n", "2670\n", "2672\n", "2674\n", "2676\n", "2678\n", "2680\n", "2682\n", "2684\n", "2686\n", "2688\n", "2690\n", "2692\n", "2694\n", "2696\n", "2698\n", "2700\n", "2702\n", "2704\n", "2706\n", "2708\n", "2710\n", "2712\n", "2714\n", "2716\n", "2718\n", "2720\n", "2722\n", "2724\n", "2726\n", "2728\n", "2730\n", "2732\n", "2734\n", "2736\n", "2738\n", "2740\n", "2742\n", "2744\n", "2746\n", "2748\n", "2750\n", "2752\n", "2754\n", "2756\n", "2758\n", "2760\n", "2762\n", "2764\n", "2766\n", "2768\n", "2770\n", "2772\n", "2774\n", "2776\n", "2778\n", "2780\n", "2782\n", "2784\n", "2786\n", "2788\n", "2790\n", "2792\n", "2794\n", "2796\n", "2798\n", "2800\n", "2802\n", "2804\n", "2806\n", "2808\n", "2810\n", "2812\n", "2814\n", "2816\n", "2818\n", "2820\n", "2822\n", "2824\n", "2826\n", "2828\n", "2830\n", "2832\n", "2834\n", "2836\n", "2838\n", "2840\n", "2842\n", "2844\n", "2846\n", "2848\n", "2850\n", "2852\n", "2854\n", "2856\n", "2858\n", "2860\n", "2862\n", "2864\n", "2866\n", "2868\n", "2870\n", "2872\n", "2874\n", "2876\n", "2878\n", "2880\n", "2882\n", "2884\n", "2886\n", "2888\n", "2890\n", "2892\n", "2894\n", "2896\n", "2898\n", "2900\n", "2902\n", "2904\n", "2906\n", "2908\n", "2910\n", "2912\n", "2914\n", "2916\n", "2918\n", "2920\n", "2922\n", "2924\n", "2926\n", "2928\n", "2930\n", "2932\n", "2934\n", "2936\n", "2938\n", "2940\n", "2942\n", "2944\n", "2946\n", "2948\n", "2950\n", "2952\n", "2954\n", "2956\n", "2958\n", "2960\n", "2962\n", "2964\n", "2966\n", "2968\n", "2970\n", "2972\n", "2974\n", "2976\n", "2978\n", "2980\n", "2982\n", "2984\n", "2986\n", "2988\n", "2990\n", "2992\n", "2994\n", "2996\n", "2998\n", "3000\n", "3002\n", "3004\n", "3006\n", "3008\n", "3010\n", "3012\n", "3014\n", "3016\n", "3018\n", "3020\n", "3022\n", "3024\n", "3026\n", "3028\n", "3030\n", "3032\n", "3034\n", "3036\n", "3038\n", "3040\n", "3042\n", "3044\n", "3046\n", "3048\n", "3050\n", "3052\n", "3054\n", "3056\n", "3058\n", "3060\n", "3062\n", "3064\n", "3066\n", "3068\n", "3070\n", "3072\n", "3074\n", "3076\n", "3078\n", "3080\n", "3082\n", "3084\n", "3086\n", "3088\n", "3090\n", "3092\n", "3094\n", "3096\n", "3098\n", "3100\n", "3102\n", "3104\n", "3106\n", "3108\n", "3110\n", "3112\n", "3114\n", "3116\n", "3118\n", "3120\n", "3122\n", "3124\n", "3126\n", "3128\n", "3130\n", "3132\n", "3134\n", "3136\n", "3138\n", "3140\n", "3142\n", "3144\n", "3146\n", "3148\n", "3150\n", "3152\n", "3154\n", "3156\n", "3158\n", "3160\n", "3162\n", "3164\n", "3166\n", "3168\n", "3170\n", "3172\n", "3174\n", "3176\n", "3178\n", "3180\n", "3182\n", "3184\n", "3186\n", "3188\n", "3190\n", "3192\n", "3194\n", "3196\n", "3198\n", "3200\n", "3202\n", "3204\n", "3206\n", "3208\n", "3210\n", "3212\n", "3214\n", "3216\n", "3218\n", "3220\n", "3222\n", "3224\n", "3226\n", "3228\n", "3230\n", "3232\n", "3234\n", "3236\n", "3238\n", "3240\n", "3242\n", "3244\n", "3246\n", "3248\n", "3250\n", "3252\n", "3254\n", "3256\n", "3258\n", "3260\n", "3262\n", "3264\n", "3266\n", "3268\n", "3270\n", "3272\n", "3274\n", "3276\n", "3278\n", "3280\n", "3282\n", "3284\n", "3286\n", "3288\n", "3290\n", "3292\n", "3294\n", "3296\n", "3298\n", "3300\n", "3302\n", "3304\n", "3306\n", "3308\n", "3310\n", "3312\n", "3314\n", "3316\n", "3318\n", "3320\n", "3322\n", "3324\n", "3326\n", "3328\n", "3330\n", "3332\n", "3334\n", "3336\n", "3338\n", "3340\n", "3342\n", "3344\n", "3346\n", "3348\n", "3350\n", "3352\n", "3354\n", "3356\n", "3358\n", "3360\n", "3362\n", "3364\n", "3366\n", "3368\n", "3370\n", "3372\n", "3374\n", "3376\n", "3378\n", "3380\n", "3382\n", "3384\n", "3386\n", "3388\n", "3390\n", "3392\n", "3394\n", "3396\n", "3398\n", "3400\n", "3402\n", "3404\n", "3406\n", "3408\n", "3410\n", "3412\n", "3414\n", "3416\n", "3418\n", "3420\n", "3422\n", "3424\n", "3426\n", "3428\n", "3430\n", "3432\n", "3434\n", "3436\n", "3438\n", "3440\n", "3442\n", "3444\n", "3446\n", "3448\n", "3450\n", "3452\n", "3454\n", "3456\n", "3458\n", "3460\n", "3462\n", "3464\n", "3466\n", "3468\n", "3470\n", "3472\n", "3474\n", "3476\n", "3478\n", "3480\n", "3482\n", "3484\n", "3486\n", "3488\n", "3490\n", "3492\n", "3494\n", "3496\n", "3498\n", "3500\n", "3502\n", "3504\n", "3506\n", "3508\n", "3510\n", "3512\n", "3514\n", "3516\n", "3518\n", "3520\n", "3522\n", "3524\n", "3526\n", "3528\n", "3530\n", "3532\n", "3534\n", "3536\n", "3538\n", "3540\n", "3542\n", "3544\n", "3546\n", "3548\n", "3550\n", "3552\n", "3554\n", "3556\n", "3558\n", "3560\n", "3562\n", "3564\n", "3566\n", "3568\n", "3570\n", "3572\n", "3574\n", "3576\n", "3578\n", "3580\n", "3582\n", "3584\n", "3586\n", "3588\n", "3590\n", "3592\n", "3594\n", "3596\n", "3598\n", "3600\n", "3602\n", "3604\n", "3606\n", "3608\n", "3610\n", "3612\n", "3614\n", "3616\n", "3618\n", "3620\n", "3622\n", "3624\n", "3626\n", "3628\n", "3630\n", "3632\n", "3634\n", "3636\n", "3638\n", "3640\n", "3642\n", "3644\n", "3646\n", "3648\n", "3650\n", "3652\n", "3654\n", "3656\n", "3658\n", "3660\n", "3662\n", "3664\n", "3666\n", "3668\n", "3670\n", "3672\n", "3674\n", "3676\n", "3678\n", "3680\n", "3682\n", "3684\n", "3686\n", "3688\n", "3690\n", "3692\n", "3694\n", "3696\n", "3698\n", "3700\n", "3702\n", "3704\n", "3706\n", "3708\n", "3710\n", "3712\n", "3714\n", "3716\n", "3718\n", "3720\n", "3722\n", "3724\n", "3726\n", "3728\n", "3730\n", "3732\n", "3734\n", "3736\n", "3738\n", "3740\n", "3742\n", "3744\n", "3746\n", "3748\n", "3750\n", "3752\n", "3754\n", "3756\n", "3758\n", "3760\n", "3762\n", "3764\n", "3766\n", "3768\n", "3770\n", "3772\n", "3774\n", "3776\n", "3778\n", "3780\n", "3782\n", "3784\n", "3786\n", "3788\n", "3790\n", "3792\n", "3794\n", "3796\n", "3798\n", "3800\n", "3802\n", "3804\n", "3806\n", "3808\n", "3810\n", "3812\n", "3814\n", "3816\n", "3818\n", "3820\n", "3822\n", "3824\n", "3826\n", "3828\n", "3830\n", "3832\n", "3834\n", "3836\n", "3838\n", "3840\n", "3842\n", "3844\n", "3846\n", "3848\n", "3850\n", "3852\n", "3854\n", "3856\n", "3858\n", "3860\n", "3862\n", "3864\n", "3866\n", "3868\n", "3870\n", "3872\n", "3874\n", "3876\n", "3878\n", "3880\n", "3882\n", "3884\n", "3886\n", "3888\n", "3890\n", "3892\n", "3894\n", "3896\n", "3898\n", "3900\n", "3902\n", "3904\n", "3906\n", "3908\n", "3910\n", "3912\n", "3914\n", "3916\n", "3918\n", "3920\n", "3922\n", "3924\n", "3926\n", "3928\n", "3930\n", "3932\n", "3934\n", "3936\n", "3938\n", "3940\n", "3942\n", "3944\n", "3946\n", "3948\n", "3950\n", "3952\n", "3954\n", "3956\n", "3958\n", "3960\n", "3962\n", "3964\n", "3966\n", "3968\n", "3970\n", "3972\n", "3974\n", "3976\n", "3978\n", "3980\n", "3982\n", "3984\n", "3986\n", "3988\n", "3990\n", "3992\n", "3994\n", "3996\n", "3998\n", "4000\n", "4002\n", "4004\n", "4006\n", "4008\n", "4010\n", "4012\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "4014\n", "4016\n", "4018\n", "4020\n", "4022\n", "4024\n", "4026\n", "4028\n", "4030\n", "4032\n", "4034\n", "4036\n", "4038\n", "4040\n", "4042\n", "4044\n", "4046\n", "4048\n", "4050\n", "4052\n", "4054\n", "4056\n", "4058\n", "4060\n", "4062\n", "4064\n", "4066\n", "4068\n", "4070\n", "4072\n", "4074\n", "4076\n", "4078\n", "4080\n", "4082\n", "4084\n", "4086\n", "4088\n", "4090\n", "4092\n", "4094\n", "4096\n", "4098\n", "4100\n", "4102\n", "4104\n", "4106\n", "4108\n", "4110\n", "4112\n", "4114\n", "4116\n", "4118\n", "4120\n", "4122\n", "4124\n", "4126\n", "4128\n", "4130\n", "4132\n", "4134\n", "4136\n", "4138\n", "4140\n", "4142\n", "4144\n", "4146\n", "4148\n", "4150\n", "4152\n", "4154\n", "4156\n", "4158\n", "4160\n", "4162\n", "4164\n", "4166\n", "4168\n", "4170\n", "4172\n", "4174\n", "4176\n", "4178\n", "4180\n", "4182\n", "4184\n", "4186\n", "4188\n", "4190\n", "4192\n", "4194\n", "4196\n", "4198\n", "4200\n", "4202\n", "4204\n", "4206\n", "4208\n", "4210\n", "4212\n", "4214\n", "4216\n", "4218\n", "4220\n", "4222\n", "4224\n", "4226\n", "4228\n", "4230\n", "4232\n", "4234\n", "4236\n", "4238\n", "4240\n", "4242\n", "4244\n", "4246\n", "4248\n", "4250\n", "4252\n", "4254\n", "4256\n", "4258\n", "4260\n", "4262\n", "4264\n", "4266\n", "4268\n", "4270\n", "4272\n", "4274\n", "4276\n", "4278\n", "4280\n", "4282\n", "4284\n", "4286\n", "4288\n", "4290\n", "4292\n", "4294\n", "4296\n", "4298\n", "4300\n", "4302\n", "4304\n", "4306\n", "4308\n", "4310\n", "4312\n", "4314\n", "4316\n", "4318\n", "4320\n", "4322\n", "4324\n", "4326\n", "4328\n", "4330\n", "4332\n", "4334\n", "4336\n", "4338\n", "4340\n", "4342\n", "4344\n", "4346\n", "4348\n", "4350\n", "4352\n", "4354\n", "4356\n", "4358\n", "4360\n", "4362\n", "4364\n", "4366\n", "4368\n", "4370\n", "4372\n", "4374\n", "4376\n", "4378\n", "4380\n", "4382\n", "4384\n", "4386\n", "4388\n", "4390\n", "4392\n", "4394\n", "4396\n", "4398\n", "4400\n", "4402\n", "4404\n", "4406\n", "4408\n", "4410\n", "4412\n", "4414\n", "4416\n", "4418\n", "4420\n", "4422\n", "4424\n", "4426\n", "4428\n", "4430\n", "4432\n", "4434\n", "4436\n", "4438\n", "4440\n", "4442\n", "4444\n", "4446\n", "4448\n", "4450\n", "4452\n", "4454\n", "4456\n", "4458\n", "4460\n", "4462\n", "4464\n", "4466\n", "4468\n", "4470\n", "4472\n", "4474\n", "4476\n", "4478\n", "4480\n", "4482\n", "4484\n", "4486\n", "4488\n", "4490\n", "4492\n", "4494\n", "4496\n", "4498\n", "4500\n", "4502\n", "4504\n", "4506\n", "4508\n", "4510\n", "4512\n", "4514\n", "4516\n", "4518\n", "4520\n", "4522\n", "4524\n", "4526\n", "4528\n", "4530\n", "4532\n", "4534\n", "4536\n", "4538\n", "4540\n", "4542\n", "4544\n", "4546\n", "4548\n", "4550\n", "4552\n", "4554\n", "4556\n", "4558\n", "4560\n", "4562\n", "4564\n", "4566\n", "4568\n", "4570\n", "4572\n", "4574\n", "4576\n", "4578\n", "4580\n", "4582\n", "4584\n", "4586\n", "4588\n", "4590\n", "4592\n", "4594\n", "4596\n", "4598\n", "4600\n", "4602\n", "4604\n", "4606\n", "4608\n", "4610\n", "4612\n", "4614\n", "4616\n", "4618\n", "4620\n", "4622\n", "4624\n", "4626\n", "4628\n", "4630\n", "4632\n", "4634\n", "4636\n", "4638\n", "4640\n", "4642\n", "4644\n", "4646\n", "4648\n", "4650\n", "4652\n", "4654\n", "4656\n", "4658\n", "4660\n", "4662\n", "4664\n", "4666\n", "4668\n", "4670\n", "4672\n", "4674\n", "4676\n", "4678\n", "4680\n", "4682\n", "4684\n", "4686\n", "4688\n", "4690\n", "4692\n", "4694\n", "4696\n", "4698\n", "4700\n", "4702\n", "4704\n", "4706\n", "4708\n", "4710\n", "4712\n", "4714\n", "4716\n", "4718\n", "4720\n", "4722\n", "4724\n", "4726\n", "4728\n", "4730\n", "4732\n", "4734\n", "4736\n", "4738\n", "4740\n", "4742\n", "4744\n", "4746\n", "4748\n", "4750\n", "4752\n", "4754\n", "4756\n", "4758\n", "4760\n", "4762\n", "4764\n", "4766\n", "4768\n", "4770\n", "4772\n", "4774\n", "4776\n", "4778\n", "4780\n", "4782\n", "4784\n", "4786\n", "4788\n", "4790\n", "4792\n", "4794\n", "4796\n", "4798\n", "4800\n", "4802\n", "4804\n", "4806\n", "4808\n", "4810\n", "4812\n", "4814\n", "4816\n", "4818\n", "4820\n", "4822\n", "4824\n", "4826\n", "4828\n", "4830\n", "4832\n", "4834\n", "4836\n", "4838\n", "4840\n", "4842\n", "4844\n", "4846\n", "4848\n", "4850\n", "4852\n", "4854\n", "4856\n", "4858\n", "4860\n", "4862\n", "4864\n", "4866\n", "4868\n", "4870\n", "4872\n", "4874\n", "4876\n", "4878\n", "4880\n", "4882\n", "4884\n", "4886\n", "4888\n", "4890\n", "4892\n", "4894\n", "4896\n", "4898\n", "4900\n", "4902\n", "4904\n", "4906\n", "4908\n", "4910\n", "4912\n", "4914\n", "4916\n", "4918\n", "4920\n", "4922\n", "4924\n", "4926\n", "4928\n", "4930\n", "4932\n", "4934\n", "4936\n", "4938\n", "4940\n", "4942\n", "4944\n", "4946\n", "4948\n", "4950\n", "4952\n", "4954\n", "4956\n", "4958\n", "4960\n", "4962\n", "4964\n", "4966\n", "4968\n", "4970\n", "4972\n", "4974\n", "4976\n", "4978\n", "4980\n", "4982\n", "4984\n", "4986\n", "4988\n", "4990\n", "4992\n", "4994\n", "4996\n", "4998\n", "5000\n", "5002\n", "5004\n", "5006\n", "5008\n", "5010\n", "5012\n", "5014\n", "5016\n", "5018\n", "5020\n", "5022\n", "5024\n", "5026\n", "5028\n", "5030\n", "5032\n", "5034\n", "5036\n", "5038\n", "5040\n", "5042\n", "5044\n", "5046\n", "5048\n", "5050\n", "5052\n", "5054\n", "5056\n", "5058\n", "5060\n", "5062\n", "5064\n", "5066\n", "5068\n", "5070\n", "5072\n", "5074\n", "5076\n", "5078\n", "5080\n", "5082\n", "5084\n", "5086\n", "5088\n", "5090\n", "5092\n", "5094\n", "5096\n", "5098\n", "5100\n", "5102\n", "5104\n", "5106\n", "5108\n", "5110\n", "5112\n", "5114\n", "5116\n", "5118\n", "5120\n", "5122\n", "5124\n", "5126\n", "5128\n", "5130\n", "5132\n", "5134\n", "5136\n", "5138\n", "5140\n", "5142\n", "5144\n", "5146\n", "5148\n", "5150\n", "5152\n", "5154\n", "5156\n", "5158\n", "5160\n", "5162\n", "5164\n", "5166\n", "5168\n", "5170\n", "5172\n", "5174\n", "5176\n", "5178\n", "5180\n", "5182\n", "5184\n", "5186\n", "5188\n", "5190\n", "5192\n", "5194\n", "5196\n", "5198\n", "5200\n", "5202\n", "5204\n", "5206\n", "5208\n", "5210\n", "5212\n", "5214\n", "5216\n", "5218\n", "5220\n", "5222\n", "5224\n", "5226\n", "5228\n", "5230\n", "5232\n", "5234\n", "5236\n", "5238\n", "5240\n", "5242\n", "5244\n", "5246\n", "5248\n", "5250\n", "5252\n", "5254\n", "5256\n", "5258\n", "5260\n", "5262\n", "5264\n", "5266\n", "5268\n", "5270\n", "5272\n", "5274\n", "5276\n", "5278\n", "5280\n", "5282\n", "5284\n", "5286\n", "5288\n", "5290\n", "5292\n", "5294\n", "5296\n", "5298\n", "5300\n", "5302\n", "5304\n", "5306\n", "5308\n", "5310\n", "5312\n", "5314\n", "5316\n", "5318\n", "5320\n", "5322\n", "5324\n", "5326\n", "5328\n", "5330\n", "5332\n", "5334\n", "5336\n", "5338\n", "5340\n", "5342\n", "5344\n", "5346\n", "5348\n", "5350\n", "5352\n", "5354\n", "5356\n", "5358\n", "5360\n", "5362\n", "5364\n", "5366\n", "5368\n", "5370\n", "5372\n", "5374\n", "5376\n", "5378\n", "5380\n", "5382\n", "5384\n", "5386\n", "5388\n", "5390\n", "5392\n", "5394\n", "5396\n", "5398\n", "5400\n", "5402\n", "5404\n", "5406\n", "5408\n", "5410\n", "5412\n", "5414\n", "5416\n", "5418\n", "5420\n", "5422\n", "5424\n", "5426\n", "5428\n", "5430\n", "5432\n", "5434\n", "5436\n", "5438\n", "5440\n", "5442\n", "5444\n", "5446\n", "5448\n", "5450\n", "5452\n", "5454\n", "5456\n", "5458\n", "5460\n", "5462\n", "5464\n", "5466\n", "5468\n", "5470\n", "5472\n", "5474\n", "5476\n", "5478\n", "5480\n", "5482\n", "5484\n", "5486\n", "5488\n", "5490\n", "5492\n", "5494\n", "5496\n", "5498\n", "5500\n", "5502\n", "5504\n", "5506\n", "5508\n", "5510\n", "5512\n", "5514\n", "5516\n", "5518\n", "5520\n", "5522\n", "5524\n", "5526\n", "5528\n", "5530\n", "5532\n", "5534\n", "5536\n", "5538\n", "5540\n", "5542\n", "5544\n", "5546\n", "5548\n", "5550\n", "5552\n", "5554\n", "5556\n", "5558\n", "5560\n", "5562\n", "5564\n", "5566\n", "5568\n", "5570\n", "5572\n", "5574\n", "5576\n", "5578\n", "5580\n", "5582\n", "5584\n", "5586\n", "5588\n", "5590\n", "5592\n", "5594\n", "5596\n", "5598\n", "5600\n", "5602\n", "5604\n", "5606\n", "5608\n", "5610\n", "5612\n", "5614\n", "5616\n", "5618\n", "5620\n", "5622\n", "5624\n", "5626\n", "5628\n", "5630\n", "5632\n", "5634\n", "5636\n", "5638\n", "5640\n", "5642\n", "5644\n", "5646\n", "5648\n", "5650\n", "5652\n", "5654\n", "5656\n", "5658\n", "5660\n", "5662\n", "5664\n", "5666\n", "5668\n", "5670\n", "5672\n", "5674\n", "5676\n", "5678\n", "5680\n", "5682\n", "5684\n", "5686\n", "5688\n", "5690\n", "5692\n", "5694\n", "5696\n", "5698\n", "5700\n", "5702\n", "5704\n", "5706\n", "5708\n", "5710\n", "5712\n", "5714\n", "5716\n", "5718\n", "5720\n", "5722\n", "5724\n", "5726\n", "5728\n", "5730\n", "5732\n", "5734\n", "5736\n", "5738\n", "5740\n", "5742\n", "5744\n", "5746\n", "5748\n", "5750\n", "5752\n", "5754\n", "5756\n", "5758\n", "5760\n", "5762\n", "5764\n", "5766\n", "5768\n", "5770\n", "5772\n", "5774\n", "5776\n", "5778\n", "5780\n", "5782\n", "5784\n", "5786\n", "5788\n", "5790\n", "5792\n", "5794\n", "5796\n", "5798\n", "5800\n", "5802\n", "5804\n", "5806\n", "5808\n", "5810\n", "5812\n", "5814\n", "5816\n", "5818\n", "5820\n", "5822\n", "5824\n", "5826\n", "5828\n", "5830\n", "5832\n", "5834\n", "5836\n", "5838\n", "5840\n", "5842\n", "5844\n", "5846\n", "5848\n", "5850\n", "5852\n", "5854\n", "5856\n", "5858\n", "5860\n", "5862\n", "5864\n", "5866\n", "5868\n", "5870\n", "5872\n", "5874\n", "5876\n", "5878\n", "5880\n", "5882\n", "5884\n", "5886\n", "5888\n", "5890\n", "5892\n", "5894\n", "5896\n", "5898\n", "5900\n", "5902\n", "5904\n", "5906\n", "5908\n", "5910\n", "5912\n", "5914\n", "5916\n", "5918\n", "5920\n", "5922\n", "5924\n", "5926\n", "5928\n", "5930\n", "5932\n", "5934\n", "5936\n", "5938\n", "5940\n", "5942\n", "5944\n", "5946\n", "5948\n", "5950\n", "5952\n", "5954\n", "5956\n", "5958\n", "5960\n", "5962\n", "5964\n", "5966\n", "5968\n", "5970\n", "5972\n", "5974\n", "5976\n", "5978\n", "5980\n", "5982\n", "5984\n", "5986\n", "5988\n", "5990\n", "5992\n", "5994\n", "5996\n", "5998\n", "6000\n", "6002\n", "6004\n", "6006\n", "6008\n", "6010\n", "6012\n", "6014\n", "6016\n", "6018\n", "6020\n", "6022\n", "6024\n", "6026\n", "6028\n", "6030\n", "6032\n", "6034\n", "6036\n", "6038\n", "6040\n", "6042\n", "6044\n", "6046\n", "6048\n", "6050\n", "6052\n", "6054\n", "6056\n", "6058\n", "6060\n", "6062\n", "6064\n", "6066\n", "6068\n", "6070\n", "6072\n", "6074\n", "6076\n", "6078\n", "6080\n", "6082\n", "6084\n", "6086\n", "6088\n", "6090\n", "6092\n", "6094\n", "6096\n", "6098\n", "6100\n", "6102\n", "6104\n", "6106\n", "6108\n", "6110\n", "6112\n", "6114\n", "6116\n", "6118\n", "6120\n", "6122\n", "6124\n", "6126\n", "6128\n", "6130\n", "6132\n", "6134\n", "6136\n", "6138\n", "6140\n", "6142\n", "6144\n", "6146\n", "6148\n", "6150\n", "6152\n", "6154\n", "6156\n", "6158\n", "6160\n", "6162\n", "6164\n", "6166\n", "6168\n", "6170\n", "6172\n", "6174\n", "6176\n", "6178\n", "6180\n", "6182\n", "6184\n", "6186\n", "6188\n", "6190\n", "6192\n", "6194\n", "6196\n", "6198\n", "6200\n", "6202\n", "6204\n", "6206\n", "6208\n", "6210\n", "6212\n", "6214\n", "6216\n", "6218\n", "6220\n", "6222\n", "6224\n", "6226\n", "6228\n", "6230\n", "6232\n", "6234\n", "6236\n", "6238\n", "6240\n", "6242\n", "6244\n", "6246\n", "6248\n", "6250\n", "6252\n", "6254\n", "6256\n", "6258\n", "6260\n", "6262\n", "6264\n", "6266\n", "6268\n", "6270\n", "6272\n", "6274\n", "6276\n", "6278\n", "6280\n", "6282\n", "6284\n", "6286\n", "6288\n", "6290\n", "6292\n", "6294\n", "6296\n", "6298\n", "6300\n", "6302\n", "6304\n", "6306\n", "6308\n", "6310\n", "6312\n", "6314\n", "6316\n", "6318\n", "6320\n", "6322\n", "6324\n", "6326\n", "6328\n", "6330\n", "6332\n", "6334\n", "6336\n", "6338\n", "6340\n", "6342\n", "6344\n", "6346\n", "6348\n", "6350\n", "6352\n", "6354\n", "6356\n", "6358\n", "6360\n", "6362\n", "6364\n", "6366\n", "6368\n", "6370\n", "6372\n", "6374\n", "6376\n", "6378\n", "6380\n", "6382\n", "6384\n", "6386\n", "6388\n", "6390\n", "6392\n", "6394\n", "6396\n", "6398\n", "6400\n", "6402\n", "6404\n", "6406\n", "6408\n", "6410\n", "6412\n", "6414\n", "6416\n", "6418\n", "6420\n", "6422\n", "6424\n", "6426\n", "6428\n", "6430\n", "6432\n", "6434\n", "6436\n", "6438\n", "6440\n", "6442\n", "6444\n", "6446\n", "6448\n", "6450\n", "6452\n", "6454\n", "6456\n", "6458\n", "6460\n", "6462\n", "6464\n", "6466\n", "6468\n", "6470\n", "6472\n", "6474\n", "6476\n", "6478\n", "6480\n", "6482\n", "6484\n", "6486\n", "6488\n", "6490\n", "6492\n", "6494\n", "6496\n", "6498\n", "6500\n", "6502\n", "6504\n", "6506\n", "6508\n", "6510\n", "6512\n", "6514\n", "6516\n", "6518\n", "6520\n", "6522\n", "6524\n", "6526\n", "6528\n", "6530\n", "6532\n", "6534\n", "6536\n", "6538\n", "6540\n", "6542\n", "6544\n", "6546\n", "6548\n", "6550\n", "6552\n", "6554\n", "6556\n", "6558\n", "6560\n", "6562\n", "6564\n", "6566\n", "6568\n", "6570\n", "6572\n", "6574\n", "6576\n", "6578\n", "6580\n", "6582\n", "6584\n", "6586\n", "6588\n", "6590\n", "6592\n", "6594\n", "6596\n", "6598\n", "6600\n", "6602\n", "6604\n", "6606\n", "6608\n", "6610\n", "6612\n", "6614\n", "6616\n", "6618\n", "6620\n", "6622\n", "6624\n", "6626\n", "6628\n", "6630\n", "6632\n", "6634\n", "6636\n", "6638\n", "6640\n", "6642\n", "6644\n", "6646\n", "6648\n", "6650\n", "6652\n", "6654\n", "6656\n", "6658\n", "6660\n", "6662\n", "6664\n", "6666\n", "6668\n", "6670\n", "6672\n", "6674\n", "6676\n", "6678\n", "6680\n", "6682\n", "6684\n", "6686\n", "6688\n", "6690\n", "6692\n", "6694\n", "6696\n", "6698\n", "6700\n", "6702\n", "6704\n", "6706\n", "6708\n", "6710\n", "6712\n", "6714\n", "6716\n", "6718\n", "6720\n", "6722\n", "6724\n", "6726\n", "6728\n", "6730\n", "6732\n", "6734\n", "6736\n", "6738\n", "6740\n", "6742\n", "6744\n", "6746\n", "6748\n", "6750\n", "6752\n", "6754\n", "6756\n", "6758\n", "6760\n", "6762\n", "6764\n", "6766\n", "6768\n", "6770\n", "6772\n", "6774\n", "6776\n", "6778\n", "6780\n", "6782\n", "6784\n", "6786\n", "6788\n", "6790\n", "6792\n", "6794\n", "6796\n", "6798\n", "6800\n", "6802\n", "6804\n", "6806\n", "6808\n", "6810\n", "6812\n", "6814\n", "6816\n", "6818\n", "6820\n", "6822\n", "6824\n", "6826\n", "6828\n", "6830\n", "6832\n", "6834\n", "6836\n", "6838\n", "6840\n", "6842\n", "6844\n", "6846\n", "6848\n", "6850\n", "6852\n", "6854\n", "6856\n", "6858\n", "6860\n", "6862\n", "6864\n", "6866\n", "6868\n", "6870\n", "6872\n", "6874\n", "6876\n", "6878\n", "6880\n", "6882\n", "6884\n", "6886\n", "6888\n", "6890\n", "6892\n", "6894\n", "6896\n", "6898\n", "6900\n", "6902\n", "6904\n", "6906\n", "6908\n", "6910\n", "6912\n", "6914\n", "6916\n", "6918\n", "6920\n", "6922\n", "6924\n", "6926\n", "6928\n", "6930\n", "6932\n", "6934\n", "6936\n", "6938\n", "6940\n", "6942\n", "6944\n", "6946\n", "6948\n", "6950\n", "6952\n", "6954\n", "6956\n", "6958\n", "6960\n", "6962\n", "6964\n", "6966\n", "6968\n", "6970\n", "6972\n", "6974\n", "6976\n", "6978\n", "6980\n", "6982\n", "6984\n", "6986\n", "6988\n", "6990\n", "6992\n", "6994\n", "6996\n", "6998\n", "7000\n", "7002\n", "7004\n", "7006\n", "7008\n", "7010\n", "7012\n", "7014\n", "7016\n", "7018\n", "7020\n", "7022\n", "7024\n", "7026\n", "7028\n", "7030\n", "7032\n", "7034\n", "7036\n", "7038\n", "7040\n", "7042\n", "7044\n", "7046\n", "7048\n", "7050\n", "7052\n", "7054\n", "7056\n", "7058\n", "7060\n", "7062\n", "7064\n", "7066\n", "7068\n", "7070\n", "7072\n", "7074\n", "7076\n", "7078\n", "7080\n", "7082\n", "7084\n", "7086\n", "7088\n", "7090\n", "7092\n", "7094\n", "7096\n", "7098\n", "7100\n", "7102\n", "7104\n", "7106\n", "7108\n", "7110\n", "7112\n", "7114\n", "7116\n", "7118\n", "7120\n", "7122\n", "7124\n", "7126\n", "7128\n", "7130\n", "7132\n", "7134\n", "7136\n", "7138\n", "7140\n", "7142\n", "7144\n", "7146\n", "7148\n", "7150\n", "7152\n", "7154\n", "7156\n", "7158\n", "7160\n", "7162\n", "7164\n", "7166\n", "7168\n", "7170\n", "7172\n", "7174\n", "7176\n", "7178\n", "7180\n", "7182\n", "7184\n", "7186\n", "7188\n", "7190\n", "7192\n", "7194\n", "7196\n", "7198\n", "7200\n", "7202\n", "7204\n", "7206\n", "7208\n", "7210\n", "7212\n", "7214\n", "7216\n", "7218\n", "7220\n", "7222\n", "7224\n", "7226\n", "7228\n", "7230\n", "7232\n", "7234\n", "7236\n", "7238\n", "7240\n", "7242\n", "7244\n", "7246\n", "7248\n", "7250\n", "7252\n", "7254\n", "7256\n", "7258\n", "7260\n", "7262\n", "7264\n", "7266\n", "7268\n", "7270\n", "7272\n", "7274\n", "7276\n", "7278\n", "7280\n", "7282\n", "7284\n", "7286\n", "7288\n", "7290\n", "7292\n", "7294\n", "7296\n", "7298\n", "7300\n", "7302\n", "7304\n", "7306\n", "7308\n", "7310\n", "7312\n", "7314\n", "7316\n", "7318\n", "7320\n", "7322\n", "7324\n", "7326\n", "7328\n", "7330\n", "7332\n", "7334\n", "7336\n", "7338\n", "7340\n", "7342\n", "7344\n", "7346\n", "7348\n", "7350\n", "7352\n", "7354\n", "7356\n", "7358\n", "7360\n", "7362\n", "7364\n", "7366\n", "7368\n", "7370\n", "7372\n", "7374\n", "7376\n", "7378\n", "7380\n", "7382\n", "7384\n", "7386\n", "7388\n", "7390\n", "7392\n", "7394\n", "7396\n", "7398\n", "7400\n", "7402\n", "7404\n", "7406\n", "7408\n", "7410\n", "7412\n", "7414\n", "7416\n", "7418\n", "7420\n", "7422\n", "7424\n", "7426\n", "7428\n", "7430\n", "7432\n", "7434\n", "7436\n", "7438\n", "7440\n", "7442\n", "7444\n", "7446\n", "7448\n", "7450\n", "7452\n", "7454\n", "7456\n", "7458\n", "7460\n", "7462\n", "7464\n", "7466\n", "7468\n", "7470\n", "7472\n", "7474\n", "7476\n", "7478\n", "7480\n", "7482\n", "7484\n", "7486\n", "7488\n", "7490\n", "7492\n", "7494\n", "7496\n", "7498\n", "7500\n", "7502\n", "7504\n", "7506\n", "7508\n", "7510\n", "7512\n", "7514\n", "7516\n", "7518\n", "7520\n", "7522\n", "7524\n", "7526\n", "7528\n", "7530\n", "7532\n", "7534\n", "7536\n", "7538\n", "7540\n", "7542\n", "7544\n", "7546\n", "7548\n", "7550\n", "7552\n", "7554\n", "7556\n", "7558\n", "7560\n", "7562\n", "7564\n", "7566\n", "7568\n", "7570\n", "7572\n", "7574\n", "7576\n", "7578\n", "7580\n", "7582\n", "7584\n", "7586\n", "7588\n", "7590\n", "7592\n", "7594\n", "7596\n", "7598\n", "7600\n", "7602\n", "7604\n", "7606\n", "7608\n", "7610\n", "7612\n", "7614\n", "7616\n", "7618\n", "7620\n", "7622\n", "7624\n", "7626\n", "7628\n", "7630\n", "7632\n", "7634\n", "7636\n", "7638\n", "7640\n", "7642\n", "7644\n", "7646\n", "7648\n", "7650\n", "7652\n", "7654\n", "7656\n", "7658\n", "7660\n", "7662\n", "7664\n", "7666\n", "7668\n", "7670\n", "7672\n", "7674\n", "7676\n", "7678\n", "7680\n", "7682\n", "7684\n", "7686\n", "7688\n", "7690\n", "7692\n", "7694\n", "7696\n", "7698\n", "7700\n", "7702\n", "7704\n", "7706\n", "7708\n", "7710\n", "7712\n", "7714\n", "7716\n", "7718\n", "7720\n", "7722\n", "7724\n", "7726\n", "7728\n", "7730\n", "7732\n", "7734\n", "7736\n", "7738\n", "7740\n", "7742\n", "7744\n", "7746\n", "7748\n", "7750\n", "7752\n", "7754\n", "7756\n", "7758\n", "7760\n", "7762\n", "7764\n", "7766\n", "7768\n", "7770\n", "7772\n", "7774\n", "7776\n", "7778\n", "7780\n", "7782\n", "7784\n", "7786\n", "7788\n", "7790\n", "7792\n", "7794\n", "7796\n", "7798\n", "7800\n", "7802\n", "7804\n", "7806\n", "7808\n", "7810\n", "7812\n", "7814\n", "7816\n", "7818\n", "7820\n", "7822\n", "7824\n", "7826\n", "7828\n", "7830\n", "7832\n", "7834\n", "7836\n", "7838\n", "7840\n", "7842\n", "7844\n", "7846\n", "7848\n", "7850\n", "7852\n", "7854\n", "7856\n", "7858\n", "7860\n", "7862\n", "7864\n", "7866\n", "7868\n", "7870\n", "7872\n", "7874\n", "7876\n", "7878\n", "7880\n", "7882\n", "7884\n", "7886\n", "7888\n", "7890\n", "7892\n", "7894\n", "7896\n", "7898\n", "7900\n", "7902\n", "7904\n", "7906\n", "7908\n", "7910\n", "7912\n", "7914\n", "7916\n", "7918\n", "7920\n", "7922\n", "7924\n", "7926\n", "7928\n", "7930\n", "7932\n", "7934\n", "7936\n", "7938\n", "7940\n", "7942\n", "7944\n", "7946\n", "7948\n", "7950\n", "7952\n", "7954\n", "7956\n", "7958\n", "7960\n", "7962\n", "7964\n", "7966\n", "7968\n", "7970\n", "7972\n", "7974\n", "7976\n", "7978\n", "7980\n", "7982\n", "7984\n", "7986\n", "7988\n", "7990\n", "7992\n", "7994\n", "7996\n", "7998\n", "8000\n", "8002\n", "8004\n", "8006\n", "8008\n", "8010\n", "8012\n", "8014\n", "8016\n", "8018\n", "8020\n", "8022\n", "8024\n", "8026\n", "8028\n", "8030\n", "8032\n", "8034\n", "8036\n", "8038\n", "8040\n", "8042\n", "8044\n", "8046\n", "8048\n", "8050\n", "8052\n", "8054\n", "8056\n", "8058\n", "8060\n", "8062\n", "8064\n", "8066\n", "8068\n", "8070\n", "8072\n", "8074\n", "8076\n", "8078\n", "8080\n", "8082\n", "8084\n", "8086\n", "8088\n", "8090\n", "8092\n", "8094\n", "8096\n", "8098\n", "8100\n", "8102\n", "8104\n", "8106\n", "8108\n", "8110\n", "8112\n", "8114\n", "8116\n", "8118\n", "8120\n", "8122\n", "8124\n", "8126\n", "8128\n", "8130\n", "8132\n", "8134\n", "8136\n", "8138\n", "8140\n", "8142\n", "8144\n", "8146\n", "8148\n", "8150\n", "8152\n", "8154\n", "8156\n", "8158\n", "8160\n", "8162\n", "8164\n", "8166\n", "8168\n", "8170\n", "8172\n", "8174\n", "8176\n", "8178\n", "8180\n", "8182\n", "8184\n", "8186\n", "8188\n", "8190\n", "8192\n", "8194\n", "8196\n", "8198\n", "8200\n", "8202\n", "8204\n", "8206\n", "8208\n", "8210\n", "8212\n", "8214\n", "8216\n", "8218\n", "8220\n", "8222\n", "8224\n", "8226\n", "8228\n", "8230\n", "8232\n", "8234\n", "8236\n", "8238\n", "8240\n", "8242\n", "8244\n", "8246\n", "8248\n", "8250\n", "8252\n", "8254\n", "8256\n", "8258\n", "8260\n", "8262\n", "8264\n", "8266\n", "8268\n", "8270\n", "8272\n", "8274\n", "8276\n", "8278\n", "8280\n", "8282\n", "8284\n", "8286\n", "8288\n", "8290\n", "8292\n", "8294\n", "8296\n", "8298\n", "8300\n", "8302\n", "8304\n", "8306\n", "8308\n", "8310\n", "8312\n", "8314\n", "8316\n", "8318\n", "8320\n", "8322\n", "8324\n", "8326\n", "8328\n", "8330\n", "8332\n", "8334\n", "8336\n", "8338\n", "8340\n", "8342\n", "8344\n", "8346\n", "8348\n", "8350\n", "8352\n", "8354\n", "8356\n", "8358\n", "8360\n", "8362\n", "8364\n", "8366\n", "8368\n", "8370\n", "8372\n", "8374\n", "8376\n", "8378\n", "8380\n", "8382\n", "8384\n", "8386\n", "8388\n", "8390\n", "8392\n", "8394\n", "8396\n", "8398\n", "8400\n", "8402\n", "8404\n", "8406\n", "8408\n", "8410\n", "8412\n", "8414\n", "8416\n", "8418\n", "8420\n", "8422\n", "8424\n", "8426\n", "8428\n", "8430\n", "8432\n", "8434\n", "8436\n", "8438\n", "8440\n", "8442\n", "8444\n", "8446\n", "8448\n", "8450\n", "8452\n", "8454\n", "8456\n", "8458\n", "8460\n", "8462\n", "8464\n", "8466\n", "8468\n", "8470\n", "8472\n", "8474\n", "8476\n", "8478\n", "8480\n", "8482\n", "8484\n", "8486\n", "8488\n", "8490\n", "8492\n", "8494\n", "8496\n", "8498\n", "8500\n", "8502\n", "8504\n", "8506\n", "8508\n", "8510\n", "8512\n", "8514\n", "8516\n", "8518\n", "8520\n", "8522\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "8524\n", "8526\n", "8528\n", "8530\n", "8532\n", "8534\n", "8536\n", "8538\n", "8540\n", "8542\n", "8544\n", "8546\n", "8548\n", "8550\n", "8552\n", "8554\n", "8556\n", "8558\n", "8560\n", "8562\n", "8564\n", "8566\n", "8568\n", "8570\n", "8572\n", "8574\n", "8576\n", "8578\n", "8580\n", "8582\n", "8584\n", "8586\n", "8588\n", "8590\n", "8592\n", "8594\n", "8596\n", "8598\n", "8600\n", "8602\n", "8604\n", "8606\n", "8608\n", "8610\n", "8612\n", "8614\n", "8616\n", "8618\n", "8620\n", "8622\n", "8624\n", "8626\n", "8628\n", "8630\n", "8632\n", "8634\n", "8636\n", "8638\n", "8640\n", "8642\n", "8644\n", "8646\n", "8648\n", "8650\n", "8652\n", "8654\n", "8656\n", "8658\n", "8660\n", "8662\n", "8664\n", "8666\n", "8668\n", "8670\n", "8672\n", "8674\n", "8676\n", "8678\n", "8680\n", "8682\n", "8684\n", "8686\n", "8688\n", "8690\n", "8692\n", "8694\n", "8696\n", "8698\n", "8700\n", "8702\n", "8704\n", "8706\n", "8708\n", "8710\n", "8712\n", "8714\n", "8716\n", "8718\n", "8720\n", "8722\n", "8724\n", "8726\n", "8728\n", "8730\n", "8732\n", "8734\n", "8736\n", "8738\n", "8740\n", "8742\n", "8744\n", "8746\n", "8748\n", "8750\n", "8752\n", "8754\n", "8756\n", "8758\n", "8760\n", "8762\n", "8764\n", "8766\n", "8768\n", "8770\n", "8772\n", "8774\n", "8776\n", "8778\n", "8780\n", "8782\n", "8784\n", "8786\n", "8788\n", "8790\n", "8792\n", "8794\n", "8796\n", "8798\n", "8800\n", "8802\n", "8804\n", "8806\n", "8808\n", "8810\n", "8812\n", "8814\n", "8816\n", "8818\n", "8820\n", "8822\n", "8824\n", "8826\n", "8828\n", "8830\n", "8832\n", "8834\n", "8836\n", "8838\n", "8840\n", "8842\n", "8844\n", "8846\n", "8848\n", "8850\n", "8852\n", "8854\n", "8856\n", "8858\n", "8860\n", "8862\n", "8864\n", "8866\n", "8868\n", "8870\n", "8872\n", "8874\n", "8876\n", "8878\n", "8880\n", "8882\n", "8884\n", "8886\n", "8888\n", "8890\n", "8892\n", "8894\n", "8896\n", "8898\n", "8900\n", "8902\n", "8904\n", "8906\n", "8908\n", "8910\n", "8912\n", "8914\n", "8916\n", "8918\n", "8920\n", "8922\n", "8924\n", "8926\n", "8928\n", "8930\n", "8932\n", "8934\n", "8936\n", "8938\n", "8940\n", "8942\n", "8944\n", "8946\n", "8948\n", "8950\n", "8952\n", "8954\n", "8956\n", "8958\n", "8960\n", "8962\n", "8964\n", "8966\n", "8968\n", "8970\n", "8972\n", "8974\n", "8976\n", "8978\n", "8980\n", "8982\n", "8984\n", "8986\n", "8988\n", "8990\n", "8992\n", "8994\n", "8996\n", "8998\n", "9000\n", "9002\n", "9004\n", "9006\n", "9008\n", "9010\n", "9012\n", "9014\n", "9016\n", "9018\n", "9020\n", "9022\n", "9024\n", "9026\n", "9028\n", "9030\n", "9032\n", "9034\n", "9036\n", "9038\n", "9040\n", "9042\n", "9044\n", "9046\n", "9048\n", "9050\n", "9052\n", "9054\n", "9056\n", "9058\n", "9060\n", "9062\n", "9064\n", "9066\n", "9068\n", "9070\n", "9072\n", "9074\n", "9076\n", "9078\n", "9080\n", "9082\n", "9084\n", "9086\n", "9088\n", "9090\n", "9092\n", "9094\n", "9096\n", "9098\n", "9100\n", "9102\n", "9104\n", "9106\n", "9108\n", "9110\n", "9112\n", "9114\n", "9116\n", "9118\n", "9120\n", "9122\n", "9124\n", "9126\n", "9128\n", "9130\n", "9132\n", "9134\n", "9136\n", "9138\n", "9140\n", "9142\n", "9144\n", "9146\n", "9148\n", "9150\n", "9152\n", "9154\n", "9156\n", "9158\n", "9160\n", "9162\n", "9164\n", "9166\n", "9168\n", "9170\n", "9172\n", "9174\n", "9176\n", "9178\n", "9180\n", "9182\n", "9184\n", "9186\n", "9188\n", "9190\n", "9192\n", "9194\n", "9196\n", "9198\n", "9200\n", "9202\n", "9204\n", "9206\n", "9208\n", "9210\n", "9212\n", "9214\n", "9216\n", "9218\n", "9220\n", "9222\n", "9224\n", "9226\n", "9228\n", "9230\n", "9232\n", "9234\n", "9236\n", "9238\n", "9240\n", "9242\n", "9244\n", "9246\n", "9248\n", "9250\n", "9252\n", "9254\n", "9256\n", "9258\n", "9260\n", "9262\n", "9264\n", "9266\n", "9268\n", "9270\n", "9272\n", "9274\n", "9276\n", "9278\n", "9280\n", "9282\n", "9284\n", "9286\n", "9288\n", "9290\n", "9292\n", "9294\n", "9296\n", "9298\n", "9300\n", "9302\n", "9304\n", "9306\n", "9308\n", "9310\n", "9312\n", "9314\n", "9316\n", "9318\n", "9320\n", "9322\n", "9324\n", "9326\n", "9328\n", "9330\n", "9332\n", "9334\n", "9336\n", "9338\n", "9340\n", "9342\n", "9344\n", "9346\n", "9348\n", "9350\n", "9352\n", "9354\n", "9356\n", "9358\n", "9360\n", "9362\n", "9364\n", "9366\n", "9368\n", "9370\n", "9372\n", "9374\n", "9376\n", "9378\n", "9380\n", "9382\n", "9384\n", "9386\n", "9388\n", "9390\n", "9392\n", "9394\n", "9396\n", "9398\n", "9400\n", "9402\n", "9404\n", "9406\n", "9408\n", "9410\n", "9412\n", "9414\n", "9416\n", "9418\n", "9420\n", "9422\n", "9424\n", "9426\n", "9428\n", "9430\n", "9432\n", "9434\n", "9436\n", "9438\n", "9440\n", "9442\n", "9444\n", "9446\n", "9448\n", "9450\n", "9452\n", "9454\n", "9456\n", "9458\n", "9460\n", "9462\n", "9464\n", "9466\n", "9468\n", "9470\n", "9472\n", "9474\n", "9476\n", "9478\n", "9480\n", "9482\n", "9484\n", "9486\n", "9488\n", "9490\n", "9492\n", "9494\n", "9496\n", "9498\n", "9500\n", "9502\n", "9504\n", "9506\n", "9508\n", "9510\n", "9512\n", "9514\n", "9516\n", "9518\n", "9520\n", "9522\n", "9524\n", "9526\n", "9528\n", "9530\n", "9532\n", "9534\n", "9536\n", "9538\n", "9540\n", "9542\n", "9544\n", "9546\n", "9548\n", "9550\n", "9552\n", "9554\n", "9556\n", "9558\n", "9560\n", "9562\n", "9564\n", "9566\n", "9568\n", "9570\n", "9572\n", "9574\n", "9576\n", "9578\n", "9580\n", "9582\n", "9584\n", "9586\n", "9588\n", "9590\n", "9592\n", "9594\n", "9596\n", "9598\n", "9600\n", "9602\n", "9604\n", "9606\n", "9608\n", "9610\n", "9612\n", "9614\n", "9616\n", "9618\n", "9620\n", "9622\n", "9624\n", "9626\n", "9628\n", "9630\n", "9632\n", "9634\n", "9636\n", "9638\n", "9640\n", "9642\n", "9644\n", "9646\n", "9648\n", "9650\n", "9652\n", "9654\n", "9656\n", "9658\n", "9660\n", "9662\n", "9664\n", "9666\n", "9668\n", "9670\n", "9672\n", "9674\n", "9676\n", "9678\n", "9680\n", "9682\n", "9684\n", "9686\n", "9688\n", "9690\n", "9692\n", "9694\n", "9696\n", "9698\n", "9700\n", "9702\n", "9704\n", "9706\n", "9708\n", "9710\n", "9712\n", "9714\n", "9716\n", "9718\n", "9720\n", "9722\n", "9724\n", "9726\n", "9728\n", "9730\n", "9732\n", "9734\n", "9736\n", "9738\n", "9740\n", "9742\n", "9744\n", "9746\n", "9748\n", "9750\n", "9752\n", "9754\n", "9756\n", "9758\n", "9760\n", "9762\n", "9764\n", "9766\n", "9768\n", "9770\n", "9772\n", "9774\n", "9776\n", "9778\n", "9780\n", "9782\n", "9784\n", "9786\n", "9788\n", "9790\n", "9792\n", "9794\n", "9796\n", "9798\n", "9800\n", "9802\n", "9804\n", "9806\n", "9808\n", "9810\n", "9812\n", "9814\n", "9816\n", "9818\n", "9820\n", "9822\n", "9824\n", "9826\n", "9828\n", "9830\n", "9832\n", "9834\n", "9836\n", "9838\n", "9840\n", "9842\n", "9844\n", "9846\n", "9848\n", "9850\n", "9852\n", "9854\n", "9856\n", "9858\n", "9860\n", "9862\n", "9864\n", "9866\n", "9868\n", "9870\n", "9872\n", "9874\n", "9876\n", "9878\n", "9880\n", "9882\n", "9884\n", "9886\n", "9888\n", "9890\n", "9892\n", "9894\n", "9896\n", "9898\n", "9900\n", "9902\n", "9904\n", "9906\n", "9908\n", "9910\n", "9912\n", "9914\n", "9916\n", "9918\n", "9920\n", "9922\n", "9924\n", "9926\n", "9928\n", "9930\n", "9932\n", "9934\n", "9936\n", "9938\n", "9940\n", "9942\n", "9944\n", "9946\n", "9948\n", "9950\n", "9952\n", "9954\n", "9956\n", "9958\n", "9960\n", "9962\n", "9964\n", "9966\n", "9968\n", "9970\n", "9972\n", "9974\n", "9976\n", "9978\n", "9980\n", "9982\n", "9984\n", "9986\n", "9988\n", "9990\n", "9992\n", "9994\n", "9996\n", "9998\n", "10000\n", "10002\n", "10004\n", "10006\n", "10008\n", "10010\n", "10012\n", "10014\n", "10016\n", "10018\n", "10020\n", "10022\n", "10024\n", "10026\n", "10028\n", "10030\n", "10032\n", "10034\n", "10036\n", "10038\n", "10040\n", "10042\n", "10044\n", "10046\n", "10048\n", "10050\n", "10052\n", "10054\n", "10056\n", "10058\n", "10060\n", "10062\n", "10064\n", "10066\n", "10068\n", "10070\n", "10072\n", "10074\n", "10076\n", "10078\n", "10080\n", "10082\n", "10084\n", "10086\n", "10088\n", "10090\n", "10092\n", "10094\n", "10096\n", "10098\n", "10100\n", "10102\n", "10104\n", "10106\n", "10108\n", "10110\n", "10112\n", "10114\n", "10116\n", "10118\n", "10120\n", "10122\n", "10124\n", "10126\n", "10128\n", "10130\n", "10132\n", "10134\n", "10136\n", "10138\n", "10140\n", "10142\n", "10144\n", "10146\n", "10148\n", "10150\n", "10152\n", "10154\n", "10156\n", "10158\n", "10160\n", "10162\n", "10164\n", "10166\n", "10168\n", "10170\n", "10172\n", "10174\n", "10176\n", "10178\n", "10180\n", "10182\n", "10184\n", "10186\n", "10188\n", "10190\n", "10192\n", "10194\n", "10196\n", "10198\n", "10200\n", "10202\n", "10204\n", "10206\n", "10208\n", "10210\n", "10212\n", "10214\n", "10216\n", "10218\n", "10220\n", "10222\n", "10224\n", "10226\n", "10228\n", "10230\n", "10232\n", "10234\n", "10236\n", "10238\n", "10240\n", "10242\n", "10244\n", "10246\n", "10248\n", "10250\n", "10252\n", "10254\n", "10256\n", "10258\n", "10260\n", "10262\n", "10264\n", "10266\n", "10268\n", "10270\n", "10272\n", "10274\n", "10276\n", "10278\n", "10280\n", "10282\n", "10284\n", "10286\n", "10288\n", "10290\n", "10292\n", "10294\n", "10296\n", "10298\n", "10300\n", "10302\n", "10304\n", "10306\n", "10308\n", "10310\n", "10312\n", "10314\n", "10316\n", "10318\n", "10320\n", "10322\n", "10324\n", "10326\n", "10328\n", "10330\n", "10332\n", "10334\n", "10336\n", "10338\n", "10340\n", "10342\n", "10344\n", "10346\n", "10348\n", "10350\n", "10352\n", "10354\n", "10356\n", "10358\n", "10360\n", "10362\n", "10364\n", "10366\n", "10368\n", "10370\n", "10372\n", "10374\n", "10376\n", "10378\n", "10380\n", "10382\n", "10384\n", "10386\n", "10388\n", "10390\n", "10392\n", "10394\n", "10396\n", "10398\n", "10400\n", "10402\n", "10404\n", "10406\n", "10408\n", "10410\n", "10412\n", "10414\n", "10416\n", "10418\n", "10420\n", "10422\n", "10424\n", "10426\n", "10428\n", "10430\n", "10432\n", "10434\n", "10436\n", "10438\n", "10440\n", "10442\n", "10444\n", "10446\n", "10448\n", "10450\n", "10452\n", "10454\n", "10456\n", "10458\n", "10460\n", "10462\n", "10464\n", "10466\n", "10468\n", "10470\n", "10472\n", "10474\n", "10476\n", "10478\n", "10480\n", "10482\n", "10484\n", "10486\n", "10488\n", "10490\n", "10492\n", "10494\n", "10496\n", "10498\n", "10500\n", "10502\n", "10504\n", "10506\n", "10508\n", "10510\n", "10512\n", "10514\n", "10516\n", "10518\n", "10520\n", "10522\n", "10524\n", "10526\n", "10528\n", "10530\n", "10532\n", "10534\n", "10536\n", "10538\n", "10540\n", "10542\n", "10544\n", "10546\n", "10548\n", "10550\n", "10552\n", "10554\n", "10556\n", "10558\n", "10560\n", "10562\n", "10564\n", "10566\n", "10568\n", "10570\n", "10572\n", "10574\n", "10576\n", "10578\n", "10580\n", "10582\n", "10584\n", "10586\n", "10588\n", "10590\n", "10592\n", "10594\n", "10596\n", "10598\n", "10600\n", "10602\n", "10604\n", "10606\n", "10608\n", "10610\n", "10612\n", "10614\n", "10616\n", "10618\n", "10620\n", "10622\n", "10624\n", "10626\n", "10628\n", "10630\n", "10632\n", "10634\n", "10636\n", "10638\n", "10640\n", "10642\n", "10644\n", "10646\n", "10648\n", "10650\n", "10652\n", "10654\n", "10656\n", "10658\n", "10660\n", "10662\n", "10664\n", "10666\n", "10668\n", "10670\n", "10672\n", "10674\n", "10676\n", "10678\n", "10680\n", "10682\n", "10684\n", "10686\n", "10688\n", "10690\n", "10692\n", "10694\n", "10696\n", "10698\n", "10700\n", "10702\n", "10704\n", "10706\n", "10708\n", "10710\n", "10712\n", "10714\n", "10716\n", "10718\n", "10720\n", "10722\n", "10724\n", "10726\n", "10728\n", "10730\n", "10732\n", "10734\n", "10736\n", "10738\n", "10740\n", "10742\n", "10744\n", "10746\n", "10748\n", "10750\n", "10752\n", "10754\n", "10756\n", "10758\n", "10760\n", "10762\n", "10764\n", "10766\n", "10768\n", "10770\n", "10772\n", "10774\n", "10776\n", "10778\n", "10780\n", "10782\n", "10784\n", "10786\n", "10788\n", "10790\n", "10792\n", "10794\n", "10796\n", "10798\n", "10800\n", "10802\n", "10804\n", "10806\n", "10808\n", "10810\n", "10812\n", "10814\n", "10816\n", "10818\n", "10820\n", "10822\n", "10824\n", "10826\n", "10828\n", "10830\n", "10832\n", "10834\n", "10836\n", "10838\n", "10840\n", "10842\n", "10844\n", "10846\n", "10848\n", "10850\n", "10852\n", "10854\n", "10856\n", "10858\n", "10860\n", "10862\n", "10864\n", "10866\n", "10868\n", "10870\n", "10872\n", "10874\n", "10876\n", "10878\n", "10880\n", "10882\n", "10884\n", "10886\n", "10888\n", "10890\n", "10892\n", "10894\n", "10896\n", "10898\n", "10900\n", "10902\n", "10904\n", "10906\n", "10908\n", "10910\n", "10912\n", "10914\n", "10916\n", "10918\n", "10920\n", "10922\n", "10924\n", "10926\n", "10928\n", "10930\n", "10932\n", "10934\n", "10936\n", "10938\n", "10940\n", "10942\n", "10944\n", "10946\n", "10948\n", "10950\n", "10952\n", "10954\n", "10956\n", "10958\n", "10960\n", "10962\n", "10964\n", "10966\n", "10968\n", "10970\n", "10972\n", "10974\n", "10976\n", "10978\n", "10980\n", "10982\n", "10984\n", "10986\n", "10988\n", "10990\n", "10992\n", "10994\n", "10996\n", "10998\n", "11000\n", "11002\n", "11004\n", "11006\n", "11008\n", "11010\n", "11012\n", "11014\n", "11016\n", "11018\n", "11020\n", "11022\n", "11024\n", "11026\n", "11028\n", "11030\n", "11032\n", "11034\n", "11036\n", "11038\n", "11040\n", "11042\n", "11044\n", "11046\n", "11048\n", "11050\n", "11052\n", "11054\n", "11056\n", "11058\n", "11060\n", "11062\n", "11064\n", "11066\n", "11068\n", "11070\n", "11072\n", "11074\n", "11076\n", "11078\n", "11080\n", "11082\n", "11084\n", "11086\n", "11088\n", "11090\n", "11092\n", "11094\n", "11096\n", "11098\n", "11100\n", "11102\n", "11104\n", "11106\n", "11108\n", "11110\n", "11112\n", "11114\n", "11116\n", "11118\n", "11120\n", "11122\n", "11124\n", "11126\n", "11128\n", "11130\n", "11132\n", "11134\n", "11136\n", "11138\n", "11140\n", "11142\n", "11144\n", "11146\n", "11148\n", "11150\n", "11152\n", "11154\n", "11156\n", "11158\n", "11160\n", "11162\n", "11164\n", "11166\n", "11168\n", "11170\n", "11172\n", "11174\n", "11176\n", "11178\n", "11180\n", "11182\n", "11184\n", "11186\n", "11188\n", "11190\n", "11192\n", "11194\n", "11196\n", "11198\n", "11200\n", "11202\n", "11204\n", "11206\n", "11208\n", "11210\n", "11212\n", "11214\n", "11216\n", "11218\n", "11220\n", "11222\n", "11224\n", "11226\n", "11228\n", "11230\n", "11232\n", "11234\n", "11236\n", "11238\n", "11240\n", "11242\n", "11244\n", "11246\n", "11248\n", "11250\n", "11252\n", "11254\n", "11256\n", "11258\n", "11260\n", "11262\n", "11264\n", "11266\n", "11268\n", "11270\n", "11272\n", "11274\n", "11276\n", "11278\n", "11280\n", "11282\n", "11284\n", "11286\n", "11288\n", "11290\n", "11292\n", "11294\n", "11296\n", "11298\n", "11300\n", "11302\n", "11304\n", "11306\n", "11308\n", "11310\n", "11312\n", "11314\n", "11316\n", "11318\n", "11320\n", "11322\n", "11324\n", "11326\n", "11328\n", "11330\n", "11332\n", "11334\n", "11336\n", "11338\n", "11340\n", "11342\n", "11344\n", "11346\n", "11348\n", "11350\n", "11352\n", "11354\n", "11356\n", "11358\n", "11360\n", "11362\n", "11364\n", "11366\n", "11368\n", "11370\n", "11372\n", "11374\n", "11376\n", "11378\n", "11380\n", "11382\n", "11384\n", "11386\n", "11388\n", "11390\n", "11392\n", "11394\n", "11396\n", "11398\n", "11400\n", "11402\n", "11404\n", "11406\n", "11408\n", "11410\n", "11412\n", "11414\n", "11416\n", "11418\n", "11420\n", "11422\n", "11424\n", "11426\n", "11428\n", "11430\n", "11432\n", "11434\n", "11436\n", "11438\n", "11440\n", "11442\n", "11444\n", "11446\n", "11448\n", "11450\n", "11452\n", "11454\n", "11456\n", "11458\n", "11460\n", "11462\n", "11464\n", "11466\n", "11468\n", "11470\n", "11472\n", "11474\n", "11476\n", "11478\n", "11480\n", "11482\n", "11484\n", "11486\n", "11488\n", "11490\n", "11492\n", "11494\n", "11496\n", "11498\n", "11500\n", "11502\n", "11504\n", "11506\n", "11508\n", "11510\n", "11512\n", "11514\n", "11516\n", "11518\n", "11520\n", "11522\n", "11524\n", "11526\n", "11528\n", "11530\n", "11532\n", "11534\n", "11536\n", "11538\n", "11540\n", "11542\n", "11544\n", "11546\n", "11548\n", "11550\n", "11552\n", "11554\n", "11556\n", "11558\n", "11560\n", "11562\n", "11564\n", "11566\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "11568\n", "11570\n", "11572\n", "11574\n", "11576\n", "11578\n", "11580\n", "11582\n", "11584\n", "11586\n", "11588\n", "11590\n", "11592\n", "11594\n", "11596\n", "11598\n", "11600\n", "11602\n", "11604\n", "11606\n", "11608\n", "11610\n", "11612\n", "11614\n", "11616\n", "11618\n", "11620\n", "11622\n", "11624\n", "11626\n", "11628\n", "11630\n", "11632\n", "11634\n", "11636\n", "11638\n", "11640\n", "11642\n", "11644\n", "11646\n", "11648\n", "11650\n", "11652\n", "11654\n", "11656\n", "11658\n", "11660\n", "11662\n", "11664\n", "11666\n", "11668\n", "11670\n", "11672\n", "11674\n", "11676\n", "11678\n", "11680\n", "11682\n", "11684\n", "11686\n", "11688\n", "11690\n", "11692\n", "11694\n", "11696\n", "11698\n", "11700\n", "11702\n", "11704\n", "11706\n", "11708\n", "11710\n", "11712\n", "11714\n", "11716\n", "11718\n", "11720\n", "11722\n", "11724\n", "11726\n", "11728\n", "11730\n", "11732\n", "11734\n", "11736\n", "11738\n", "11740\n", "11742\n", "11744\n", "11746\n", "11748\n", "11750\n", "11752\n", "11754\n", "11756\n", "11758\n", "11760\n", "11762\n", "11764\n", "11766\n", "11768\n", "11770\n", "11772\n", "11774\n", "11776\n", "11778\n", "11780\n", "11782\n", "11784\n", "11786\n", "11788\n", "11790\n", "11792\n", "11794\n", "11796\n", "11798\n", "11800\n", "11802\n", "11804\n", "11806\n", "11808\n", "11810\n", "11812\n", "11814\n", "11816\n", "11818\n", "11820\n", "11822\n", "11824\n", "11826\n", "11828\n", "11830\n", "11832\n", "11834\n", "11836\n", "11838\n", "11840\n", "11842\n", "11844\n", "11846\n", "11848\n", "11850\n", "11852\n", "11854\n", "11856\n", "11858\n", "11860\n", "11862\n", "11864\n", "11866\n", "11868\n", "11870\n", "11872\n", "11874\n", "11876\n", "11878\n", "11880\n", "11882\n", "11884\n", "11886\n", "11888\n", "11890\n", "11892\n", "11894\n", "11896\n", "11898\n", "11900\n", "11902\n", "11904\n", "11906\n", "11908\n", "11910\n", "11912\n", "11914\n", "11916\n", "11918\n", "11920\n", "11922\n", "11924\n", "11926\n", "11928\n", "11930\n", "11932\n", "11934\n", "11936\n", "11938\n", "11940\n", "11942\n", "11944\n", "11946\n", "11948\n", "11950\n", "11952\n", "11954\n", "11956\n", "11958\n", "11960\n", "11962\n", "11964\n", "11966\n", "11968\n", "11970\n", "11972\n", "11974\n", "11976\n", "11978\n", "11980\n", "11982\n", "11984\n", "11986\n", "11988\n", "11990\n", "11992\n", "11994\n", "11996\n", "11998\n", "12000\n", "12002\n", "12004\n", "12006\n", "12008\n", "12010\n", "12012\n", "12014\n", "12016\n", "12018\n", "12020\n", "12022\n", "12024\n", "12026\n", "12028\n", "12030\n", "12032\n", "12034\n", "12036\n", "12038\n", "12040\n", "12042\n", "12044\n", "12046\n", "12048\n", "12050\n", "12052\n", "12054\n", "12056\n", "12058\n", "12060\n", "12062\n", "12064\n", "12066\n", "12068\n", "12070\n", "12072\n", "12074\n", "12076\n", "12078\n", "12080\n", "12082\n", "12084\n", "12086\n", "12088\n", "12090\n", "12092\n", "12094\n", "12096\n", "12098\n", "12100\n", "12102\n", "12104\n", "12106\n", "12108\n", "12110\n", "12112\n", "12114\n", "12116\n", "12118\n", "12120\n", "12122\n", "12124\n", "12126\n", "12128\n", "12130\n", "12132\n", "12134\n", "12136\n", "12138\n", "12140\n", "12142\n", "12144\n", "12146\n", "12148\n", "12150\n", "12152\n", "12154\n", "12156\n", "12158\n", "12160\n", "12162\n", "12164\n", "12166\n", "12168\n", "12170\n", "12172\n", "12174\n", "12176\n", "12178\n", "12180\n", "12182\n", "12184\n", "12186\n", "12188\n", "12190\n", "12192\n", "12194\n", "12196\n", "12198\n", "12200\n", "12202\n", "12204\n", "12206\n", "12208\n", "12210\n", "12212\n", "12214\n", "12216\n", "12218\n", "12220\n", "12222\n", "12224\n", "12226\n", "12228\n", "12230\n", "12232\n", "12234\n", "12236\n", "12238\n", "12240\n", "12242\n", "12244\n", "12246\n", "12248\n", "12250\n", "12252\n", "12254\n", "12256\n", "12258\n", "12260\n", "12262\n", "12264\n", "12266\n", "12268\n", "12270\n", "12272\n", "12274\n", "12276\n", "12278\n", "12280\n", "12282\n", "12284\n", "12286\n", "12288\n", "12290\n", "12292\n", "12294\n", "12296\n", "12298\n", "12300\n", "12302\n", "12304\n", "12306\n", "12308\n", "12310\n", "12312\n", "12314\n", "12316\n", "12318\n", "12320\n", "12322\n", "12324\n", "12326\n", "12328\n", "12330\n", "12332\n", "12334\n", "12336\n", "12338\n", "12340\n", "12342\n", "12344\n", "12346\n", "12348\n", "12350\n", "12352\n", "12354\n", "12356\n", "12358\n", "12360\n", "12362\n", "12364\n", "12366\n", "12368\n", "12370\n", "12372\n", "12374\n", "12376\n", "12378\n", "12380\n", "12382\n", "12384\n", "12386\n", "12388\n", "12390\n", "12392\n", "12394\n", "12396\n", "12398\n", "12400\n", "12402\n", "12404\n", "12406\n", "12408\n", "12410\n", "12412\n", "12414\n", "12416\n", "12418\n", "12420\n", "12422\n", "12424\n", "12426\n", "12428\n", "12430\n", "12432\n", "12434\n", "12436\n", "12438\n", "12440\n", "12442\n", "12444\n", "12446\n", "12448\n", "12450\n", "12452\n", "12454\n", "12456\n", "12458\n", "12460\n", "12462\n", "12464\n", "12466\n", "12468\n", "12470\n", "12472\n", "12474\n", "12476\n", "12478\n", "12480\n", "12482\n", "12484\n", "12486\n", "12488\n", "12490\n", "12492\n", "12494\n", "12496\n", "12498\n", "12500\n", "12502\n", "12504\n", "12506\n", "12508\n", "12510\n", "12512\n", "12514\n", "12516\n", "12518\n", "12520\n", "12522\n", "12524\n", "12526\n", "12528\n", "12530\n", "12532\n", "12534\n", "12536\n", "12538\n", "12540\n", "12542\n", "12544\n", "12546\n", "12548\n", "12550\n", "12552\n", "12554\n", "12556\n", "12558\n", "12560\n", "12562\n", "12564\n", "12566\n", "12568\n", "12570\n", "12572\n", "12574\n", "12576\n", "12578\n", "12580\n", "12582\n", "12584\n", "12586\n", "12588\n", "12590\n", "12592\n", "12594\n", "12596\n", "12598\n", "12600\n", "12602\n", "12604\n", "12606\n", "12608\n", "12610\n", "12612\n", "12614\n", "12616\n", "12618\n", "12620\n", "12622\n", "12624\n", "12626\n", "12628\n", "12630\n", "12632\n", "12634\n", "12636\n", "12638\n", "12640\n", "12642\n", "12644\n", "12646\n", "12648\n", "12650\n", "12652\n", "12654\n", "12656\n", "12658\n", "12660\n", "12662\n", "12664\n", "12666\n", "12668\n", "12670\n", "12672\n", "12674\n", "12676\n", "12678\n", "12680\n", "12682\n", "12684\n", "12686\n", "12688\n", "12690\n", "12692\n", "12694\n", "12696\n", "12698\n", "12700\n", "12702\n", "12704\n", "12706\n", "12708\n", "12710\n", "12712\n", "12714\n", "12716\n", "12718\n", "12720\n", "12722\n", "12724\n", "12726\n", "12728\n", "12730\n", "12732\n", "12734\n", "12736\n", "12738\n", "12740\n", "12742\n", "12744\n", "12746\n", "12748\n", "12750\n", "12752\n", "12754\n", "12756\n", "12758\n", "12760\n", "12762\n", "12764\n", "12766\n", "12768\n", "12770\n", "12772\n", "12774\n", "12776\n", "12778\n", "12780\n", "12782\n", "12784\n", "12786\n", "12788\n", "12790\n", "12792\n", "12794\n", "12796\n", "12798\n", "12800\n", "12802\n", "12804\n", "12806\n", "12808\n", "12810\n", "12812\n", "12814\n", "12816\n", "12818\n", "12820\n", "12822\n", "12824\n", "12826\n", "12828\n", "12830\n", "12832\n", "12834\n", "12836\n", "12838\n", "12840\n", "12842\n", "12844\n", "12846\n", "12848\n", "12850\n", "12852\n", "12854\n", "12856\n", "12858\n", "12860\n", "12862\n", "12864\n", "12866\n", "12868\n", "12870\n", "12872\n", "12874\n", "12876\n", "12878\n", "12880\n", "12882\n", "12884\n", "12886\n", "12888\n", "12890\n", "12892\n", "12894\n", "12896\n", "12898\n", "12900\n", "12902\n", "12904\n", "12906\n", "12908\n", "12910\n", "12912\n", "12914\n", "12916\n", "12918\n", "12920\n", "12922\n", "12924\n", "12926\n", "12928\n", "12930\n", "12932\n", "12934\n", "12936\n", "12938\n", "12940\n", "12942\n", "12944\n", "12946\n", "12948\n", "12950\n", "12952\n", "12954\n", "12956\n", "12958\n", "12960\n", "12962\n", "12964\n", "12966\n", "12968\n", "12970\n", "12972\n", "12974\n", "12976\n", "12978\n", "12980\n", "12982\n", "12984\n", "12986\n", "12988\n", "12990\n", "12992\n", "12994\n", "12996\n", "12998\n", "13000\n", "13002\n", "13004\n", "13006\n", "13008\n", "13010\n", "13012\n", "13014\n", "13016\n", "13018\n", "13020\n", "13022\n", "13024\n", "13026\n", "13028\n", "13030\n", "13032\n", "13034\n", "13036\n", "13038\n", "13040\n", "13042\n", "13044\n", "13046\n", "13048\n", "13050\n", "13052\n", "13054\n", "13056\n", "13058\n", "13060\n", "13062\n", "13064\n", "13066\n", "13068\n", "13070\n", "13072\n", "13074\n", "13076\n", "13078\n", "13080\n", "13082\n", "13084\n", "13086\n", "13088\n", "13090\n", "13092\n", "13094\n", "13096\n", "13098\n", "13100\n", "13102\n", "13104\n", "13106\n", "13108\n", "13110\n", "13112\n", "13114\n", "13116\n", "13118\n", "13120\n", "13122\n", "13124\n", "13126\n", "13128\n", "13130\n", "13132\n", "13134\n", "13136\n", "13138\n", "13140\n", "13142\n", "13144\n", "13146\n", "13148\n", "13150\n", "13152\n", "13154\n", "13156\n", "13158\n", "13160\n", "13162\n", "13164\n", "13166\n", "13168\n", "13170\n", "13172\n", "13174\n", "13176\n", "13178\n", "13180\n", "13182\n", "13184\n", "13186\n", "13188\n", "13190\n", "13192\n", "13194\n", "13196\n", "13198\n", "13200\n", "13202\n", "13204\n", "13206\n", "13208\n", "13210\n", "13212\n", "13214\n", "13216\n", "13218\n", "13220\n", "13222\n", "13224\n", "13226\n", "13228\n", "13230\n", "13232\n", "13234\n", "13236\n", "13238\n", "13240\n", "13242\n", "13244\n", "13246\n", "13248\n", "13250\n", "13252\n", "13254\n", "13256\n", "13258\n", "13260\n", "13262\n", "13264\n", "13266\n", "13268\n", "13270\n", "13272\n", "13274\n", "13276\n", "13278\n", "13280\n", "13282\n", "13284\n", "13286\n", "13288\n", "13290\n", "13292\n", "13294\n", "13296\n", "13298\n", "13300\n", "13302\n", "13304\n", "13306\n", "13308\n", "13310\n", "13312\n", "13314\n", "13316\n", "13318\n", "13320\n", "13322\n", "13324\n", "13326\n", "13328\n", "13330\n", "13332\n", "13334\n", "13336\n", "13338\n", "13340\n", "13342\n", "13344\n", "13346\n", "13348\n", "13350\n", "13352\n", "13354\n", "13356\n", "13358\n", "13360\n", "13362\n", "13364\n", "13366\n", "13368\n", "13370\n", "13372\n", "13374\n", "13376\n", "13378\n", "13380\n", "13382\n", "13384\n", "13386\n", "13388\n", "13390\n", "13392\n", "13394\n", "13396\n", "13398\n", "13400\n", "13402\n", "13404\n", "13406\n", "13408\n", "13410\n", "13412\n", "13414\n", "13416\n", "13418\n", "13420\n", "13422\n", "13424\n", "13426\n", "13428\n", "13430\n", "13432\n", "13434\n", "13436\n", "13438\n", "13440\n", "13442\n", "13444\n", "13446\n", "13448\n", "13450\n", "13452\n", "13454\n", "13456\n", "13458\n", "13460\n", "13462\n", "13464\n", "13466\n", "13468\n", "13470\n", "13472\n", "13474\n", "13476\n", "13478\n", "13480\n", "13482\n", "13484\n", "13486\n", "13488\n", "13490\n", "13492\n", "13494\n", "13496\n", "13498\n", "13500\n", "13502\n", "13504\n", "13506\n", "13508\n", "13510\n", "13512\n", "13514\n", "13516\n", "13518\n", "13520\n", "13522\n", "13524\n", "13526\n", "13528\n", "13530\n", "13532\n", "13534\n", "13536\n", "13538\n", "13540\n", "13542\n", "13544\n", "13546\n", "13548\n", "13550\n", "13552\n", "13554\n", "13556\n", "13558\n", "13560\n", "13562\n", "13564\n", "13566\n", "13568\n", "13570\n", "13572\n", "13574\n", "13576\n", "13578\n", "13580\n", "13582\n", "13584\n", "13586\n", "13588\n", "13590\n", "13592\n", "13594\n", "13596\n", "13598\n", "13600\n", "13602\n", "13604\n", "13606\n", "13608\n", "13610\n", "13612\n", "13614\n", "13616\n", "13618\n", "13620\n", "13622\n", "13624\n", "13626\n", "13628\n", "13630\n", "13632\n", "13634\n", "13636\n", "13638\n", "13640\n", "13642\n", "13644\n", "13646\n", "13648\n", "13650\n", "13652\n", "13654\n", "13656\n", "13658\n", "13660\n", "13662\n", "13664\n", "13666\n", "13668\n", "13670\n", "13672\n", "13674\n", "13676\n", "13678\n", "13680\n", "13682\n", "13684\n", "13686\n", "13688\n", "13690\n", "13692\n", "13694\n", "13696\n", "13698\n", "13700\n", "13702\n", "13704\n", "13706\n", "13708\n", "13710\n", "13712\n", "13714\n", "13716\n", "13718\n", "13720\n", "13722\n", "13724\n", "13726\n", "13728\n", "13730\n", "13732\n", "13734\n", "13736\n", "13738\n", "13740\n", "13742\n", "13744\n", "13746\n", "13748\n", "13750\n", "13752\n", "13754\n", "13756\n", "13758\n", "13760\n", "13762\n", "13764\n", "13766\n", "13768\n", "13770\n", "13772\n", "13774\n", "13776\n", "13778\n", "13780\n", "13782\n", "13784\n", "13786\n", "13788\n", "13790\n", "13792\n", "13794\n", "13796\n", "13798\n", "13800\n", "13802\n", "13804\n", "13806\n", "13808\n", "13810\n", "13812\n", "13814\n", "13816\n", "13818\n", "13820\n", "13822\n", "13824\n", "13826\n", "13828\n", "13830\n", "13832\n", "13834\n", "13836\n", "13838\n", "13840\n", "13842\n", "13844\n", "13846\n", "13848\n", "13850\n", "13852\n", "13854\n", "13856\n", "13858\n", "13860\n", "13862\n", "13864\n", "13866\n", "13868\n", "13870\n", "13872\n", "13874\n", "13876\n", "13878\n", "13880\n", "13882\n", "13884\n", "13886\n", "13888\n", "13890\n", "13892\n", "13894\n", "13896\n", "13898\n", "13900\n", "13902\n", "13904\n", "13906\n", "13908\n", "13910\n", "13912\n", "13914\n", "13916\n", "13918\n", "13920\n", "13922\n", "13924\n", "13926\n", "13928\n", "13930\n", "13932\n", "13934\n", "13936\n", "13938\n", "13940\n", "13942\n", "13944\n", "13946\n", "13948\n", "13950\n", "13952\n", "13954\n", "13956\n", "13958\n", "13960\n", "13962\n", "13964\n", "13966\n", "13968\n", "13970\n", "13972\n", "13974\n", "13976\n", "13978\n", "13980\n", "13982\n", "13984\n", "13986\n", "13988\n", "13990\n", "13992\n", "13994\n", "13996\n", "13998\n", "14000\n", "14002\n", "14004\n", "14006\n", "14008\n", "14010\n", "14012\n", "14014\n", "14016\n", "14018\n", "14020\n", "14022\n", "14024\n", "14026\n", "14028\n", "14030\n", "14032\n", "14034\n", "14036\n", "14038\n", "14040\n", "14042\n", "14044\n", "14046\n", "14048\n", "14050\n", "14052\n", "14054\n", "14056\n", "14058\n", "14060\n", "14062\n", "14064\n", "14066\n", "14068\n", "14070\n", "14072\n", "14074\n", "14076\n", "14078\n", "14080\n", "14082\n", "14084\n", "14086\n", "14088\n", "14090\n", "14092\n", "14094\n", "14096\n", "14098\n", "14100\n", "14102\n", "14104\n", "14106\n", "14108\n", "14110\n", "14112\n", "14114\n", "14116\n", "14118\n", "14120\n", "14122\n", "14124\n", "14126\n", "14128\n", "14130\n", "14132\n", "14134\n", "14136\n", "14138\n", "14140\n", "14142\n", "14144\n", "14146\n", "14148\n", "14150\n", "14152\n", "14154\n", "14156\n", "14158\n", "14160\n", "14162\n", "14164\n", "14166\n", "14168\n", "14170\n", "14172\n", "14174\n", "14176\n", "14178\n", "14180\n", "14182\n", "14184\n", "14186\n", "14188\n", "14190\n", "14192\n", "14194\n", "14196\n", "14198\n", "14200\n", "14202\n", "14204\n", "14206\n", "14208\n", "14210\n", "14212\n", "14214\n", "14216\n", "14218\n", "14220\n", "14222\n", "14224\n", "14226\n", "14228\n", "14230\n", "14232\n", "14234\n", "14236\n", "14238\n", "14240\n", "14242\n", "14244\n", "14246\n", "14248\n", "14250\n", "14252\n", "14254\n", "14256\n", "14258\n", "14260\n", "14262\n", "14264\n", "14266\n", "14268\n", "14270\n", "14272\n", "14274\n", "14276\n", "14278\n", "14280\n", "14282\n", "14284\n", "14286\n", "14288\n", "14290\n", "14292\n", "14294\n", "14296\n", "14298\n", "14300\n", "14302\n", "14304\n", "14306\n", "14308\n", "14310\n", "14312\n", "14314\n", "14316\n", "14318\n", "14320\n", "14322\n", "14324\n", "14326\n", "14328\n", "14330\n", "14332\n", "14334\n", "14336\n", "14338\n", "14340\n", "14342\n", "14344\n", "14346\n", "14348\n", "14350\n", "14352\n", "14354\n", "14356\n", "14358\n", "14360\n", "14362\n", "14364\n", "14366\n", "14368\n", "14370\n", "14372\n", "14374\n", "14376\n", "14378\n", "14380\n", "14382\n", "14384\n", "14386\n", "14388\n", "14390\n", "14392\n", "14394\n", "14396\n", "14398\n", "14400\n", "14402\n", "14404\n", "14406\n", "14408\n", "14410\n", "14412\n", "14414\n", "14416\n", "14418\n", "14420\n", "14422\n", "14424\n", "14426\n", "14428\n", "14430\n", "14432\n", "14434\n", "14436\n", "14438\n", "14440\n", "14442\n", "14444\n", "14446\n", "14448\n", "14450\n", "14452\n", "14454\n", "14456\n", "14458\n", "14460\n", "14462\n", "14464\n", "14466\n", "14468\n", "14470\n", "14472\n", "14474\n", "14476\n", "14478\n", "14480\n", "14482\n", "14484\n", "14486\n", "14488\n", "14490\n", "14492\n", "14494\n", "14496\n", "14498\n", "14500\n", "14502\n", "14504\n", "14506\n", "14508\n", "14510\n", "14512\n", "14514\n", "14516\n", "14518\n", "14520\n", "14522\n", "14524\n", "14526\n", "14528\n", "14530\n", "14532\n", "14534\n", "14536\n", "14538\n", "14540\n", "14542\n", "14544\n", "14546\n", "14548\n", "14550\n", "14552\n", "14554\n", "14556\n", "14558\n", "14560\n", "14562\n", "14564\n", "14566\n", "14568\n", "14570\n", "14572\n", "14574\n", "14576\n", "14578\n", "14580\n", "14582\n", "14584\n", "14586\n", "14588\n", "14590\n", "14592\n", "14594\n", "14596\n", "14598\n", "14600\n", "14602\n", "14604\n", "14606\n", "14608\n", "14610\n", "14612\n", "14614\n", "14616\n", "14618\n", "14620\n", "14622\n", "14624\n", "14626\n", "14628\n", "14630\n", "14632\n", "14634\n", "14636\n", "14638\n", "14640\n", "14642\n", "14644\n", "14646\n", "14648\n", "14650\n", "14652\n", "14654\n", "14656\n", "14658\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "14660\n", "14662\n", "14664\n", "14666\n", "14668\n", "14670\n", "14672\n", "14674\n", "14676\n", "14678\n", "14680\n", "14682\n", "14684\n", "14686\n", "14688\n", "14690\n", "14692\n", "14694\n", "14696\n", "14698\n", "14700\n", "14702\n", "14704\n", "14706\n", "14708\n", "14710\n", "14712\n", "14714\n", "14716\n", "14718\n", "14720\n", "14722\n", "14724\n", "14726\n", "14728\n", "14730\n", "14732\n", "14734\n", "14736\n", "14738\n", "14740\n", "14742\n", "14744\n", "14746\n", "14748\n", "14750\n", "14752\n", "14754\n", "14756\n", "14758\n", "14760\n", "14762\n", "14764\n", "14766\n", "14768\n", "14770\n", "14772\n", "14774\n", "14776\n", "14778\n", "14780\n", "14782\n", "14784\n", "14786\n", "14788\n", "14790\n", "14792\n", "14794\n", "14796\n", "14798\n", "14800\n", "14802\n", "14804\n", "14806\n", "14808\n", "14810\n", "14812\n", "14814\n", "14816\n", "14818\n", "14820\n", "14822\n", "14824\n", "14826\n", "14828\n", "14830\n", "14832\n", "14834\n", "14836\n", "14838\n", "14840\n", "14842\n", "14844\n", "14846\n", "14848\n", "14850\n", "14852\n", "14854\n", "14856\n", "14858\n", "14860\n", "14862\n", "14864\n", "14866\n", "14868\n", "14870\n", "14872\n", "14874\n", "14876\n", "14878\n", "14880\n", "14882\n", "14884\n", "14886\n", "14888\n", "14890\n", "14892\n", "14894\n", "14896\n", "14898\n", "14900\n", "14902\n", "14904\n", "14906\n", "14908\n", "14910\n", "14912\n", "14914\n", "14916\n", "14918\n", "14920\n", "14922\n", "14924\n", "14926\n", "14928\n", "14930\n", "14932\n", "14934\n", "14936\n", "14938\n", "14940\n", "14942\n", "14944\n", "14946\n", "14948\n", "14950\n", "14952\n", "14954\n", "14956\n", "14958\n", "14960\n", "14962\n", "14964\n", "14966\n", "14968\n", "14970\n", "14972\n", "14974\n", "14976\n", "14978\n", "14980\n", "14982\n", "14984\n", "14986\n", "14988\n", "14990\n", "14992\n", "14994\n", "14996\n", "14998\n", "15000\n", "15002\n", "15004\n", "15006\n", "15008\n", "15010\n", "15012\n", "15014\n", "15016\n", "15018\n", "15020\n", "15022\n", "15024\n", "15026\n", "15028\n", "15030\n", "15032\n", "15034\n", "15036\n", "15038\n", "15040\n", "15042\n", "15044\n", "15046\n", "15048\n", "15050\n", "15052\n", "15054\n", "15056\n", "15058\n", "15060\n", "15062\n", "15064\n", "15066\n", "15068\n", "15070\n", "15072\n", "15074\n", "15076\n", "15078\n", "15080\n", "15082\n", "15084\n", "15086\n", "15088\n", "15090\n", "15092\n", "15094\n", "15096\n", "15098\n", "15100\n", "15102\n", "15104\n", "15106\n", "15108\n", "15110\n", "15112\n", "15114\n", "15116\n", "15118\n", "15120\n", "15122\n", "15124\n", "15126\n", "15128\n", "15130\n", "15132\n", "15134\n", "15136\n", "15138\n", "15140\n", "15142\n", "15144\n", "15146\n", "15148\n", "15150\n", "15152\n", "15154\n", "15156\n", "15158\n", "15160\n", "15162\n", "15164\n", "15166\n", "15168\n", "15170\n", "15172\n", "15174\n", "15176\n", "15178\n", "15180\n", "15182\n", "15184\n", "15186\n", "15188\n", "15190\n", "15192\n", "15194\n", "15196\n", "15198\n", "15200\n", "15202\n", "15204\n", "15206\n", "15208\n", "15210\n", "15212\n", "15214\n", "15216\n", "15218\n", "15220\n", "15222\n", "15224\n", "15226\n", "15228\n", "15230\n", "15232\n", "15234\n", "15236\n", "15238\n", "15240\n", "15242\n", "15244\n", "15246\n", "15248\n", "15250\n", "15252\n", "15254\n", "15256\n", "15258\n", "15260\n", "15262\n", "15264\n", "15266\n", "15268\n", "15270\n", "15272\n", "15274\n", "15276\n", "15278\n", "15280\n", "15282\n", "15284\n", "15286\n", "15288\n", "15290\n", "15292\n", "15294\n", "15296\n", "15298\n", "15300\n", "15302\n", "15304\n", "15306\n", "15308\n", "15310\n", "15312\n", "15314\n", "15316\n", "15318\n", "15320\n", "15322\n", "15324\n", "15326\n", "15328\n", "15330\n", "15332\n", "15334\n", "15336\n", "15338\n", "15340\n", "15342\n", "15344\n", "15346\n", "15348\n", "15350\n", "15352\n", "15354\n", "15356\n", "15358\n", "15360\n", "15362\n", "15364\n", "15366\n", "15368\n", "15370\n", "15372\n", "15374\n", "15376\n", "15378\n", "15380\n", "15382\n", "15384\n", "15386\n", "15388\n", "15390\n", "15392\n", "15394\n", "15396\n", "15398\n", "15400\n", "15402\n", "15404\n", "15406\n", "15408\n", "15410\n", "15412\n", "15414\n", "15416\n", "15418\n", "15420\n", "15422\n", "15424\n", "15426\n", "15428\n", "15430\n", "15432\n", "15434\n", "15436\n", "15438\n", "15440\n", "15442\n", "15444\n", "15446\n", "15448\n", "15450\n", "15452\n", "15454\n", "15456\n", "15458\n", "15460\n", "15462\n", "15464\n", "15466\n", "15468\n", "15470\n", "15472\n", "15474\n", "15476\n", "15478\n", "15480\n", "15482\n", "15484\n", "15486\n", "15488\n", "15490\n", "15492\n", "15494\n", "15496\n", "15498\n", "15500\n", "15502\n", "15504\n", "15506\n", "15508\n", "15510\n", "15512\n", "15514\n", "15516\n", "15518\n", "15520\n", "15522\n", "15524\n", "15526\n", "15528\n", "15530\n", "15532\n", "15534\n", "15536\n", "15538\n", "15540\n", "15542\n", "15544\n", "15546\n", "15548\n", "15550\n", "15552\n", "15554\n", "15556\n", "15558\n", "15560\n", "15562\n", "15564\n", "15566\n", "15568\n", "15570\n", "15572\n", "15574\n", "15576\n", "15578\n", "15580\n", "15582\n", "15584\n", "15586\n", "15588\n", "15590\n", "15592\n", "15594\n", "15596\n", "15598\n", "15600\n", "15602\n", "15604\n", "15606\n", "15608\n", "15610\n", "15612\n", "15614\n", "15616\n", "15618\n", "15620\n", "15622\n", "15624\n", "15626\n", "15628\n", "15630\n", "15632\n", "15634\n", "15636\n", "15638\n", "15640\n", "15642\n", "15644\n", "15646\n", "15648\n", "15650\n", "15652\n", "15654\n", "15656\n", "15658\n", "15660\n", "15662\n", "15664\n", "15666\n", "15668\n", "15670\n", "15672\n", "15674\n", "15676\n", "15678\n", "15680\n", "15682\n", "15684\n", "15686\n", "15688\n", "15690\n", "15692\n", "15694\n", "15696\n", "15698\n", "15700\n", "15702\n", "15704\n", "15706\n", "15708\n", "15710\n", "15712\n", "15714\n", "15716\n", "15718\n", "15720\n", "15722\n", "15724\n", "15726\n", "15728\n", "15730\n", "15732\n", "15734\n", "15736\n", "15738\n", "15740\n", "15742\n", "15744\n", "15746\n", "15748\n", "15750\n", "15752\n", "15754\n", "15756\n", "15758\n", "15760\n", "15762\n", "15764\n", "15766\n", "15768\n", "15770\n", "15772\n", "15774\n", "15776\n", "15778\n", "15780\n", "15782\n", "15784\n", "15786\n", "15788\n", "15790\n", "15792\n", "15794\n", "15796\n", "15798\n", "15800\n", "15802\n", "15804\n", "15806\n", "15808\n", "15810\n", "15812\n", "15814\n", "15816\n", "15818\n", "15820\n", "15822\n", "15824\n", "15826\n", "15828\n", "15830\n", "15832\n", "15834\n", "15836\n", "15838\n", "15840\n", "15842\n", "15844\n", "15846\n", "15848\n", "15850\n", "15852\n", "15854\n", "15856\n", "15858\n", "15860\n", "15862\n", "15864\n", "15866\n", "15868\n", "15870\n", "15872\n", "15874\n", "15876\n", "15878\n", "15880\n", "15882\n", "15884\n", "15886\n", "15888\n", "15890\n", "15892\n", "15894\n", "15896\n", "15898\n", "15900\n", "15902\n", "15904\n", "15906\n", "15908\n", "15910\n", "15912\n", "15914\n", "15916\n", "15918\n", "15920\n", "15922\n", "15924\n", "15926\n", "15928\n", "15930\n", "15932\n", "15934\n", "15936\n", "15938\n", "15940\n", "15942\n", "15944\n", "15946\n", "15948\n", "15950\n", "15952\n", "15954\n", "15956\n", "15958\n", "15960\n", "15962\n", "15964\n", "15966\n", "15968\n", "15970\n", "15972\n", "15974\n", "15976\n", "15978\n", "15980\n", "15982\n", "15984\n", "15986\n", "15988\n", "15990\n", "15992\n", "15994\n", "15996\n", "15998\n", "16000\n", "16002\n", "16004\n", "16006\n", "16008\n", "16010\n", "16012\n", "16014\n", "16016\n", "16018\n", "16020\n", "16022\n", "16024\n", "16026\n", "16028\n", "16030\n", "16032\n", "16034\n", "16036\n", "16038\n", "16040\n", "16042\n", "16044\n", "16046\n", "16048\n", "16050\n", "16052\n", "16054\n", "16056\n", "16058\n", "16060\n", "16062\n", "16064\n", "16066\n", "16068\n", "16070\n", "16072\n", "16074\n", "16076\n", "16078\n", "16080\n", "16082\n", "16084\n", "16086\n", "16088\n", "16090\n", "16092\n", "16094\n", "16096\n", "16098\n", "16100\n", "16102\n", "16104\n", "16106\n", "16108\n", "16110\n", "16112\n", "16114\n", "16116\n", "16118\n", "16120\n", "16122\n", "16124\n", "16126\n", "16128\n", "16130\n", "16132\n", "16134\n", "16136\n", "16138\n", "16140\n", "16142\n", "16144\n", "16146\n", "16148\n", "16150\n", "16152\n", "16154\n", "16156\n", "16158\n", "16160\n", "16162\n", "16164\n", "16166\n", "16168\n", "16170\n", "16172\n", "16174\n", "16176\n", "16178\n", "16180\n", "16182\n", "16184\n", "16186\n", "16188\n", "16190\n", "16192\n", "16194\n", "16196\n", "16198\n", "16200\n", "16202\n", "16204\n", "16206\n", "16208\n", "16210\n", "16212\n", "16214\n", "16216\n", "16218\n", "16220\n", "16222\n", "16224\n", "16226\n", "16228\n", "16230\n", "16232\n", "16234\n", "16236\n", "16238\n", "16240\n", "16242\n", "16244\n", "16246\n", "16248\n", "16250\n", "16252\n", "16254\n", "16256\n", "16258\n", "16260\n", "16262\n", "16264\n", "16266\n", "16268\n", "16270\n", "16272\n", "16274\n", "16276\n", "16278\n", "16280\n", "16282\n", "16284\n", "16286\n", "16288\n", "16290\n", "16292\n", "16294\n", "16296\n", "16298\n", "16300\n", "16302\n", "16304\n", "16306\n", "16308\n", "16310\n", "16312\n", "16314\n", "16316\n", "16318\n", "16320\n", "16322\n", "16324\n", "16326\n", "16328\n", "16330\n", "16332\n", "16334\n", "16336\n", "16338\n", "16340\n", "16342\n", "16344\n", "16346\n", "16348\n", "16350\n", "16352\n", "16354\n", "16356\n", "16358\n", "16360\n", "16362\n", "16364\n", "16366\n", "16368\n", "16370\n", "16372\n", "16374\n", "16376\n", "16378\n", "16380\n", "16382\n", "16384\n", "16386\n", "16388\n", "16390\n", "16392\n", "16394\n", "16396\n", "16398\n", "16400\n", "16402\n", "16404\n", "16406\n", "16408\n", "16410\n", "16412\n", "16414\n", "16416\n", "16418\n", "16420\n", "16422\n", "16424\n", "16426\n", "16428\n", "16430\n", "16432\n", "16434\n", "16436\n", "16438\n", "16440\n", "16442\n", "16444\n", "16446\n", "16448\n", "16450\n", "16452\n", "16454\n", "16456\n", "16458\n", "16460\n", "16462\n", "16464\n", "16466\n", "16468\n", "16470\n", "16472\n", "16474\n", "16476\n", "16478\n", "16480\n", "16482\n", "16484\n", "16486\n", "16488\n", "16490\n", "16492\n", "16494\n", "16496\n", "16498\n", "16500\n", "16502\n", "16504\n", "16506\n", "16508\n", "16510\n", "16512\n", "16514\n", "16516\n", "16518\n", "16520\n", "16522\n", "16524\n", "16526\n", "16528\n", "16530\n", "16532\n", "16534\n", "16536\n", "16538\n", "16540\n", "16542\n", "16544\n", "16546\n", "16548\n", "16550\n", "16552\n", "16554\n", "16556\n", "16558\n", "16560\n", "16562\n", "16564\n", "16566\n", "16568\n", "16570\n", "16572\n", "16574\n", "16576\n", "16578\n", "16580\n", "16582\n", "16584\n", "16586\n", "16588\n", "16590\n", "16592\n", "16594\n", "16596\n", "16598\n", "16600\n", "16602\n", "16604\n", "16606\n", "16608\n", "16610\n", "16612\n", "16614\n", "16616\n", "16618\n", "16620\n", "16622\n", "16624\n", "16626\n", "16628\n", "16630\n", "16632\n", "16634\n", "16636\n", "16638\n", "16640\n", "16642\n", "16644\n", "16646\n", "16648\n", "16650\n", "16652\n", "16654\n", "16656\n", "16658\n", "16660\n", "16662\n", "16664\n", "16666\n", "16668\n", "16670\n", "16672\n", "16674\n", "16676\n", "16678\n", "16680\n", "16682\n", "16684\n", "16686\n", "16688\n", "16690\n", "16692\n", "16694\n", "16696\n", "16698\n", "16700\n", "16702\n", "16704\n", "16706\n", "16708\n", "16710\n", "16712\n", "16714\n", "16716\n", "16718\n", "16720\n", "16722\n", "16724\n", "16726\n", "16728\n", "16730\n", "16732\n", "16734\n", "16736\n", "16738\n", "16740\n", "16742\n", "16744\n", "16746\n", "16748\n", "16750\n", "16752\n", "16754\n", "16756\n", "16758\n", "16760\n", "16762\n", "16764\n", "16766\n", "16768\n", "16770\n", "16772\n", "16774\n", "16776\n", "16778\n", "16780\n", "16782\n", "16784\n", "16786\n", "16788\n", "16790\n", "16792\n", "16794\n", "16796\n", "16798\n", "16800\n", "16802\n", "16804\n", "16806\n", "16808\n", "16810\n", "16812\n", "16814\n", "16816\n", "16818\n", "16820\n", "16822\n", "16824\n", "16826\n", "16828\n", "16830\n", "16832\n", "16834\n", "16836\n", "16838\n", "16840\n", "16842\n", "16844\n", "16846\n", "16848\n", "16850\n", "16852\n", "16854\n", "16856\n", "16858\n", "16860\n", "16862\n", "16864\n", "16866\n", "16868\n", "16870\n", "16872\n", "16874\n", "16876\n", "16878\n", "16880\n", "16882\n", "16884\n", "16886\n", "16888\n", "16890\n", "16892\n", "16894\n", "16896\n", "16898\n", "16900\n", "16902\n", "16904\n", "16906\n", "16908\n", "16910\n", "16912\n", "16914\n", "16916\n", "16918\n", "16920\n", "16922\n", "16924\n", "16926\n", "16928\n", "16930\n", "16932\n", "16934\n", "16936\n", "16938\n", "16940\n", "16942\n", "16944\n", "16946\n", "16948\n", "16950\n", "16952\n", "16954\n", "16956\n", "16958\n", "16960\n", "16962\n", "16964\n", "16966\n", "16968\n", "16970\n", "16972\n", "16974\n", "16976\n", "16978\n", "16980\n", "16982\n", "16984\n", "16986\n", "16988\n", "16990\n", "16992\n", "16994\n", "16996\n", "16998\n", "17000\n", "17002\n", "17004\n", "17006\n", "17008\n", "17010\n", "17012\n", "17014\n", "17016\n", "17018\n", "17020\n", "17022\n", "17024\n", "17026\n", "17028\n", "17030\n", "17032\n", "17034\n", "17036\n", "17038\n", "17040\n", "17042\n", "17044\n", "17046\n", "17048\n", "17050\n", "17052\n", "17054\n", "17056\n", "17058\n", "17060\n", "17062\n", "17064\n", "17066\n", "17068\n", "17070\n", "17072\n", "17074\n", "17076\n", "17078\n", "17080\n", "17082\n", "17084\n", "17086\n", "17088\n", "17090\n", "17092\n", "17094\n", "17096\n", "17098\n", "17100\n", "17102\n", "17104\n", "17106\n", "17108\n", "17110\n", "17112\n", "17114\n", "17116\n", "17118\n", "17120\n", "17122\n", "17124\n", "17126\n", "17128\n", "17130\n", "17132\n", "17134\n", "17136\n", "17138\n", "17140\n", "17142\n", "17144\n", "17146\n", "17148\n", "17150\n", "17152\n", "17154\n", "17156\n", "17158\n", "17160\n", "17162\n", "17164\n", "17166\n", "17168\n", "17170\n", "17172\n", "17174\n", "17176\n", "17178\n", "17180\n", "17182\n", "17184\n", "17186\n", "17188\n", "17190\n", "17192\n", "17194\n", "17196\n", "17198\n", "17200\n", "17202\n", "17204\n", "17206\n", "17208\n", "17210\n", "17212\n", "17214\n", "17216\n", "17218\n", "17220\n", "17222\n", "17224\n", "17226\n", "17228\n", "17230\n", "17232\n", "17234\n", "17236\n", "17238\n", "17240\n", "17242\n", "17244\n", "17246\n", "17248\n", "17250\n", "17252\n", "17254\n", "17256\n", "17258\n", "17260\n", "17262\n", "17264\n", "17266\n", "17268\n", "17270\n", "17272\n", "17274\n", "17276\n", "17278\n", "17280\n", "17282\n", "17284\n", "17286\n", "17288\n", "17290\n", "17292\n", "17294\n", "17296\n", "17298\n", "17300\n", "17302\n", "17304\n", "17306\n", "17308\n", "17310\n", "17312\n", "17314\n", "17316\n", "17318\n", "17320\n", "17322\n", "17324\n", "17326\n", "17328\n", "17330\n", "17332\n", "17334\n", "17336\n", "17338\n", "17340\n", "17342\n", "17344\n", "17346\n", "17348\n", "17350\n", "17352\n", "17354\n", "17356\n", "17358\n", "17360\n", "17362\n", "17364\n", "17366\n", "17368\n", "17370\n", "17372\n", "17374\n", "17376\n", "17378\n", "17380\n", "17382\n", "17384\n", "17386\n", "17388\n", "17390\n", "17392\n", "17394\n", "17396\n", "17398\n", "17400\n", "17402\n", "17404\n", "17406\n", "17408\n", "17410\n", "17412\n", "17414\n", "17416\n", "17418\n", "17420\n", "17422\n", "17424\n", "17426\n", "17428\n", "17430\n", "17432\n", "17434\n", "17436\n", "17438\n", "17440\n", "17442\n", "17444\n", "17446\n", "17448\n", "17450\n", "17452\n", "17454\n", "17456\n", "17458\n", "17460\n", "17462\n", "17464\n", "17466\n", "17468\n", "17470\n", "17472\n", "17474\n", "17476\n", "17478\n", "17480\n", "17482\n", "17484\n", "17486\n", "17488\n", "17490\n", "17492\n", "17494\n", "17496\n", "17498\n", "17500\n", "17502\n", "17504\n", "17506\n", "17508\n", "17510\n", "17512\n", "17514\n", "17516\n", "17518\n", "17520\n", "17522\n", "17524\n", "17526\n", "17528\n", "17530\n", "17532\n", "17534\n", "17536\n", "17538\n", "17540\n", "17542\n", "17544\n", "17546\n", "17548\n", "17550\n", "17552\n", "17554\n", "17556\n", "17558\n", "17560\n", "17562\n", "17564\n", "17566\n", "17568\n", "17570\n", "17572\n", "17574\n", "17576\n", "17578\n", "17580\n", "17582\n", "17584\n", "17586\n", "17588\n", "17590\n", "17592\n", "17594\n", "17596\n", "17598\n", "17600\n", "17602\n", "17604\n", "17606\n", "17608\n", "17610\n", "17612\n", "17614\n", "17616\n", "17618\n", "17620\n", "17622\n", "17624\n", "17626\n", "17628\n", "17630\n", "17632\n", "17634\n", "17636\n", "17638\n", "17640\n", "17642\n", "17644\n", "17646\n", "17648\n", "17650\n", "17652\n", "17654\n", "17656\n", "17658\n", "17660\n", "17662\n", "17664\n", "17666\n", "17668\n", "17670\n", "17672\n", "17674\n", "17676\n", "17678\n", "17680\n", "17682\n", "17684\n", "17686\n", "17688\n", "17690\n", "17692\n", "17694\n", "17696\n", "17698\n", "17700\n", "17702\n", "17704\n", "17706\n", "17708\n", "17710\n", "17712\n", "17714\n", "17716\n", "17718\n", "17720\n", "17722\n", "17724\n", "17726\n", "17728\n", "17730\n", "17732\n", "17734\n", "17736\n", "17738\n", "17740\n", "17742\n", "17744\n", "17746\n", "17748\n", "17750\n", "17752\n", "17754\n", "17756\n", "17758\n", "17760\n", "17762\n", "17764\n", "17766\n", "17768\n", "17770\n", "17772\n", "17774\n", "17776\n", "17778\n", "17780\n", "17782\n", "17784\n", "17786\n", "17788\n", "17790\n", "17792\n", "17794\n", "17796\n", "17798\n", "17800\n", "17802\n", "17804\n", "17806\n", "17808\n", "17810\n", "17812\n", "17814\n", "17816\n", "17818\n", "17820\n", "17822\n", "17824\n", "17826\n", "17828\n", "17830\n", "17832\n", "17834\n", "17836\n", "17838\n", "17840\n", "17842\n", "17844\n", "17846\n", "17848\n", "17850\n", "17852\n", "17854\n", "17856\n", "17858\n", "17860\n", "17862\n", "17864\n", "17866\n", "17868\n", "17870\n", "17872\n", "17874\n", "17876\n", "17878\n", "17880\n", "17882\n", "17884\n", "17886\n", "17888\n", "17890\n", "17892\n", "17894\n", "17896\n", "17898\n", "17900\n", "17902\n", "17904\n", "17906\n", "17908\n", "17910\n", "17912\n", "17914\n", "17916\n", "17918\n", "17920\n", "17922\n", "17924\n", "17926\n", "17928\n", "17930\n", "17932\n", "17934\n", "17936\n", "17938\n", "17940\n", "17942\n", "17944\n", "17946\n", "17948\n", "17950\n", "17952\n", "17954\n", "17956\n", "17958\n", "17960\n", "17962\n", "17964\n", "17966\n", "17968\n", "17970\n", "17972\n", "17974\n", "17976\n", "17978\n", "17980\n", "17982\n", "17984\n", "17986\n", "17988\n", "17990\n", "17992\n", "17994\n", "17996\n", "17998\n", "18000\n", "18002\n", "18004\n", "18006\n", "18008\n", "18010\n", "18012\n", "18014\n", "18016\n", "18018\n", "18020\n", "18022\n", "18024\n", "18026\n", "18028\n", "18030\n", "18032\n", "18034\n", "18036\n", "18038\n", "18040\n", "18042\n", "18044\n", "18046\n", "18048\n", "18050\n", "18052\n", "18054\n", "18056\n", "18058\n", "18060\n", "18062\n", "18064\n", "18066\n", "18068\n", "18070\n", "18072\n", "18074\n", "18076\n", "18078\n", "18080\n", "18082\n", "18084\n", "18086\n", "18088\n", "18090\n", "18092\n", "18094\n", "18096\n", "18098\n", "18100\n", "18102\n", "18104\n", "18106\n", "18108\n", "18110\n", "18112\n", "18114\n", "18116\n", "18118\n", "18120\n", "18122\n", "18124\n", "18126\n", "18128\n", "18130\n", "18132\n", "18134\n", "18136\n", "18138\n", "18140\n", "18142\n", "18144\n", "18146\n", "18148\n", "18150\n", "18152\n", "18154\n", "18156\n", "18158\n", "18160\n", "18162\n", "18164\n", "18166\n", "18168\n", "18170\n", "18172\n", "18174\n", "18176\n", "18178\n", "18180\n", "18182\n", "18184\n", "18186\n", "18188\n", "18190\n", "18192\n", "18194\n", "18196\n", "18198\n", "18200\n", "18202\n", "18204\n", "18206\n", "18208\n", "18210\n", "18212\n", "18214\n", "18216\n", "18218\n", "18220\n", "18222\n", "18224\n", "18226\n", "18228\n", "18230\n", "18232\n", "18234\n", "18236\n", "18238\n", "18240\n", "18242\n", "18244\n", "18246\n", "18248\n", "18250\n", "18252\n", "18254\n", "18256\n", "18258\n", "18260\n", "18262\n", "18264\n", "18266\n", "18268\n", "18270\n", "18272\n", "18274\n", "18276\n", "18278\n", "18280\n", "18282\n", "18284\n", "18286\n", "18288\n", "18290\n", "18292\n", "18294\n", "18296\n", "18298\n", "18300\n", "18302\n", "18304\n", "18306\n", "18308\n", "18310\n", "18312\n", "18314\n", "18316\n", "18318\n", "18320\n", "18322\n", "18324\n", "18326\n", "18328\n", "18330\n", "18332\n", "18334\n", "18336\n", "18338\n", "18340\n", "18342\n", "18344\n", "18346\n", "18348\n", "18350\n", "18352\n", "18354\n", "18356\n", "18358\n", "18360\n", "18362\n", "18364\n", "18366\n", "18368\n", "18370\n", "18372\n", "18374\n", "18376\n", "18378\n", "18380\n", "18382\n", "18384\n", "18386\n", "18388\n", "18390\n", "18392\n", "18394\n", "18396\n", "18398\n", "18400\n", "18402\n", "18404\n", "18406\n", "18408\n", "18410\n", "18412\n", "18414\n", "18416\n", "18418\n", "18420\n", "18422\n", "18424\n", "18426\n", "18428\n", "18430\n", "18432\n", "18434\n", "18436\n", "18438\n", "18440\n", "18442\n", "18444\n", "18446\n", "18448\n", "18450\n", "18452\n", "18454\n", "18456\n", "18458\n", "18460\n", "18462\n", "18464\n", "18466\n", "18468\n", "18470\n", "18472\n", "18474\n", "18476\n", "18478\n", "18480\n", "18482\n", "18484\n", "18486\n", "18488\n", "18490\n", "18492\n", "18494\n", "18496\n", "18498\n", "18500\n", "18502\n", "18504\n", "18506\n", "18508\n", "18510\n", "18512\n", "18514\n", "18516\n", "18518\n", "18520\n", "18522\n", "18524\n", "18526\n", "18528\n", "18530\n", "18532\n", "18534\n", "18536\n", "18538\n", "18540\n", "18542\n", "18544\n", "18546\n", "18548\n", "18550\n", "18552\n", "18554\n", "18556\n", "18558\n", "18560\n", "18562\n", "18564\n", "18566\n", "18568\n", "18570\n", "18572\n", "18574\n", "18576\n", "18578\n", "18580\n", "18582\n", "18584\n", "18586\n", "18588\n", "18590\n", "18592\n", "18594\n", "18596\n", "18598\n", "18600\n", "18602\n", "18604\n", "18606\n", "18608\n", "18610\n", "18612\n", "18614\n", "18616\n", "18618\n", "18620\n", "18622\n", "18624\n", "18626\n", "18628\n", "18630\n", "18632\n", "18634\n", "18636\n", "18638\n", "18640\n", "18642\n", "18644\n", "18646\n", "18648\n", "18650\n", "18652\n", "18654\n", "18656\n", "18658\n", "18660\n", "18662\n", "18664\n", "18666\n", "18668\n", "18670\n", "18672\n", "18674\n", "18676\n", "18678\n", "18680\n", "18682\n", "18684\n", "18686\n", "18688\n", "18690\n", "18692\n", "18694\n", "18696\n", "18698\n", "18700\n", "18702\n", "18704\n", "18706\n", "18708\n", "18710\n", "18712\n", "18714\n", "18716\n", "18718\n", "18720\n", "18722\n", "18724\n", "18726\n", "18728\n", "18730\n", "18732\n", "18734\n", "18736\n", "18738\n", "18740\n", "18742\n", "18744\n", "18746\n", "18748\n", "18750\n", "18752\n", "18754\n", "18756\n", "18758\n", "18760\n", "18762\n", "18764\n", "18766\n", "18768\n", "18770\n", "18772\n", "18774\n", "18776\n", "18778\n", "18780\n", "18782\n", "18784\n", "18786\n", "18788\n", "18790\n", "18792\n", "18794\n", "18796\n", "18798\n", "18800\n", "18802\n", "18804\n", "18806\n", "18808\n", "18810\n", "18812\n", "18814\n", "18816\n", "18818\n", "18820\n", "18822\n", "18824\n", "18826\n", "18828\n", "18830\n", "18832\n", "18834\n", "18836\n", "18838\n", "18840\n", "18842\n", "18844\n", "18846\n", "18848\n", "18850\n", "18852\n", "18854\n", "18856\n", "18858\n", "18860\n", "18862\n", "18864\n", "18866\n", "18868\n", "18870\n", "18872\n", "18874\n", "18876\n", "18878\n", "18880\n", "18882\n", "18884\n", "18886\n", "18888\n", "18890\n", "18892\n", "18894\n", "18896\n", "18898\n", "18900\n", "18902\n", "18904\n", "18906\n", "18908\n", "18910\n", "18912\n", "18914\n", "18916\n", "18918\n", "18920\n", "18922\n", "18924\n", "18926\n", "18928\n", "18930\n", "18932\n", "18934\n", "18936\n", "18938\n", "18940\n", "18942\n", "18944\n", "18946\n", "18948\n", "18950\n", "18952\n", "18954\n", "18956\n", "18958\n", "18960\n", "18962\n", "18964\n", "18966\n", "18968\n", "18970\n", "18972\n", "18974\n", "18976\n", "18978\n", "18980\n", "18982\n", "18984\n", "18986\n", "18988\n", "18990\n", "18992\n", "18994\n", "18996\n", "18998\n", "19000\n", "19002\n", "19004\n", "19006\n", "19008\n", "19010\n", "19012\n", "19014\n", "19016\n", "19018\n", "19020\n", "19022\n", "19024\n", "19026\n", "19028\n", "19030\n", "19032\n", "19034\n", "19036\n", "19038\n", "19040\n", "19042\n", "19044\n", "19046\n", "19048\n", "19050\n", "19052\n", "19054\n", "19056\n", "19058\n", "19060\n", "19062\n", "19064\n", "19066\n", "19068\n", "19070\n", "19072\n", "19074\n", "19076\n", "19078\n", "19080\n", "19082\n", "19084\n", "19086\n", "19088\n", "19090\n", "19092\n", "19094\n", "19096\n", "19098\n", "19100\n", "19102\n", "19104\n", "19106\n", "19108\n", "19110\n", "19112\n", "19114\n", "19116\n", "19118\n", "19120\n", "19122\n", "19124\n", "19126\n", "19128\n", "19130\n", "19132\n", "19134\n", "19136\n", "19138\n", "19140\n", "19142\n", "19144\n", "19146\n", "19148\n", "19150\n", "19152\n", "19154\n", "19156\n", "19158\n", "19160\n", "19162\n", "19164\n", "19166\n", "19168\n", "19170\n", "19172\n", "19174\n", "19176\n", "19178\n", "19180\n", "19182\n", "19184\n", "19186\n", "19188\n", "19190\n", "19192\n", "19194\n", "19196\n", "19198\n", "19200\n", "19202\n", "19204\n", "19206\n", "19208\n", "19210\n", "19212\n", "19214\n", "19216\n", "19218\n", "19220\n", "19222\n", "19224\n", "19226\n", "19228\n", "19230\n", "19232\n", "19234\n", "19236\n", "19238\n", "19240\n", "19242\n", "19244\n", "19246\n", "19248\n", "19250\n", "19252\n", "19254\n", "19256\n", "19258\n", "19260\n", "19262\n", "19264\n", "19266\n", "19268\n", "19270\n", "19272\n", "19274\n", "19276\n", "19278\n", "19280\n", "19282\n", "19284\n", "19286\n", "19288\n", "19290\n", "19292\n", "19294\n", "19296\n", "19298\n", "19300\n", "19302\n", "19304\n", "19306\n", "19308\n", "19310\n", "19312\n", "19314\n", "19316\n", "19318\n", "19320\n", "19322\n", "19324\n", "19326\n", "19328\n", "19330\n", "19332\n", "19334\n", "19336\n", "19338\n", "19340\n", "19342\n", "19344\n", "19346\n", "19348\n", "19350\n", "19352\n", "19354\n", "19356\n", "19358\n", "19360\n", "19362\n", "19364\n", "19366\n", "19368\n", "19370\n", "19372\n", "19374\n", "19376\n", "19378\n", "19380\n", "19382\n", "19384\n", "19386\n", "19388\n", "19390\n", "19392\n", "19394\n", "19396\n", "19398\n", "19400\n", "19402\n", "19404\n", "19406\n", "19408\n", "19410\n", "19412\n", "19414\n", "19416\n", "19418\n", "19420\n", "19422\n", "19424\n", "19426\n", "19428\n", "19430\n", "19432\n", "19434\n", "19436\n", "19438\n", "19440\n", "19442\n", "19444\n", "19446\n", "19448\n", "19450\n", "19452\n", "19454\n", "19456\n", "19458\n", "19460\n", "19462\n", "19464\n", "19466\n", "19468\n", "19470\n", "19472\n", "19474\n", "19476\n", "19478\n", "19480\n", "19482\n", "19484\n", "19486\n", "19488\n", "19490\n", "19492\n", "19494\n", "19496\n", "19498\n", "19500\n", "19502\n", "19504\n", "19506\n", "19508\n", "19510\n", "19512\n", "19514\n", "19516\n", "19518\n", "19520\n", "19522\n", "19524\n", "19526\n", "19528\n", "19530\n", "19532\n", "19534\n", "19536\n", "19538\n", "19540\n", "19542\n", "19544\n", "19546\n", "19548\n", "19550\n", "19552\n", "19554\n", "19556\n", "19558\n", "19560\n", "19562\n", "19564\n", "19566\n", "19568\n", "19570\n", "19572\n", "19574\n", "19576\n", "19578\n", "19580\n", "19582\n", "19584\n", "19586\n", "19588\n", "19590\n", "19592\n", "19594\n", "19596\n", "19598\n", "19600\n", "19602\n", "19604\n", "19606\n", "19608\n", "19610\n", "19612\n", "19614\n", "19616\n", "19618\n", "19620\n", "19622\n", "19624\n", "19626\n", "19628\n", "19630\n", "19632\n", "19634\n", "19636\n", "19638\n", "19640\n", "19642\n", "19644\n", "19646\n", "19648\n", "19650\n", "19652\n", "19654\n", "19656\n", "19658\n", "19660\n", "19662\n", "19664\n", "19666\n", "19668\n", "19670\n", "19672\n", "19674\n", "19676\n", "19678\n", "19680\n", "19682\n", "19684\n", "19686\n", "19688\n", "19690\n", "19692\n", "19694\n", "19696\n", "19698\n", "19700\n", "19702\n", "19704\n", "19706\n", "19708\n", "19710\n", "19712\n", "19714\n", "19716\n", "19718\n", "19720\n", "19722\n", "19724\n", "19726\n", "19728\n", "19730\n", "19732\n", "19734\n", "19736\n", "19738\n", "19740\n", "19742\n", "19744\n", "19746\n", "19748\n", "19750\n", "19752\n", "19754\n", "19756\n", "19758\n", "19760\n", "19762\n", "19764\n", "19766\n", "19768\n", "19770\n", "19772\n", "19774\n", "19776\n", "19778\n", "19780\n", "19782\n", "19784\n", "19786\n", "19788\n", "19790\n", "19792\n", "19794\n", "19796\n", "19798\n", "19800\n", "19802\n", "19804\n", "19806\n", "19808\n", "19810\n", "19812\n", "19814\n", "19816\n", "19818\n", "19820\n", "19822\n", "19824\n", "19826\n", "19828\n", "19830\n", "19832\n", "19834\n", "19836\n", "19838\n", "19840\n", "19842\n", "19844\n", "19846\n", "19848\n", "19850\n", "19852\n", "19854\n", "19856\n", "19858\n", "19860\n", "19862\n", "19864\n", "19866\n", "19868\n", "19870\n", "19872\n", "19874\n", "19876\n", "19878\n", "19880\n", "19882\n", "19884\n", "19886\n", "19888\n", "19890\n", "19892\n", "19894\n", "19896\n", "19898\n", "19900\n", "19902\n", "19904\n", "19906\n", "19908\n", "19910\n", "19912\n", "19914\n", "19916\n", "19918\n", "19920\n", "19922\n", "19924\n", "19926\n", "19928\n", "19930\n", "19932\n", "19934\n", "19936\n", "19938\n", "19940\n", "19942\n", "19944\n", "19946\n", "19948\n", "19950\n", "19952\n", "19954\n", "19956\n", "19958\n", "19960\n", "19962\n", "19964\n", "19966\n", "19968\n", "19970\n", "19972\n", "19974\n", "19976\n", "19978\n", "19980\n", "19982\n", "19984\n", "19986\n", "19988\n", "19990\n", "19992\n", "19994\n", "19996\n", "19998\n" ] } ], "source": [ "for element in myrange(4, 20000, 2):\n", " print(element)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**STUPID!**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A far less naive **generator**:" ] }, { "cell_type": "code", "execution_count": 161, "metadata": {}, "outputs": [], "source": [ "def myrange(begin, end, step):\n", " element = begin\n", " while element < end:\n", " yield element\n", " element += step" ] }, { "cell_type": "code", "execution_count": 162, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n", "6\n", "8\n", "10\n", "12\n", "14\n", "16\n", "18\n", "20\n", "22\n", "24\n", "26\n", "28\n", "30\n", "32\n", "34\n", "36\n", "38\n", "40\n", "42\n", "44\n", "46\n", "48\n", "50\n", "52\n", "54\n", "56\n", "58\n", "60\n", "62\n", "64\n", "66\n", "68\n", "70\n", "72\n", "74\n", "76\n", "78\n", "80\n", "82\n", "84\n", "86\n", "88\n", "90\n", "92\n", "94\n", "96\n", "98\n", "100\n", "102\n", "104\n", "106\n", "108\n", "110\n", "112\n", "114\n", "116\n", "118\n", "120\n", "122\n", "124\n", "126\n", "128\n", "130\n", "132\n", "134\n", "136\n", "138\n", "140\n", "142\n", "144\n", "146\n", "148\n", "150\n", "152\n", "154\n", "156\n", "158\n", "160\n", "162\n", "164\n", "166\n", "168\n", "170\n", "172\n", "174\n", "176\n", "178\n", "180\n", "182\n", "184\n", "186\n", "188\n", "190\n", "192\n", "194\n", "196\n", "198\n", "200\n", "202\n", "204\n", "206\n", "208\n", "210\n", "212\n", "214\n", "216\n", "218\n", "220\n", "222\n", "224\n", "226\n", "228\n", "230\n", "232\n", "234\n", "236\n", "238\n", "240\n", "242\n", "244\n", "246\n", "248\n", "250\n", "252\n", "254\n", "256\n", "258\n", "260\n", "262\n", "264\n", "266\n", "268\n", "270\n", "272\n", "274\n", "276\n", "278\n", "280\n", "282\n", "284\n", "286\n", "288\n", "290\n", "292\n", "294\n", "296\n", "298\n", "300\n", "302\n", "304\n", "306\n", "308\n", "310\n", "312\n", "314\n", "316\n", "318\n", "320\n", "322\n", "324\n", "326\n", "328\n", "330\n", "332\n", "334\n", "336\n", "338\n", "340\n", "342\n", "344\n", "346\n", "348\n", "350\n", "352\n", "354\n", "356\n", "358\n", "360\n", "362\n", "364\n", "366\n", "368\n", "370\n", "372\n", "374\n", "376\n", "378\n", "380\n", "382\n", "384\n", "386\n", "388\n", "390\n", "392\n", "394\n", "396\n", "398\n", "400\n", "402\n", "404\n", "406\n", "408\n", "410\n", "412\n", "414\n", "416\n", "418\n", "420\n", "422\n", "424\n", "426\n", "428\n", "430\n", "432\n", "434\n", "436\n", "438\n", "440\n", "442\n", "444\n", "446\n", "448\n", "450\n", "452\n", "454\n", "456\n", "458\n", "460\n", "462\n", "464\n", "466\n", "468\n", "470\n", "472\n", "474\n", "476\n", "478\n", "480\n", "482\n", "484\n", "486\n", "488\n", "490\n", "492\n", "494\n", "496\n", "498\n", "500\n", "502\n", "504\n", "506\n", "508\n", "510\n", "512\n", "514\n", "516\n", "518\n", "520\n", "522\n", "524\n", "526\n", "528\n", "530\n", "532\n", "534\n", "536\n", "538\n", "540\n", "542\n", "544\n", "546\n", "548\n", "550\n", "552\n", "554\n", "556\n", "558\n", "560\n", "562\n", "564\n", "566\n", "568\n", "570\n", "572\n", "574\n", "576\n", "578\n", "580\n", "582\n", "584\n", "586\n", "588\n", "590\n", "592\n", "594\n", "596\n", "598\n", "600\n", "602\n", "604\n", "606\n", "608\n", "610\n", "612\n", "614\n", "616\n", "618\n", "620\n", "622\n", "624\n", "626\n", "628\n", "630\n", "632\n", "634\n", "636\n", "638\n", "640\n", "642\n", "644\n", "646\n", "648\n", "650\n", "652\n", "654\n", "656\n", "658\n", "660\n", "662\n", "664\n", "666\n", "668\n", "670\n", "672\n", "674\n", "676\n", "678\n", "680\n", "682\n", "684\n", "686\n", "688\n", "690\n", "692\n", "694\n", "696\n", "698\n", "700\n", "702\n", "704\n", "706\n", "708\n", "710\n", "712\n", "714\n", "716\n", "718\n", "720\n", "722\n", "724\n", "726\n", "728\n", "730\n", "732\n", "734\n", "736\n", "738\n", "740\n", "742\n", "744\n", "746\n", "748\n", "750\n", "752\n", "754\n", "756\n", "758\n", "760\n", "762\n", "764\n", "766\n", "768\n", "770\n", "772\n", "774\n", "776\n", "778\n", "780\n", "782\n", "784\n", "786\n", "788\n", "790\n", "792\n", "794\n", "796\n", "798\n", "800\n", "802\n", "804\n", "806\n", "808\n", "810\n", "812\n", "814\n", "816\n", "818\n", "820\n", "822\n", "824\n", "826\n", "828\n", "830\n", "832\n", "834\n", "836\n", "838\n", "840\n", "842\n", "844\n", "846\n", "848\n", "850\n", "852\n", "854\n", "856\n", "858\n", "860\n", "862\n", "864\n", "866\n", "868\n", "870\n", "872\n", "874\n", "876\n", "878\n", "880\n", "882\n", "884\n", "886\n", "888\n", "890\n", "892\n", "894\n", "896\n", "898\n", "900\n", "902\n", "904\n", "906\n", "908\n", "910\n", "912\n", "914\n", "916\n", "918\n", "920\n", "922\n", "924\n", "926\n", "928\n", "930\n", "932\n", "934\n", "936\n", "938\n", "940\n", "942\n", "944\n", "946\n", "948\n", "950\n", "952\n", "954\n", "956\n", "958\n", "960\n", "962\n", "964\n", "966\n", "968\n", "970\n", "972\n", "974\n", "976\n", "978\n", "980\n", "982\n", "984\n", "986\n", "988\n", "990\n", "992\n", "994\n", "996\n", "998\n", "1000\n", "1002\n", "1004\n", "1006\n", "1008\n", "1010\n", "1012\n", "1014\n", "1016\n", "1018\n", "1020\n", "1022\n", "1024\n", "1026\n", "1028\n", "1030\n", "1032\n", "1034\n", "1036\n", "1038\n", "1040\n", "1042\n", "1044\n", "1046\n", "1048\n", "1050\n", "1052\n", "1054\n", "1056\n", "1058\n", "1060\n", "1062\n", "1064\n", "1066\n", "1068\n", "1070\n", "1072\n", "1074\n", "1076\n", "1078\n", "1080\n", "1082\n", "1084\n", "1086\n", "1088\n", "1090\n", "1092\n", "1094\n", "1096\n", "1098\n", "1100\n", "1102\n", "1104\n", "1106\n", "1108\n", "1110\n", "1112\n", "1114\n", "1116\n", "1118\n", "1120\n", "1122\n", "1124\n", "1126\n", "1128\n", "1130\n", "1132\n", "1134\n", "1136\n", "1138\n", "1140\n", "1142\n", "1144\n", "1146\n", "1148\n", "1150\n", "1152\n", "1154\n", "1156\n", "1158\n", "1160\n", "1162\n", "1164\n", "1166\n", "1168\n", "1170\n", "1172\n", "1174\n", "1176\n", "1178\n", "1180\n", "1182\n", "1184\n", "1186\n", "1188\n", "1190\n", "1192\n", "1194\n", "1196\n", "1198\n", "1200\n", "1202\n", "1204\n", "1206\n", "1208\n", "1210\n", "1212\n", "1214\n", "1216\n", "1218\n", "1220\n", "1222\n", "1224\n", "1226\n", "1228\n", "1230\n", "1232\n", "1234\n", "1236\n", "1238\n", "1240\n", "1242\n", "1244\n", "1246\n", "1248\n", "1250\n", "1252\n", "1254\n", "1256\n", "1258\n", "1260\n", "1262\n", "1264\n", "1266\n", "1268\n", "1270\n", "1272\n", "1274\n", "1276\n", "1278\n", "1280\n", "1282\n", "1284\n", "1286\n", "1288\n", "1290\n", "1292\n", "1294\n", "1296\n", "1298\n", "1300\n", "1302\n", "1304\n", "1306\n", "1308\n", "1310\n", "1312\n", "1314\n", "1316\n", "1318\n", "1320\n", "1322\n", "1324\n", "1326\n", "1328\n", "1330\n", "1332\n", "1334\n", "1336\n", "1338\n", "1340\n", "1342\n", "1344\n", "1346\n", "1348\n", "1350\n", "1352\n", "1354\n", "1356\n", "1358\n", "1360\n", "1362\n", "1364\n", "1366\n", "1368\n", "1370\n", "1372\n", "1374\n", "1376\n", "1378\n", "1380\n", "1382\n", "1384\n", "1386\n", "1388\n", "1390\n", "1392\n", "1394\n", "1396\n", "1398\n", "1400\n", "1402\n", "1404\n", "1406\n", "1408\n", "1410\n", "1412\n", "1414\n", "1416\n", "1418\n", "1420\n", "1422\n", "1424\n", "1426\n", "1428\n", "1430\n", "1432\n", "1434\n", "1436\n", "1438\n", "1440\n", "1442\n", "1444\n", "1446\n", "1448\n", "1450\n", "1452\n", "1454\n", "1456\n", "1458\n", "1460\n", "1462\n", "1464\n", "1466\n", "1468\n", "1470\n", "1472\n", "1474\n", "1476\n", "1478\n", "1480\n", "1482\n", "1484\n", "1486\n", "1488\n", "1490\n", "1492\n", "1494\n", "1496\n", "1498\n", "1500\n", "1502\n", "1504\n", "1506\n", "1508\n", "1510\n", "1512\n", "1514\n", "1516\n", "1518\n", "1520\n", "1522\n", "1524\n", "1526\n", "1528\n", "1530\n", "1532\n", "1534\n", "1536\n", "1538\n", "1540\n", "1542\n", "1544\n", "1546\n", "1548\n", "1550\n", "1552\n", "1554\n", "1556\n", "1558\n", "1560\n", "1562\n", "1564\n", "1566\n", "1568\n", "1570\n", "1572\n", "1574\n", "1576\n", "1578\n", "1580\n", "1582\n", "1584\n", "1586\n", "1588\n", "1590\n", "1592\n", "1594\n", "1596\n", "1598\n", "1600\n", "1602\n", "1604\n", "1606\n", "1608\n", "1610\n", "1612\n", "1614\n", "1616\n", "1618\n", "1620\n", "1622\n", "1624\n", "1626\n", "1628\n", "1630\n", "1632\n", "1634\n", "1636\n", "1638\n", "1640\n", "1642\n", "1644\n", "1646\n", "1648\n", "1650\n", "1652\n", "1654\n", "1656\n", "1658\n", "1660\n", "1662\n", "1664\n", "1666\n", "1668\n", "1670\n", "1672\n", "1674\n", "1676\n", "1678\n", "1680\n", "1682\n", "1684\n", "1686\n", "1688\n", "1690\n", "1692\n", "1694\n", "1696\n", "1698\n", "1700\n", "1702\n", "1704\n", "1706\n", "1708\n", "1710\n", "1712\n", "1714\n", "1716\n", "1718\n", "1720\n", "1722\n", "1724\n", "1726\n", "1728\n", "1730\n", "1732\n", "1734\n", "1736\n", "1738\n", "1740\n", "1742\n", "1744\n", "1746\n", "1748\n", "1750\n", "1752\n", "1754\n", "1756\n", "1758\n", "1760\n", "1762\n", "1764\n", "1766\n", "1768\n", "1770\n", "1772\n", "1774\n", "1776\n", "1778\n", "1780\n", "1782\n", "1784\n", "1786\n", "1788\n", "1790\n", "1792\n", "1794\n", "1796\n", "1798\n", "1800\n", "1802\n", "1804\n", "1806\n", "1808\n", "1810\n", "1812\n", "1814\n", "1816\n", "1818\n", "1820\n", "1822\n", "1824\n", "1826\n", "1828\n", "1830\n", "1832\n", "1834\n", "1836\n", "1838\n", "1840\n", "1842\n", "1844\n", "1846\n", "1848\n", "1850\n", "1852\n", "1854\n", "1856\n", "1858\n", "1860\n", "1862\n", "1864\n", "1866\n", "1868\n", "1870\n", "1872\n", "1874\n", "1876\n", "1878\n", "1880\n", "1882\n", "1884\n", "1886\n", "1888\n", "1890\n", "1892\n", "1894\n", "1896\n", "1898\n", "1900\n", "1902\n", "1904\n", "1906\n", "1908\n", "1910\n", "1912\n", "1914\n", "1916\n", "1918\n", "1920\n", "1922\n", "1924\n", "1926\n", "1928\n", "1930\n", "1932\n", "1934\n", "1936\n", "1938\n", "1940\n", "1942\n", "1944\n", "1946\n", "1948\n", "1950\n", "1952\n", "1954\n", "1956\n", "1958\n", "1960\n", "1962\n", "1964\n", "1966\n", "1968\n", "1970\n", "1972\n", "1974\n", "1976\n", "1978\n", "1980\n", "1982\n", "1984\n", "1986\n", "1988\n", "1990\n", "1992\n", "1994\n", "1996\n", "1998\n", "2000\n", "2002\n", "2004\n", "2006\n", "2008\n", "2010\n", "2012\n", "2014\n", "2016\n", "2018\n", "2020\n", "2022\n", "2024\n", "2026\n", "2028\n", "2030\n", "2032\n", "2034\n", "2036\n", "2038\n", "2040\n", "2042\n", "2044\n", "2046\n", "2048\n", "2050\n", "2052\n", "2054\n", "2056\n", "2058\n", "2060\n", "2062\n", "2064\n", "2066\n", "2068\n", "2070\n", "2072\n", "2074\n", "2076\n", "2078\n", "2080\n", "2082\n", "2084\n", "2086\n", "2088\n", "2090\n", "2092\n", "2094\n", "2096\n", "2098\n", "2100\n", "2102\n", "2104\n", "2106\n", "2108\n", "2110\n", "2112\n", "2114\n", "2116\n", "2118\n", "2120\n", "2122\n", "2124\n", "2126\n", "2128\n", "2130\n", "2132\n", "2134\n", "2136\n", "2138\n", "2140\n", "2142\n", "2144\n", "2146\n", "2148\n", "2150\n", "2152\n", "2154\n", "2156\n", "2158\n", "2160\n", "2162\n", "2164\n", "2166\n", "2168\n", "2170\n", "2172\n", "2174\n", "2176\n", "2178\n", "2180\n", "2182\n", "2184\n", "2186\n", "2188\n", "2190\n", "2192\n", "2194\n", "2196\n", "2198\n", "2200\n", "2202\n", "2204\n", "2206\n", "2208\n", "2210\n", "2212\n", "2214\n", "2216\n", "2218\n", "2220\n", "2222\n", "2224\n", "2226\n", "2228\n", "2230\n", "2232\n", "2234\n", "2236\n", "2238\n", "2240\n", "2242\n", "2244\n", "2246\n", "2248\n", "2250\n", "2252\n", "2254\n", "2256\n", "2258\n", "2260\n", "2262\n", "2264\n", "2266\n", "2268\n", "2270\n", "2272\n", "2274\n", "2276\n", "2278\n", "2280\n", "2282\n", "2284\n", "2286\n", "2288\n", "2290\n", "2292\n", "2294\n", "2296\n", "2298\n", "2300\n", "2302\n", "2304\n", "2306\n", "2308\n", "2310\n", "2312\n", "2314\n", "2316\n", "2318\n", "2320\n", "2322\n", "2324\n", "2326\n", "2328\n", "2330\n", "2332\n", "2334\n", "2336\n", "2338\n", "2340\n", "2342\n", "2344\n", "2346\n", "2348\n", "2350\n", "2352\n", "2354\n", "2356\n", "2358\n", "2360\n", "2362\n", "2364\n", "2366\n", "2368\n", "2370\n", "2372\n", "2374\n", "2376\n", "2378\n", "2380\n", "2382\n", "2384\n", "2386\n", "2388\n", "2390\n", "2392\n", "2394\n", "2396\n", "2398\n", "2400\n", "2402\n", "2404\n", "2406\n", "2408\n", "2410\n", "2412\n", "2414\n", "2416\n", "2418\n", "2420\n", "2422\n", "2424\n", "2426\n", "2428\n", "2430\n", "2432\n", "2434\n", "2436\n", "2438\n", "2440\n", "2442\n", "2444\n", "2446\n", "2448\n", "2450\n", "2452\n", "2454\n", "2456\n", "2458\n", "2460\n", "2462\n", "2464\n", "2466\n", "2468\n", "2470\n", "2472\n", "2474\n", "2476\n", "2478\n", "2480\n", "2482\n", "2484\n", "2486\n", "2488\n", "2490\n", "2492\n", "2494\n", "2496\n", "2498\n", "2500\n", "2502\n", "2504\n", "2506\n", "2508\n", "2510\n", "2512\n", "2514\n", "2516\n", "2518\n", "2520\n", "2522\n", "2524\n", "2526\n", "2528\n", "2530\n", "2532\n", "2534\n", "2536\n", "2538\n", "2540\n", "2542\n", "2544\n", "2546\n", "2548\n", "2550\n", "2552\n", "2554\n", "2556\n", "2558\n", "2560\n", "2562\n", "2564\n", "2566\n", "2568\n", "2570\n", "2572\n", "2574\n", "2576\n", "2578\n", "2580\n", "2582\n", "2584\n", "2586\n", "2588\n", "2590\n", "2592\n", "2594\n", "2596\n", "2598\n", "2600\n", "2602\n", "2604\n", "2606\n", "2608\n", "2610\n", "2612\n", "2614\n", "2616\n", "2618\n", "2620\n", "2622\n", "2624\n", "2626\n", "2628\n", "2630\n", "2632\n", "2634\n", "2636\n", "2638\n", "2640\n", "2642\n", "2644\n", "2646\n", "2648\n", "2650\n", "2652\n", "2654\n", "2656\n", "2658\n", "2660\n", "2662\n", "2664\n", "2666\n", "2668\n", "2670\n", "2672\n", "2674\n", "2676\n", "2678\n", "2680\n", "2682\n", "2684\n", "2686\n", "2688\n", "2690\n", "2692\n", "2694\n", "2696\n", "2698\n", "2700\n", "2702\n", "2704\n", "2706\n", "2708\n", "2710\n", "2712\n", "2714\n", "2716\n", "2718\n", "2720\n", "2722\n", "2724\n", "2726\n", "2728\n", "2730\n", "2732\n", "2734\n", "2736\n", "2738\n", "2740\n", "2742\n", "2744\n", "2746\n", "2748\n", "2750\n", "2752\n", "2754\n", "2756\n", "2758\n", "2760\n", "2762\n", "2764\n", "2766\n", "2768\n", "2770\n", "2772\n", "2774\n", "2776\n", "2778\n", "2780\n", "2782\n", "2784\n", "2786\n", "2788\n", "2790\n", "2792\n", "2794\n", "2796\n", "2798\n", "2800\n", "2802\n", "2804\n", "2806\n", "2808\n", "2810\n", "2812\n", "2814\n", "2816\n", "2818\n", "2820\n", "2822\n", "2824\n", "2826\n", "2828\n", "2830\n", "2832\n", "2834\n", "2836\n", "2838\n", "2840\n", "2842\n", "2844\n", "2846\n", "2848\n", "2850\n", "2852\n", "2854\n", "2856\n", "2858\n", "2860\n", "2862\n", "2864\n", "2866\n", "2868\n", "2870\n", "2872\n", "2874\n", "2876\n", "2878\n", "2880\n", "2882\n", "2884\n", "2886\n", "2888\n", "2890\n", "2892\n", "2894\n", "2896\n", "2898\n", "2900\n", "2902\n", "2904\n", "2906\n", "2908\n", "2910\n", "2912\n", "2914\n", "2916\n", "2918\n", "2920\n", "2922\n", "2924\n", "2926\n", "2928\n", "2930\n", "2932\n", "2934\n", "2936\n", "2938\n", "2940\n", "2942\n", "2944\n", "2946\n", "2948\n", "2950\n", "2952\n", "2954\n", "2956\n", "2958\n", "2960\n", "2962\n", "2964\n", "2966\n", "2968\n", "2970\n", "2972\n", "2974\n", "2976\n", "2978\n", "2980\n", "2982\n", "2984\n", "2986\n", "2988\n", "2990\n", "2992\n", "2994\n", "2996\n", "2998\n", "3000\n", "3002\n", "3004\n", "3006\n", "3008\n", "3010\n", "3012\n", "3014\n", "3016\n", "3018\n", "3020\n", "3022\n", "3024\n", "3026\n", "3028\n", "3030\n", "3032\n", "3034\n", "3036\n", "3038\n", "3040\n", "3042\n", "3044\n", "3046\n", "3048\n", "3050\n", "3052\n", "3054\n", "3056\n", "3058\n", "3060\n", "3062\n", "3064\n", "3066\n", "3068\n", "3070\n", "3072\n", "3074\n", "3076\n", "3078\n", "3080\n", "3082\n", "3084\n", "3086\n", "3088\n", "3090\n", "3092\n", "3094\n", "3096\n", "3098\n", "3100\n", "3102\n", "3104\n", "3106\n", "3108\n", "3110\n", "3112\n", "3114\n", "3116\n", "3118\n", "3120\n", "3122\n", "3124\n", "3126\n", "3128\n", "3130\n", "3132\n", "3134\n", "3136\n", "3138\n", "3140\n", "3142\n", "3144\n", "3146\n", "3148\n", "3150\n", "3152\n", "3154\n", "3156\n", "3158\n", "3160\n", "3162\n", "3164\n", "3166\n", "3168\n", "3170\n", "3172\n", "3174\n", "3176\n", "3178\n", "3180\n", "3182\n", "3184\n", "3186\n", "3188\n", "3190\n", "3192\n", "3194\n", "3196\n", "3198\n", "3200\n", "3202\n", "3204\n", "3206\n", "3208\n", "3210\n", "3212\n", "3214\n", "3216\n", "3218\n", "3220\n", "3222\n", "3224\n", "3226\n", "3228\n", "3230\n", "3232\n", "3234\n", "3236\n", "3238\n", "3240\n", "3242\n", "3244\n", "3246\n", "3248\n", "3250\n", "3252\n", "3254\n", "3256\n", "3258\n", "3260\n", "3262\n", "3264\n", "3266\n", "3268\n", "3270\n", "3272\n", "3274\n", "3276\n", "3278\n", "3280\n", "3282\n", "3284\n", "3286\n", "3288\n", "3290\n", "3292\n", "3294\n", "3296\n", "3298\n", "3300\n", "3302\n", "3304\n", "3306\n", "3308\n", "3310\n", "3312\n", "3314\n", "3316\n", "3318\n", "3320\n", "3322\n", "3324\n", "3326\n", "3328\n", "3330\n", "3332\n", "3334\n", "3336\n", "3338\n", "3340\n", "3342\n", "3344\n", "3346\n", "3348\n", "3350\n", "3352\n", "3354\n", "3356\n", "3358\n", "3360\n", "3362\n", "3364\n", "3366\n", "3368\n", "3370\n", "3372\n", "3374\n", "3376\n", "3378\n", "3380\n", "3382\n", "3384\n", "3386\n", "3388\n", "3390\n", "3392\n", "3394\n", "3396\n", "3398\n", "3400\n", "3402\n", "3404\n", "3406\n", "3408\n", "3410\n", "3412\n", "3414\n", "3416\n", "3418\n", "3420\n", "3422\n", "3424\n", "3426\n", "3428\n", "3430\n", "3432\n", "3434\n", "3436\n", "3438\n", "3440\n", "3442\n", "3444\n", "3446\n", "3448\n", "3450\n", "3452\n", "3454\n", "3456\n", "3458\n", "3460\n", "3462\n", "3464\n", "3466\n", "3468\n", "3470\n", "3472\n", "3474\n", "3476\n", "3478\n", "3480\n", "3482\n", "3484\n", "3486\n", "3488\n", "3490\n", "3492\n", "3494\n", "3496\n", "3498\n", "3500\n", "3502\n", "3504\n", "3506\n", "3508\n", "3510\n", "3512\n", "3514\n", "3516\n", "3518\n", "3520\n", "3522\n", "3524\n", "3526\n", "3528\n", "3530\n", "3532\n", "3534\n", "3536\n", "3538\n", "3540\n", "3542\n", "3544\n", "3546\n", "3548\n", "3550\n", "3552\n", "3554\n", "3556\n", "3558\n", "3560\n", "3562\n", "3564\n", "3566\n", "3568\n", "3570\n", "3572\n", "3574\n", "3576\n", "3578\n", "3580\n", "3582\n", "3584\n", "3586\n", "3588\n", "3590\n", "3592\n", "3594\n", "3596\n", "3598\n", "3600\n", "3602\n", "3604\n", "3606\n", "3608\n", "3610\n", "3612\n", "3614\n", "3616\n", "3618\n", "3620\n", "3622\n", "3624\n", "3626\n", "3628\n", "3630\n", "3632\n", "3634\n", "3636\n", "3638\n", "3640\n", "3642\n", "3644\n", "3646\n", "3648\n", "3650\n", "3652\n", "3654\n", "3656\n", "3658\n", "3660\n", "3662\n", "3664\n", "3666\n", "3668\n", "3670\n", "3672\n", "3674\n", "3676\n", "3678\n", "3680\n", "3682\n", "3684\n", "3686\n", "3688\n", "3690\n", "3692\n", "3694\n", "3696\n", "3698\n", "3700\n", "3702\n", "3704\n", "3706\n", "3708\n", "3710\n", "3712\n", "3714\n", "3716\n", "3718\n", "3720\n", "3722\n", "3724\n", "3726\n", "3728\n", "3730\n", "3732\n", "3734\n", "3736\n", "3738\n", "3740\n", "3742\n", "3744\n", "3746\n", "3748\n", "3750\n", "3752\n", "3754\n", "3756\n", "3758\n", "3760\n", "3762\n", "3764\n", "3766\n", "3768\n", "3770\n", "3772\n", "3774\n", "3776\n", "3778\n", "3780\n", "3782\n", "3784\n", "3786\n", "3788\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "3790\n", "3792\n", "3794\n", "3796\n", "3798\n", "3800\n", "3802\n", "3804\n", "3806\n", "3808\n", "3810\n", "3812\n", "3814\n", "3816\n", "3818\n", "3820\n", "3822\n", "3824\n", "3826\n", "3828\n", "3830\n", "3832\n", "3834\n", "3836\n", "3838\n", "3840\n", "3842\n", "3844\n", "3846\n", "3848\n", "3850\n", "3852\n", "3854\n", "3856\n", "3858\n", "3860\n", "3862\n", "3864\n", "3866\n", "3868\n", "3870\n", "3872\n", "3874\n", "3876\n", "3878\n", "3880\n", "3882\n", "3884\n", "3886\n", "3888\n", "3890\n", "3892\n", "3894\n", "3896\n", "3898\n", "3900\n", "3902\n", "3904\n", "3906\n", "3908\n", "3910\n", "3912\n", "3914\n", "3916\n", "3918\n", "3920\n", "3922\n", "3924\n", "3926\n", "3928\n", "3930\n", "3932\n", "3934\n", "3936\n", "3938\n", "3940\n", "3942\n", "3944\n", "3946\n", "3948\n", "3950\n", "3952\n", "3954\n", "3956\n", "3958\n", "3960\n", "3962\n", "3964\n", "3966\n", "3968\n", "3970\n", "3972\n", "3974\n", "3976\n", "3978\n", "3980\n", "3982\n", "3984\n", "3986\n", "3988\n", "3990\n", "3992\n", "3994\n", "3996\n", "3998\n", "4000\n", "4002\n", "4004\n", "4006\n", "4008\n", "4010\n", "4012\n", "4014\n", "4016\n", "4018\n", "4020\n", "4022\n", "4024\n", "4026\n", "4028\n", "4030\n", "4032\n", "4034\n", "4036\n", "4038\n", "4040\n", "4042\n", "4044\n", "4046\n", "4048\n", "4050\n", "4052\n", "4054\n", "4056\n", "4058\n", "4060\n", "4062\n", "4064\n", "4066\n", "4068\n", "4070\n", "4072\n", "4074\n", "4076\n", "4078\n", "4080\n", "4082\n", "4084\n", "4086\n", "4088\n", "4090\n", "4092\n", "4094\n", "4096\n", "4098\n", "4100\n", "4102\n", "4104\n", "4106\n", "4108\n", "4110\n", "4112\n", "4114\n", "4116\n", "4118\n", "4120\n", "4122\n", "4124\n", "4126\n", "4128\n", "4130\n", "4132\n", "4134\n", "4136\n", "4138\n", "4140\n", "4142\n", "4144\n", "4146\n", "4148\n", "4150\n", "4152\n", "4154\n", "4156\n", "4158\n", "4160\n", "4162\n", "4164\n", "4166\n", "4168\n", "4170\n", "4172\n", "4174\n", "4176\n", "4178\n", "4180\n", "4182\n", "4184\n", "4186\n", "4188\n", "4190\n", "4192\n", "4194\n", "4196\n", "4198\n", "4200\n", "4202\n", "4204\n", "4206\n", "4208\n", "4210\n", "4212\n", "4214\n", "4216\n", "4218\n", "4220\n", "4222\n", "4224\n", "4226\n", "4228\n", "4230\n", "4232\n", "4234\n", "4236\n", "4238\n", "4240\n", "4242\n", "4244\n", "4246\n", "4248\n", "4250\n", "4252\n", "4254\n", "4256\n", "4258\n", "4260\n", "4262\n", "4264\n", "4266\n", "4268\n", "4270\n", "4272\n", "4274\n", "4276\n", "4278\n", "4280\n", "4282\n", "4284\n", "4286\n", "4288\n", "4290\n", "4292\n", "4294\n", "4296\n", "4298\n", "4300\n", "4302\n", "4304\n", "4306\n", "4308\n", "4310\n", "4312\n", "4314\n", "4316\n", "4318\n", "4320\n", "4322\n", "4324\n", "4326\n", "4328\n", "4330\n", "4332\n", "4334\n", "4336\n", "4338\n", "4340\n", "4342\n", "4344\n", "4346\n", "4348\n", "4350\n", "4352\n", "4354\n", "4356\n", "4358\n", "4360\n", "4362\n", "4364\n", "4366\n", "4368\n", "4370\n", "4372\n", "4374\n", "4376\n", "4378\n", "4380\n", "4382\n", "4384\n", "4386\n", "4388\n", "4390\n", "4392\n", "4394\n", "4396\n", "4398\n", "4400\n", "4402\n", "4404\n", "4406\n", "4408\n", "4410\n", "4412\n", "4414\n", "4416\n", "4418\n", "4420\n", "4422\n", "4424\n", "4426\n", "4428\n", "4430\n", "4432\n", "4434\n", "4436\n", "4438\n", "4440\n", "4442\n", "4444\n", "4446\n", "4448\n", "4450\n", "4452\n", "4454\n", "4456\n", "4458\n", "4460\n", "4462\n", "4464\n", "4466\n", "4468\n", "4470\n", "4472\n", "4474\n", "4476\n", "4478\n", "4480\n", "4482\n", "4484\n", "4486\n", "4488\n", "4490\n", "4492\n", "4494\n", "4496\n", "4498\n", "4500\n", "4502\n", "4504\n", "4506\n", "4508\n", "4510\n", "4512\n", "4514\n", "4516\n", "4518\n", "4520\n", "4522\n", "4524\n", "4526\n", "4528\n", "4530\n", "4532\n", "4534\n", "4536\n", "4538\n", "4540\n", "4542\n", "4544\n", "4546\n", "4548\n", "4550\n", "4552\n", "4554\n", "4556\n", "4558\n", "4560\n", "4562\n", "4564\n", "4566\n", "4568\n", "4570\n", "4572\n", "4574\n", "4576\n", "4578\n", "4580\n", "4582\n", "4584\n", "4586\n", "4588\n", "4590\n", "4592\n", "4594\n", "4596\n", "4598\n", "4600\n", "4602\n", "4604\n", "4606\n", "4608\n", "4610\n", "4612\n", "4614\n", "4616\n", "4618\n", "4620\n", "4622\n", "4624\n", "4626\n", "4628\n", "4630\n", "4632\n", "4634\n", "4636\n", "4638\n", "4640\n", "4642\n", "4644\n", "4646\n", "4648\n", "4650\n", "4652\n", "4654\n", "4656\n", "4658\n", "4660\n", "4662\n", "4664\n", "4666\n", "4668\n", "4670\n", "4672\n", "4674\n", "4676\n", "4678\n", "4680\n", "4682\n", "4684\n", "4686\n", "4688\n", "4690\n", "4692\n", "4694\n", "4696\n", "4698\n", "4700\n", "4702\n", "4704\n", "4706\n", "4708\n", "4710\n", "4712\n", "4714\n", "4716\n", "4718\n", "4720\n", "4722\n", "4724\n", "4726\n", "4728\n", "4730\n", "4732\n", "4734\n", "4736\n", "4738\n", "4740\n", "4742\n", "4744\n", "4746\n", "4748\n", "4750\n", "4752\n", "4754\n", "4756\n", "4758\n", "4760\n", "4762\n", "4764\n", "4766\n", "4768\n", "4770\n", "4772\n", "4774\n", "4776\n", "4778\n", "4780\n", "4782\n", "4784\n", "4786\n", "4788\n", "4790\n", "4792\n", "4794\n", "4796\n", "4798\n", "4800\n", "4802\n", "4804\n", "4806\n", "4808\n", "4810\n", "4812\n", "4814\n", "4816\n", "4818\n", "4820\n", "4822\n", "4824\n", "4826\n", "4828\n", "4830\n", "4832\n", "4834\n", "4836\n", "4838\n", "4840\n", "4842\n", "4844\n", "4846\n", "4848\n", "4850\n", "4852\n", "4854\n", "4856\n", "4858\n", "4860\n", "4862\n", "4864\n", "4866\n", "4868\n", "4870\n", "4872\n", "4874\n", "4876\n", "4878\n", "4880\n", "4882\n", "4884\n", "4886\n", "4888\n", "4890\n", "4892\n", "4894\n", "4896\n", "4898\n", "4900\n", "4902\n", "4904\n", "4906\n", "4908\n", "4910\n", "4912\n", "4914\n", "4916\n", "4918\n", "4920\n", "4922\n", "4924\n", "4926\n", "4928\n", "4930\n", "4932\n", "4934\n", "4936\n", "4938\n", "4940\n", "4942\n", "4944\n", "4946\n", "4948\n", "4950\n", "4952\n", "4954\n", "4956\n", "4958\n", "4960\n", "4962\n", "4964\n", "4966\n", "4968\n", "4970\n", "4972\n", "4974\n", "4976\n", "4978\n", "4980\n", "4982\n", "4984\n", "4986\n", "4988\n", "4990\n", "4992\n", "4994\n", "4996\n", "4998\n", "5000\n", "5002\n", "5004\n", "5006\n", "5008\n", "5010\n", "5012\n", "5014\n", "5016\n", "5018\n", "5020\n", "5022\n", "5024\n", "5026\n", "5028\n", "5030\n", "5032\n", "5034\n", "5036\n", "5038\n", "5040\n", "5042\n", "5044\n", "5046\n", "5048\n", "5050\n", "5052\n", "5054\n", "5056\n", "5058\n", "5060\n", "5062\n", "5064\n", "5066\n", "5068\n", "5070\n", "5072\n", "5074\n", "5076\n", "5078\n", "5080\n", "5082\n", "5084\n", "5086\n", "5088\n", "5090\n", "5092\n", "5094\n", "5096\n", "5098\n", "5100\n", "5102\n", "5104\n", "5106\n", "5108\n", "5110\n", "5112\n", "5114\n", "5116\n", "5118\n", "5120\n", "5122\n", "5124\n", "5126\n", "5128\n", "5130\n", "5132\n", "5134\n", "5136\n", "5138\n", "5140\n", "5142\n", "5144\n", "5146\n", "5148\n", "5150\n", "5152\n", "5154\n", "5156\n", "5158\n", "5160\n", "5162\n", "5164\n", "5166\n", "5168\n", "5170\n", "5172\n", "5174\n", "5176\n", "5178\n", "5180\n", "5182\n", "5184\n", "5186\n", "5188\n", "5190\n", "5192\n", "5194\n", "5196\n", "5198\n", "5200\n", "5202\n", "5204\n", "5206\n", "5208\n", "5210\n", "5212\n", "5214\n", "5216\n", "5218\n", "5220\n", "5222\n", "5224\n", "5226\n", "5228\n", "5230\n", "5232\n", "5234\n", "5236\n", "5238\n", "5240\n", "5242\n", "5244\n", "5246\n", "5248\n", "5250\n", "5252\n", "5254\n", "5256\n", "5258\n", "5260\n", "5262\n", "5264\n", "5266\n", "5268\n", "5270\n", "5272\n", "5274\n", "5276\n", "5278\n", "5280\n", "5282\n", "5284\n", "5286\n", "5288\n", "5290\n", "5292\n", "5294\n", "5296\n", "5298\n", "5300\n", "5302\n", "5304\n", "5306\n", "5308\n", "5310\n", "5312\n", "5314\n", "5316\n", "5318\n", "5320\n", "5322\n", "5324\n", "5326\n", "5328\n", "5330\n", "5332\n", "5334\n", "5336\n", "5338\n", "5340\n", "5342\n", "5344\n", "5346\n", "5348\n", "5350\n", "5352\n", "5354\n", "5356\n", "5358\n", "5360\n", "5362\n", "5364\n", "5366\n", "5368\n", "5370\n", "5372\n", "5374\n", "5376\n", "5378\n", "5380\n", "5382\n", "5384\n", "5386\n", "5388\n", "5390\n", "5392\n", "5394\n", "5396\n", "5398\n", "5400\n", "5402\n", "5404\n", "5406\n", "5408\n", "5410\n", "5412\n", "5414\n", "5416\n", "5418\n", "5420\n", "5422\n", "5424\n", "5426\n", "5428\n", "5430\n", "5432\n", "5434\n", "5436\n", "5438\n", "5440\n", "5442\n", "5444\n", "5446\n", "5448\n", "5450\n", "5452\n", "5454\n", "5456\n", "5458\n", "5460\n", "5462\n", "5464\n", "5466\n", "5468\n", "5470\n", "5472\n", "5474\n", "5476\n", "5478\n", "5480\n", "5482\n", "5484\n", "5486\n", "5488\n", "5490\n", "5492\n", "5494\n", "5496\n", "5498\n", "5500\n", "5502\n", "5504\n", "5506\n", "5508\n", "5510\n", "5512\n", "5514\n", "5516\n", "5518\n", "5520\n", "5522\n", "5524\n", "5526\n", "5528\n", "5530\n", "5532\n", "5534\n", "5536\n", "5538\n", "5540\n", "5542\n", "5544\n", "5546\n", "5548\n", "5550\n", "5552\n", "5554\n", "5556\n", "5558\n", "5560\n", "5562\n", "5564\n", "5566\n", "5568\n", "5570\n", "5572\n", "5574\n", "5576\n", "5578\n", "5580\n", "5582\n", "5584\n", "5586\n", "5588\n", "5590\n", "5592\n", "5594\n", "5596\n", "5598\n", "5600\n", "5602\n", "5604\n", "5606\n", "5608\n", "5610\n", "5612\n", "5614\n", "5616\n", "5618\n", "5620\n", "5622\n", "5624\n", "5626\n", "5628\n", "5630\n", "5632\n", "5634\n", "5636\n", "5638\n", "5640\n", "5642\n", "5644\n", "5646\n", "5648\n", "5650\n", "5652\n", "5654\n", "5656\n", "5658\n", "5660\n", "5662\n", "5664\n", "5666\n", "5668\n", "5670\n", "5672\n", "5674\n", "5676\n", "5678\n", "5680\n", "5682\n", "5684\n", "5686\n", "5688\n", "5690\n", "5692\n", "5694\n", "5696\n", "5698\n", "5700\n", "5702\n", "5704\n", "5706\n", "5708\n", "5710\n", "5712\n", "5714\n", "5716\n", "5718\n", "5720\n", "5722\n", "5724\n", "5726\n", "5728\n", "5730\n", "5732\n", "5734\n", "5736\n", "5738\n", "5740\n", "5742\n", "5744\n", "5746\n", "5748\n", "5750\n", "5752\n", "5754\n", "5756\n", "5758\n", "5760\n", "5762\n", "5764\n", "5766\n", "5768\n", "5770\n", "5772\n", "5774\n", "5776\n", "5778\n", "5780\n", "5782\n", "5784\n", "5786\n", "5788\n", "5790\n", "5792\n", "5794\n", "5796\n", "5798\n", "5800\n", "5802\n", "5804\n", "5806\n", "5808\n", "5810\n", "5812\n", "5814\n", "5816\n", "5818\n", "5820\n", "5822\n", "5824\n", "5826\n", "5828\n", "5830\n", "5832\n", "5834\n", "5836\n", "5838\n", "5840\n", "5842\n", "5844\n", "5846\n", "5848\n", "5850\n", "5852\n", "5854\n", "5856\n", "5858\n", "5860\n", "5862\n", "5864\n", "5866\n", "5868\n", "5870\n", "5872\n", "5874\n", "5876\n", "5878\n", "5880\n", "5882\n", "5884\n", "5886\n", "5888\n", "5890\n", "5892\n", "5894\n", "5896\n", "5898\n", "5900\n", "5902\n", "5904\n", "5906\n", "5908\n", "5910\n", "5912\n", "5914\n", "5916\n", "5918\n", "5920\n", "5922\n", "5924\n", "5926\n", "5928\n", "5930\n", "5932\n", "5934\n", "5936\n", "5938\n", "5940\n", "5942\n", "5944\n", "5946\n", "5948\n", "5950\n", "5952\n", "5954\n", "5956\n", "5958\n", "5960\n", "5962\n", "5964\n", "5966\n", "5968\n", "5970\n", "5972\n", "5974\n", "5976\n", "5978\n", "5980\n", "5982\n", "5984\n", "5986\n", "5988\n", "5990\n", "5992\n", "5994\n", "5996\n", "5998\n", "6000\n", "6002\n", "6004\n", "6006\n", "6008\n", "6010\n", "6012\n", "6014\n", "6016\n", "6018\n", "6020\n", "6022\n", "6024\n", "6026\n", "6028\n", "6030\n", "6032\n", "6034\n", "6036\n", "6038\n", "6040\n", "6042\n", "6044\n", "6046\n", "6048\n", "6050\n", "6052\n", "6054\n", "6056\n", "6058\n", "6060\n", "6062\n", "6064\n", "6066\n", "6068\n", "6070\n", "6072\n", "6074\n", "6076\n", "6078\n", "6080\n", "6082\n", "6084\n", "6086\n", "6088\n", "6090\n", "6092\n", "6094\n", "6096\n", "6098\n", "6100\n", "6102\n", "6104\n", "6106\n", "6108\n", "6110\n", "6112\n", "6114\n", "6116\n", "6118\n", "6120\n", "6122\n", "6124\n", "6126\n", "6128\n", "6130\n", "6132\n", "6134\n", "6136\n", "6138\n", "6140\n", "6142\n", "6144\n", "6146\n", "6148\n", "6150\n", "6152\n", "6154\n", "6156\n", "6158\n", "6160\n", "6162\n", "6164\n", "6166\n", "6168\n", "6170\n", "6172\n", "6174\n", "6176\n", "6178\n", "6180\n", "6182\n", "6184\n", "6186\n", "6188\n", "6190\n", "6192\n", "6194\n", "6196\n", "6198\n", "6200\n", "6202\n", "6204\n", "6206\n", "6208\n", "6210\n", "6212\n", "6214\n", "6216\n", "6218\n", "6220\n", "6222\n", "6224\n", "6226\n", "6228\n", "6230\n", "6232\n", "6234\n", "6236\n", "6238\n", "6240\n", "6242\n", "6244\n", "6246\n", "6248\n", "6250\n", "6252\n", "6254\n", "6256\n", "6258\n", "6260\n", "6262\n", "6264\n", "6266\n", "6268\n", "6270\n", "6272\n", "6274\n", "6276\n", "6278\n", "6280\n", "6282\n", "6284\n", "6286\n", "6288\n", "6290\n", "6292\n", "6294\n", "6296\n", "6298\n", "6300\n", "6302\n", "6304\n", "6306\n", "6308\n", "6310\n", "6312\n", "6314\n", "6316\n", "6318\n", "6320\n", "6322\n", "6324\n", "6326\n", "6328\n", "6330\n", "6332\n", "6334\n", "6336\n", "6338\n", "6340\n", "6342\n", "6344\n", "6346\n", "6348\n", "6350\n", "6352\n", "6354\n", "6356\n", "6358\n", "6360\n", "6362\n", "6364\n", "6366\n", "6368\n", "6370\n", "6372\n", "6374\n", "6376\n", "6378\n", "6380\n", "6382\n", "6384\n", "6386\n", "6388\n", "6390\n", "6392\n", "6394\n", "6396\n", "6398\n", "6400\n", "6402\n", "6404\n", "6406\n", "6408\n", "6410\n", "6412\n", "6414\n", "6416\n", "6418\n", "6420\n", "6422\n", "6424\n", "6426\n", "6428\n", "6430\n", "6432\n", "6434\n", "6436\n", "6438\n", "6440\n", "6442\n", "6444\n", "6446\n", "6448\n", "6450\n", "6452\n", "6454\n", "6456\n", "6458\n", "6460\n", "6462\n", "6464\n", "6466\n", "6468\n", "6470\n", "6472\n", "6474\n", "6476\n", "6478\n", "6480\n", "6482\n", "6484\n", "6486\n", "6488\n", "6490\n", "6492\n", "6494\n", "6496\n", "6498\n", "6500\n", "6502\n", "6504\n", "6506\n", "6508\n", "6510\n", "6512\n", "6514\n", "6516\n", "6518\n", "6520\n", "6522\n", "6524\n", "6526\n", "6528\n", "6530\n", "6532\n", "6534\n", "6536\n", "6538\n", "6540\n", "6542\n", "6544\n", "6546\n", "6548\n", "6550\n", "6552\n", "6554\n", "6556\n", "6558\n", "6560\n", "6562\n", "6564\n", "6566\n", "6568\n", "6570\n", "6572\n", "6574\n", "6576\n", "6578\n", "6580\n", "6582\n", "6584\n", "6586\n", "6588\n", "6590\n", "6592\n", "6594\n", "6596\n", "6598\n", "6600\n", "6602\n", "6604\n", "6606\n", "6608\n", "6610\n", "6612\n", "6614\n", "6616\n", "6618\n", "6620\n", "6622\n", "6624\n", "6626\n", "6628\n", "6630\n", "6632\n", "6634\n", "6636\n", "6638\n", "6640\n", "6642\n", "6644\n", "6646\n", "6648\n", "6650\n", "6652\n", "6654\n", "6656\n", "6658\n", "6660\n", "6662\n", "6664\n", "6666\n", "6668\n", "6670\n", "6672\n", "6674\n", "6676\n", "6678\n", "6680\n", "6682\n", "6684\n", "6686\n", "6688\n", "6690\n", "6692\n", "6694\n", "6696\n", "6698\n", "6700\n", "6702\n", "6704\n", "6706\n", "6708\n", "6710\n", "6712\n", "6714\n", "6716\n", "6718\n", "6720\n", "6722\n", "6724\n", "6726\n", "6728\n", "6730\n", "6732\n", "6734\n", "6736\n", "6738\n", "6740\n", "6742\n", "6744\n", "6746\n", "6748\n", "6750\n", "6752\n", "6754\n", "6756\n", "6758\n", "6760\n", "6762\n", "6764\n", "6766\n", "6768\n", "6770\n", "6772\n", "6774\n", "6776\n", "6778\n", "6780\n", "6782\n", "6784\n", "6786\n", "6788\n", "6790\n", "6792\n", "6794\n", "6796\n", "6798\n", "6800\n", "6802\n", "6804\n", "6806\n", "6808\n", "6810\n", "6812\n", "6814\n", "6816\n", "6818\n", "6820\n", "6822\n", "6824\n", "6826\n", "6828\n", "6830\n", "6832\n", "6834\n", "6836\n", "6838\n", "6840\n", "6842\n", "6844\n", "6846\n", "6848\n", "6850\n", "6852\n", "6854\n", "6856\n", "6858\n", "6860\n", "6862\n", "6864\n", "6866\n", "6868\n", "6870\n", "6872\n", "6874\n", "6876\n", "6878\n", "6880\n", "6882\n", "6884\n", "6886\n", "6888\n", "6890\n", "6892\n", "6894\n", "6896\n", "6898\n", "6900\n", "6902\n", "6904\n", "6906\n", "6908\n", "6910\n", "6912\n", "6914\n", "6916\n", "6918\n", "6920\n", "6922\n", "6924\n", "6926\n", "6928\n", "6930\n", "6932\n", "6934\n", "6936\n", "6938\n", "6940\n", "6942\n", "6944\n", "6946\n", "6948\n", "6950\n", "6952\n", "6954\n", "6956\n", "6958\n", "6960\n", "6962\n", "6964\n", "6966\n", "6968\n", "6970\n", "6972\n", "6974\n", "6976\n", "6978\n", "6980\n", "6982\n", "6984\n", "6986\n", "6988\n", "6990\n", "6992\n", "6994\n", "6996\n", "6998\n", "7000\n", "7002\n", "7004\n", "7006\n", "7008\n", "7010\n", "7012\n", "7014\n", "7016\n", "7018\n", "7020\n", "7022\n", "7024\n", "7026\n", "7028\n", "7030\n", "7032\n", "7034\n", "7036\n", "7038\n", "7040\n", "7042\n", "7044\n", "7046\n", "7048\n", "7050\n", "7052\n", "7054\n", "7056\n", "7058\n", "7060\n", "7062\n", "7064\n", "7066\n", "7068\n", "7070\n", "7072\n", "7074\n", "7076\n", "7078\n", "7080\n", "7082\n", "7084\n", "7086\n", "7088\n", "7090\n", "7092\n", "7094\n", "7096\n", "7098\n", "7100\n", "7102\n", "7104\n", "7106\n", "7108\n", "7110\n", "7112\n", "7114\n", "7116\n", "7118\n", "7120\n", "7122\n", "7124\n", "7126\n", "7128\n", "7130\n", "7132\n", "7134\n", "7136\n", "7138\n", "7140\n", "7142\n", "7144\n", "7146\n", "7148\n", "7150\n", "7152\n", "7154\n", "7156\n", "7158\n", "7160\n", "7162\n", "7164\n", "7166\n", "7168\n", "7170\n", "7172\n", "7174\n", "7176\n", "7178\n", "7180\n", "7182\n", "7184\n", "7186\n", "7188\n", "7190\n", "7192\n", "7194\n", "7196\n", "7198\n", "7200\n", "7202\n", "7204\n", "7206\n", "7208\n", "7210\n", "7212\n", "7214\n", "7216\n", "7218\n", "7220\n", "7222\n", "7224\n", "7226\n", "7228\n", "7230\n", "7232\n", "7234\n", "7236\n", "7238\n", "7240\n", "7242\n", "7244\n", "7246\n", "7248\n", "7250\n", "7252\n", "7254\n", "7256\n", "7258\n", "7260\n", "7262\n", "7264\n", "7266\n", "7268\n", "7270\n", "7272\n", "7274\n", "7276\n", "7278\n", "7280\n", "7282\n", "7284\n", "7286\n", "7288\n", "7290\n", "7292\n", "7294\n", "7296\n", "7298\n", "7300\n", "7302\n", "7304\n", "7306\n", "7308\n", "7310\n", "7312\n", "7314\n", "7316\n", "7318\n", "7320\n", "7322\n", "7324\n", "7326\n", "7328\n", "7330\n", "7332\n", "7334\n", "7336\n", "7338\n", "7340\n", "7342\n", "7344\n", "7346\n", "7348\n", "7350\n", "7352\n", "7354\n", "7356\n", "7358\n", "7360\n", "7362\n", "7364\n", "7366\n", "7368\n", "7370\n", "7372\n", "7374\n", "7376\n", "7378\n", "7380\n", "7382\n", "7384\n", "7386\n", "7388\n", "7390\n", "7392\n", "7394\n", "7396\n", "7398\n", "7400\n", "7402\n", "7404\n", "7406\n", "7408\n", "7410\n", "7412\n", "7414\n", "7416\n", "7418\n", "7420\n", "7422\n", "7424\n", "7426\n", "7428\n", "7430\n", "7432\n", "7434\n", "7436\n", "7438\n", "7440\n", "7442\n", "7444\n", "7446\n", "7448\n", "7450\n", "7452\n", "7454\n", "7456\n", "7458\n", "7460\n", "7462\n", "7464\n", "7466\n", "7468\n", "7470\n", "7472\n", "7474\n", "7476\n", "7478\n", "7480\n", "7482\n", "7484\n", "7486\n", "7488\n", "7490\n", "7492\n", "7494\n", "7496\n", "7498\n", "7500\n", "7502\n", "7504\n", "7506\n", "7508\n", "7510\n", "7512\n", "7514\n", "7516\n", "7518\n", "7520\n", "7522\n", "7524\n", "7526\n", "7528\n", "7530\n", "7532\n", "7534\n", "7536\n", "7538\n", "7540\n", "7542\n", "7544\n", "7546\n", "7548\n", "7550\n", "7552\n", "7554\n", "7556\n", "7558\n", "7560\n", "7562\n", "7564\n", "7566\n", "7568\n", "7570\n", "7572\n", "7574\n", "7576\n", "7578\n", "7580\n", "7582\n", "7584\n", "7586\n", "7588\n", "7590\n", "7592\n", "7594\n", "7596\n", "7598\n", "7600\n", "7602\n", "7604\n", "7606\n", "7608\n", "7610\n", "7612\n", "7614\n", "7616\n", "7618\n", "7620\n", "7622\n", "7624\n", "7626\n", "7628\n", "7630\n", "7632\n", "7634\n", "7636\n", "7638\n", "7640\n", "7642\n", "7644\n", "7646\n", "7648\n", "7650\n", "7652\n", "7654\n", "7656\n", "7658\n", "7660\n", "7662\n", "7664\n", "7666\n", "7668\n", "7670\n", "7672\n", "7674\n", "7676\n", "7678\n", "7680\n", "7682\n", "7684\n", "7686\n", "7688\n", "7690\n", "7692\n", "7694\n", "7696\n", "7698\n", "7700\n", "7702\n", "7704\n", "7706\n", "7708\n", "7710\n", "7712\n", "7714\n", "7716\n", "7718\n", "7720\n", "7722\n", "7724\n", "7726\n", "7728\n", "7730\n", "7732\n", "7734\n", "7736\n", "7738\n", "7740\n", "7742\n", "7744\n", "7746\n", "7748\n", "7750\n", "7752\n", "7754\n", "7756\n", "7758\n", "7760\n", "7762\n", "7764\n", "7766\n", "7768\n", "7770\n", "7772\n", "7774\n", "7776\n", "7778\n", "7780\n", "7782\n", "7784\n", "7786\n", "7788\n", "7790\n", "7792\n", "7794\n", "7796\n", "7798\n", "7800\n", "7802\n", "7804\n", "7806\n", "7808\n", "7810\n", "7812\n", "7814\n", "7816\n", "7818\n", "7820\n", "7822\n", "7824\n", "7826\n", "7828\n", "7830\n", "7832\n", "7834\n", "7836\n", "7838\n", "7840\n", "7842\n", "7844\n", "7846\n", "7848\n", "7850\n", "7852\n", "7854\n", "7856\n", "7858\n", "7860\n", "7862\n", "7864\n", "7866\n", "7868\n", "7870\n", "7872\n", "7874\n", "7876\n", "7878\n", "7880\n", "7882\n", "7884\n", "7886\n", "7888\n", "7890\n", "7892\n", "7894\n", "7896\n", "7898\n", "7900\n", "7902\n", "7904\n", "7906\n", "7908\n", "7910\n", "7912\n", "7914\n", "7916\n", "7918\n", "7920\n", "7922\n", "7924\n", "7926\n", "7928\n", "7930\n", "7932\n", "7934\n", "7936\n", "7938\n", "7940\n", "7942\n", "7944\n", "7946\n", "7948\n", "7950\n", "7952\n", "7954\n", "7956\n", "7958\n", "7960\n", "7962\n", "7964\n", "7966\n", "7968\n", "7970\n", "7972\n", "7974\n", "7976\n", "7978\n", "7980\n", "7982\n", "7984\n", "7986\n", "7988\n", "7990\n", "7992\n", "7994\n", "7996\n", "7998\n", "8000\n", "8002\n", "8004\n", "8006\n", "8008\n", "8010\n", "8012\n", "8014\n", "8016\n", "8018\n", "8020\n", "8022\n", "8024\n", "8026\n", "8028\n", "8030\n", "8032\n", "8034\n", "8036\n", "8038\n", "8040\n", "8042\n", "8044\n", "8046\n", "8048\n", "8050\n", "8052\n", "8054\n", "8056\n", "8058\n", "8060\n", "8062\n", "8064\n", "8066\n", "8068\n", "8070\n", "8072\n", "8074\n", "8076\n", "8078\n", "8080\n", "8082\n", "8084\n", "8086\n", "8088\n", "8090\n", "8092\n", "8094\n", "8096\n", "8098\n", "8100\n", "8102\n", "8104\n", "8106\n", "8108\n", "8110\n", "8112\n", "8114\n", "8116\n", "8118\n", "8120\n", "8122\n", "8124\n", "8126\n", "8128\n", "8130\n", "8132\n", "8134\n", "8136\n", "8138\n", "8140\n", "8142\n", "8144\n", "8146\n", "8148\n", "8150\n", "8152\n", "8154\n", "8156\n", "8158\n", "8160\n", "8162\n", "8164\n", "8166\n", "8168\n", "8170\n", "8172\n", "8174\n", "8176\n", "8178\n", "8180\n", "8182\n", "8184\n", "8186\n", "8188\n", "8190\n", "8192\n", "8194\n", "8196\n", "8198\n", "8200\n", "8202\n", "8204\n", "8206\n", "8208\n", "8210\n", "8212\n", "8214\n", "8216\n", "8218\n", "8220\n", "8222\n", "8224\n", "8226\n", "8228\n", "8230\n", "8232\n", "8234\n", "8236\n", "8238\n", "8240\n", "8242\n", "8244\n", "8246\n", "8248\n", "8250\n", "8252\n", "8254\n", "8256\n", "8258\n", "8260\n", "8262\n", "8264\n", "8266\n", "8268\n", "8270\n", "8272\n", "8274\n", "8276\n", "8278\n", "8280\n", "8282\n", "8284\n", "8286\n", "8288\n", "8290\n", "8292\n", "8294\n", "8296\n", "8298\n", "8300\n", "8302\n", "8304\n", "8306\n", "8308\n", "8310\n", "8312\n", "8314\n", "8316\n", "8318\n", "8320\n", "8322\n", "8324\n", "8326\n", "8328\n", "8330\n", "8332\n", "8334\n", "8336\n", "8338\n", "8340\n", "8342\n", "8344\n", "8346\n", "8348\n", "8350\n", "8352\n", "8354\n", "8356\n", "8358\n", "8360\n", "8362\n", "8364\n", "8366\n", "8368\n", "8370\n", "8372\n", "8374\n", "8376\n", "8378\n", "8380\n", "8382\n", "8384\n", "8386\n", "8388\n", "8390\n", "8392\n", "8394\n", "8396\n", "8398\n", "8400\n", "8402\n", "8404\n", "8406\n", "8408\n", "8410\n", "8412\n", "8414\n", "8416\n", "8418\n", "8420\n", "8422\n", "8424\n", "8426\n", "8428\n", "8430\n", "8432\n", "8434\n", "8436\n", "8438\n", "8440\n", "8442\n", "8444\n", "8446\n", "8448\n", "8450\n", "8452\n", "8454\n", "8456\n", "8458\n", "8460\n", "8462\n", "8464\n", "8466\n", "8468\n", "8470\n", "8472\n", "8474\n", "8476\n", "8478\n", "8480\n", "8482\n", "8484\n", "8486\n", "8488\n", "8490\n", "8492\n", "8494\n", "8496\n", "8498\n", "8500\n", "8502\n", "8504\n", "8506\n", "8508\n", "8510\n", "8512\n", "8514\n", "8516\n", "8518\n", "8520\n", "8522\n", "8524\n", "8526\n", "8528\n", "8530\n", "8532\n", "8534\n", "8536\n", "8538\n", "8540\n", "8542\n", "8544\n", "8546\n", "8548\n", "8550\n", "8552\n", "8554\n", "8556\n", "8558\n", "8560\n", "8562\n", "8564\n", "8566\n", "8568\n", "8570\n", "8572\n", "8574\n", "8576\n", "8578\n", "8580\n", "8582\n", "8584\n", "8586\n", "8588\n", "8590\n", "8592\n", "8594\n", "8596\n", "8598\n", "8600\n", "8602\n", "8604\n", "8606\n", "8608\n", "8610\n", "8612\n", "8614\n", "8616\n", "8618\n", "8620\n", "8622\n", "8624\n", "8626\n", "8628\n", "8630\n", "8632\n", "8634\n", "8636\n", "8638\n", "8640\n", "8642\n", "8644\n", "8646\n", "8648\n", "8650\n", "8652\n", "8654\n", "8656\n", "8658\n", "8660\n", "8662\n", "8664\n", "8666\n", "8668\n", "8670\n", "8672\n", "8674\n", "8676\n", "8678\n", "8680\n", "8682\n", "8684\n", "8686\n", "8688\n", "8690\n", "8692\n", "8694\n", "8696\n", "8698\n", "8700\n", "8702\n", "8704\n", "8706\n", "8708\n", "8710\n", "8712\n", "8714\n", "8716\n", "8718\n", "8720\n", "8722\n", "8724\n", "8726\n", "8728\n", "8730\n", "8732\n", "8734\n", "8736\n", "8738\n", "8740\n", "8742\n", "8744\n", "8746\n", "8748\n", "8750\n", "8752\n", "8754\n", "8756\n", "8758\n", "8760\n", "8762\n", "8764\n", "8766\n", "8768\n", "8770\n", "8772\n", "8774\n", "8776\n", "8778\n", "8780\n", "8782\n", "8784\n", "8786\n", "8788\n", "8790\n", "8792\n", "8794\n", "8796\n", "8798\n", "8800\n", "8802\n", "8804\n", "8806\n", "8808\n", "8810\n", "8812\n", "8814\n", "8816\n", "8818\n", "8820\n", "8822\n", "8824\n", "8826\n", "8828\n", "8830\n", "8832\n", "8834\n", "8836\n", "8838\n", "8840\n", "8842\n", "8844\n", "8846\n", "8848\n", "8850\n", "8852\n", "8854\n", "8856\n", "8858\n", "8860\n", "8862\n", "8864\n", "8866\n", "8868\n", "8870\n", "8872\n", "8874\n", "8876\n", "8878\n", "8880\n", "8882\n", "8884\n", "8886\n", "8888\n", "8890\n", "8892\n", "8894\n", "8896\n", "8898\n", "8900\n", "8902\n", "8904\n", "8906\n", "8908\n", "8910\n", "8912\n", "8914\n", "8916\n", "8918\n", "8920\n", "8922\n", "8924\n", "8926\n", "8928\n", "8930\n", "8932\n", "8934\n", "8936\n", "8938\n", "8940\n", "8942\n", "8944\n", "8946\n", "8948\n", "8950\n", "8952\n", "8954\n", "8956\n", "8958\n", "8960\n", "8962\n", "8964\n", "8966\n", "8968\n", "8970\n", "8972\n", "8974\n", "8976\n", "8978\n", "8980\n", "8982\n", "8984\n", "8986\n", "8988\n", "8990\n", "8992\n", "8994\n", "8996\n", "8998\n", "9000\n", "9002\n", "9004\n", "9006\n", "9008\n", "9010\n", "9012\n", "9014\n", "9016\n", "9018\n", "9020\n", "9022\n", "9024\n", "9026\n", "9028\n", "9030\n", "9032\n", "9034\n", "9036\n", "9038\n", "9040\n", "9042\n", "9044\n", "9046\n", "9048\n", "9050\n", "9052\n", "9054\n", "9056\n", "9058\n", "9060\n", "9062\n", "9064\n", "9066\n", "9068\n", "9070\n", "9072\n", "9074\n", "9076\n", "9078\n", "9080\n", "9082\n", "9084\n", "9086\n", "9088\n", "9090\n", "9092\n", "9094\n", "9096\n", "9098\n", "9100\n", "9102\n", "9104\n", "9106\n", "9108\n", "9110\n", "9112\n", "9114\n", "9116\n", "9118\n", "9120\n", "9122\n", "9124\n", "9126\n", "9128\n", "9130\n", "9132\n", "9134\n", "9136\n", "9138\n", "9140\n", "9142\n", "9144\n", "9146\n", "9148\n", "9150\n", "9152\n", "9154\n", "9156\n", "9158\n", "9160\n", "9162\n", "9164\n", "9166\n", "9168\n", "9170\n", "9172\n", "9174\n", "9176\n", "9178\n", "9180\n", "9182\n", "9184\n", "9186\n", "9188\n", "9190\n", "9192\n", "9194\n", "9196\n", "9198\n", "9200\n", "9202\n", "9204\n", "9206\n", "9208\n", "9210\n", "9212\n", "9214\n", "9216\n", "9218\n", "9220\n", "9222\n", "9224\n", "9226\n", "9228\n", "9230\n", "9232\n", "9234\n", "9236\n", "9238\n", "9240\n", "9242\n", "9244\n", "9246\n", "9248\n", "9250\n", "9252\n", "9254\n", "9256\n", "9258\n", "9260\n", "9262\n", "9264\n", "9266\n", "9268\n", "9270\n", "9272\n", "9274\n", "9276\n", "9278\n", "9280\n", "9282\n", "9284\n", "9286\n", "9288\n", "9290\n", "9292\n", "9294\n", "9296\n", "9298\n", "9300\n", "9302\n", "9304\n", "9306\n", "9308\n", "9310\n", "9312\n", "9314\n", "9316\n", "9318\n", "9320\n", "9322\n", "9324\n", "9326\n", "9328\n", "9330\n", "9332\n", "9334\n", "9336\n", "9338\n", "9340\n", "9342\n", "9344\n", "9346\n", "9348\n", "9350\n", "9352\n", "9354\n", "9356\n", "9358\n", "9360\n", "9362\n", "9364\n", "9366\n", "9368\n", "9370\n", "9372\n", "9374\n", "9376\n", "9378\n", "9380\n", "9382\n", "9384\n", "9386\n", "9388\n", "9390\n", "9392\n", "9394\n", "9396\n", "9398\n", "9400\n", "9402\n", "9404\n", "9406\n", "9408\n", "9410\n", "9412\n", "9414\n", "9416\n", "9418\n", "9420\n", "9422\n", "9424\n", "9426\n", "9428\n", "9430\n", "9432\n", "9434\n", "9436\n", "9438\n", "9440\n", "9442\n", "9444\n", "9446\n", "9448\n", "9450\n", "9452\n", "9454\n", "9456\n", "9458\n", "9460\n", "9462\n", "9464\n", "9466\n", "9468\n", "9470\n", "9472\n", "9474\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "9476\n", "9478\n", "9480\n", "9482\n", "9484\n", "9486\n", "9488\n", "9490\n", "9492\n", "9494\n", "9496\n", "9498\n", "9500\n", "9502\n", "9504\n", "9506\n", "9508\n", "9510\n", "9512\n", "9514\n", "9516\n", "9518\n", "9520\n", "9522\n", "9524\n", "9526\n", "9528\n", "9530\n", "9532\n", "9534\n", "9536\n", "9538\n", "9540\n", "9542\n", "9544\n", "9546\n", "9548\n", "9550\n", "9552\n", "9554\n", "9556\n", "9558\n", "9560\n", "9562\n", "9564\n", "9566\n", "9568\n", "9570\n", "9572\n", "9574\n", "9576\n", "9578\n", "9580\n", "9582\n", "9584\n", "9586\n", "9588\n", "9590\n", "9592\n", "9594\n", "9596\n", "9598\n", "9600\n", "9602\n", "9604\n", "9606\n", "9608\n", "9610\n", "9612\n", "9614\n", "9616\n", "9618\n", "9620\n", "9622\n", "9624\n", "9626\n", "9628\n", "9630\n", "9632\n", "9634\n", "9636\n", "9638\n", "9640\n", "9642\n", "9644\n", "9646\n", "9648\n", "9650\n", "9652\n", "9654\n", "9656\n", "9658\n", "9660\n", "9662\n", "9664\n", "9666\n", "9668\n", "9670\n", "9672\n", "9674\n", "9676\n", "9678\n", "9680\n", "9682\n", "9684\n", "9686\n", "9688\n", "9690\n", "9692\n", "9694\n", "9696\n", "9698\n", "9700\n", "9702\n", "9704\n", "9706\n", "9708\n", "9710\n", "9712\n", "9714\n", "9716\n", "9718\n", "9720\n", "9722\n", "9724\n", "9726\n", "9728\n", "9730\n", "9732\n", "9734\n", "9736\n", "9738\n", "9740\n", "9742\n", "9744\n", "9746\n", "9748\n", "9750\n", "9752\n", "9754\n", "9756\n", "9758\n", "9760\n", "9762\n", "9764\n", "9766\n", "9768\n", "9770\n", "9772\n", "9774\n", "9776\n", "9778\n", "9780\n", "9782\n", "9784\n", "9786\n", "9788\n", "9790\n", "9792\n", "9794\n", "9796\n", "9798\n", "9800\n", "9802\n", "9804\n", "9806\n", "9808\n", "9810\n", "9812\n", "9814\n", "9816\n", "9818\n", "9820\n", "9822\n", "9824\n", "9826\n", "9828\n", "9830\n", "9832\n", "9834\n", "9836\n", "9838\n", "9840\n", "9842\n", "9844\n", "9846\n", "9848\n", "9850\n", "9852\n", "9854\n", "9856\n", "9858\n", "9860\n", "9862\n", "9864\n", "9866\n", "9868\n", "9870\n", "9872\n", "9874\n", "9876\n", "9878\n", "9880\n", "9882\n", "9884\n", "9886\n", "9888\n", "9890\n", "9892\n", "9894\n", "9896\n", "9898\n", "9900\n", "9902\n", "9904\n", "9906\n", "9908\n", "9910\n", "9912\n", "9914\n", "9916\n", "9918\n", "9920\n", "9922\n", "9924\n", "9926\n", "9928\n", "9930\n", "9932\n", "9934\n", "9936\n", "9938\n", "9940\n", "9942\n", "9944\n", "9946\n", "9948\n", "9950\n", "9952\n", "9954\n", "9956\n", "9958\n", "9960\n", "9962\n", "9964\n", "9966\n", "9968\n", "9970\n", "9972\n", "9974\n", "9976\n", "9978\n", "9980\n", "9982\n", "9984\n", "9986\n", "9988\n", "9990\n", "9992\n", "9994\n", "9996\n", "9998\n", "10000\n", "10002\n", "10004\n", "10006\n", "10008\n", "10010\n", "10012\n", "10014\n", "10016\n", "10018\n", "10020\n", "10022\n", "10024\n", "10026\n", "10028\n", "10030\n", "10032\n", "10034\n", "10036\n", "10038\n", "10040\n", "10042\n", "10044\n", "10046\n", "10048\n", "10050\n", "10052\n", "10054\n", "10056\n", "10058\n", "10060\n", "10062\n", "10064\n", "10066\n", "10068\n", "10070\n", "10072\n", "10074\n", "10076\n", "10078\n", "10080\n", "10082\n", "10084\n", "10086\n", "10088\n", "10090\n", "10092\n", "10094\n", "10096\n", "10098\n", "10100\n", "10102\n", "10104\n", "10106\n", "10108\n", "10110\n", "10112\n", "10114\n", "10116\n", "10118\n", "10120\n", "10122\n", "10124\n", "10126\n", "10128\n", "10130\n", "10132\n", "10134\n", "10136\n", "10138\n", "10140\n", "10142\n", "10144\n", "10146\n", "10148\n", "10150\n", "10152\n", "10154\n", "10156\n", "10158\n", "10160\n", "10162\n", "10164\n", "10166\n", "10168\n", "10170\n", "10172\n", "10174\n", "10176\n", "10178\n", "10180\n", "10182\n", "10184\n", "10186\n", "10188\n", "10190\n", "10192\n", "10194\n", "10196\n", "10198\n", "10200\n", "10202\n", "10204\n", "10206\n", "10208\n", "10210\n", "10212\n", "10214\n", "10216\n", "10218\n", "10220\n", "10222\n", "10224\n", "10226\n", "10228\n", "10230\n", "10232\n", "10234\n", "10236\n", "10238\n", "10240\n", "10242\n", "10244\n", "10246\n", "10248\n", "10250\n", "10252\n", "10254\n", "10256\n", "10258\n", "10260\n", "10262\n", "10264\n", "10266\n", "10268\n", "10270\n", "10272\n", "10274\n", "10276\n", "10278\n", "10280\n", "10282\n", "10284\n", "10286\n", "10288\n", "10290\n", "10292\n", "10294\n", "10296\n", "10298\n", "10300\n", "10302\n", "10304\n", "10306\n", "10308\n", "10310\n", "10312\n", "10314\n", "10316\n", "10318\n", "10320\n", "10322\n", "10324\n", "10326\n", "10328\n", "10330\n", "10332\n", "10334\n", "10336\n", "10338\n", "10340\n", "10342\n", "10344\n", "10346\n", "10348\n", "10350\n", "10352\n", "10354\n", "10356\n", "10358\n", "10360\n", "10362\n", "10364\n", "10366\n", "10368\n", "10370\n", "10372\n", "10374\n", "10376\n", "10378\n", "10380\n", "10382\n", "10384\n", "10386\n", "10388\n", "10390\n", "10392\n", "10394\n", "10396\n", "10398\n", "10400\n", "10402\n", "10404\n", "10406\n", "10408\n", "10410\n", "10412\n", "10414\n", "10416\n", "10418\n", "10420\n", "10422\n", "10424\n", "10426\n", "10428\n", "10430\n", "10432\n", "10434\n", "10436\n", "10438\n", "10440\n", "10442\n", "10444\n", "10446\n", "10448\n", "10450\n", "10452\n", "10454\n", "10456\n", "10458\n", "10460\n", "10462\n", "10464\n", "10466\n", "10468\n", "10470\n", "10472\n", "10474\n", "10476\n", "10478\n", "10480\n", "10482\n", "10484\n", "10486\n", "10488\n", "10490\n", "10492\n", "10494\n", "10496\n", "10498\n", "10500\n", "10502\n", "10504\n", "10506\n", "10508\n", "10510\n", "10512\n", "10514\n", "10516\n", "10518\n", "10520\n", "10522\n", "10524\n", "10526\n", "10528\n", "10530\n", "10532\n", "10534\n", "10536\n", "10538\n", "10540\n", "10542\n", "10544\n", "10546\n", "10548\n", "10550\n", "10552\n", "10554\n", "10556\n", "10558\n", "10560\n", "10562\n", "10564\n", "10566\n", "10568\n", "10570\n", "10572\n", "10574\n", "10576\n", "10578\n", "10580\n", "10582\n", "10584\n", "10586\n", "10588\n", "10590\n", "10592\n", "10594\n", "10596\n", "10598\n", "10600\n", "10602\n", "10604\n", "10606\n", "10608\n", "10610\n", "10612\n", "10614\n", "10616\n", "10618\n", "10620\n", "10622\n", "10624\n", "10626\n", "10628\n", "10630\n", "10632\n", "10634\n", "10636\n", "10638\n", "10640\n", "10642\n", "10644\n", "10646\n", "10648\n", "10650\n", "10652\n", "10654\n", "10656\n", "10658\n", "10660\n", "10662\n", "10664\n", "10666\n", "10668\n", "10670\n", "10672\n", "10674\n", "10676\n", "10678\n", "10680\n", "10682\n", "10684\n", "10686\n", "10688\n", "10690\n", "10692\n", "10694\n", "10696\n", "10698\n", "10700\n", "10702\n", "10704\n", "10706\n", "10708\n", "10710\n", "10712\n", "10714\n", "10716\n", "10718\n", "10720\n", "10722\n", "10724\n", "10726\n", "10728\n", "10730\n", "10732\n", "10734\n", "10736\n", "10738\n", "10740\n", "10742\n", "10744\n", "10746\n", "10748\n", "10750\n", "10752\n", "10754\n", "10756\n", "10758\n", "10760\n", "10762\n", "10764\n", "10766\n", "10768\n", "10770\n", "10772\n", "10774\n", "10776\n", "10778\n", "10780\n", "10782\n", "10784\n", "10786\n", "10788\n", "10790\n", "10792\n", "10794\n", "10796\n", "10798\n", "10800\n", "10802\n", "10804\n", "10806\n", "10808\n", "10810\n", "10812\n", "10814\n", "10816\n", "10818\n", "10820\n", "10822\n", "10824\n", "10826\n", "10828\n", "10830\n", "10832\n", "10834\n", "10836\n", "10838\n", "10840\n", "10842\n", "10844\n", "10846\n", "10848\n", "10850\n", "10852\n", "10854\n", "10856\n", "10858\n", "10860\n", "10862\n", "10864\n", "10866\n", "10868\n", "10870\n", "10872\n", "10874\n", "10876\n", "10878\n", "10880\n", "10882\n", "10884\n", "10886\n", "10888\n", "10890\n", "10892\n", "10894\n", "10896\n", "10898\n", "10900\n", "10902\n", "10904\n", "10906\n", "10908\n", "10910\n", "10912\n", "10914\n", "10916\n", "10918\n", "10920\n", "10922\n", "10924\n", "10926\n", "10928\n", "10930\n", "10932\n", "10934\n", "10936\n", "10938\n", "10940\n", "10942\n", "10944\n", "10946\n", "10948\n", "10950\n", "10952\n", "10954\n", "10956\n", "10958\n", "10960\n", "10962\n", "10964\n", "10966\n", "10968\n", "10970\n", "10972\n", "10974\n", "10976\n", "10978\n", "10980\n", "10982\n", "10984\n", "10986\n", "10988\n", "10990\n", "10992\n", "10994\n", "10996\n", "10998\n", "11000\n", "11002\n", "11004\n", "11006\n", "11008\n", "11010\n", "11012\n", "11014\n", "11016\n", "11018\n", "11020\n", "11022\n", "11024\n", "11026\n", "11028\n", "11030\n", "11032\n", "11034\n", "11036\n", "11038\n", "11040\n", "11042\n", "11044\n", "11046\n", "11048\n", "11050\n", "11052\n", "11054\n", "11056\n", "11058\n", "11060\n", "11062\n", "11064\n", "11066\n", "11068\n", "11070\n", "11072\n", "11074\n", "11076\n", "11078\n", "11080\n", "11082\n", "11084\n", "11086\n", "11088\n", "11090\n", "11092\n", "11094\n", "11096\n", "11098\n", "11100\n", "11102\n", "11104\n", "11106\n", "11108\n", "11110\n", "11112\n", "11114\n", "11116\n", "11118\n", "11120\n", "11122\n", "11124\n", "11126\n", "11128\n", "11130\n", "11132\n", "11134\n", "11136\n", "11138\n", "11140\n", "11142\n", "11144\n", "11146\n", "11148\n", "11150\n", "11152\n", "11154\n", "11156\n", "11158\n", "11160\n", "11162\n", "11164\n", "11166\n", "11168\n", "11170\n", "11172\n", "11174\n", "11176\n", "11178\n", "11180\n", "11182\n", "11184\n", "11186\n", "11188\n", "11190\n", "11192\n", "11194\n", "11196\n", "11198\n", "11200\n", "11202\n", "11204\n", "11206\n", "11208\n", "11210\n", "11212\n", "11214\n", "11216\n", "11218\n", "11220\n", "11222\n", "11224\n", "11226\n", "11228\n", "11230\n", "11232\n", "11234\n", "11236\n", "11238\n", "11240\n", "11242\n", "11244\n", "11246\n", "11248\n", "11250\n", "11252\n", "11254\n", "11256\n", "11258\n", "11260\n", "11262\n", "11264\n", "11266\n", "11268\n", "11270\n", "11272\n", "11274\n", "11276\n", "11278\n", "11280\n", "11282\n", "11284\n", "11286\n", "11288\n", "11290\n", "11292\n", "11294\n", "11296\n", "11298\n", "11300\n", "11302\n", "11304\n", "11306\n", "11308\n", "11310\n", "11312\n", "11314\n", "11316\n", "11318\n", "11320\n", "11322\n", "11324\n", "11326\n", "11328\n", "11330\n", "11332\n", "11334\n", "11336\n", "11338\n", "11340\n", "11342\n", "11344\n", "11346\n", "11348\n", "11350\n", "11352\n", "11354\n", "11356\n", "11358\n", "11360\n", "11362\n", "11364\n", "11366\n", "11368\n", "11370\n", "11372\n", "11374\n", "11376\n", "11378\n", "11380\n", "11382\n", "11384\n", "11386\n", "11388\n", "11390\n", "11392\n", "11394\n", "11396\n", "11398\n", "11400\n", "11402\n", "11404\n", "11406\n", "11408\n", "11410\n", "11412\n", "11414\n", "11416\n", "11418\n", "11420\n", "11422\n", "11424\n", "11426\n", "11428\n", "11430\n", "11432\n", "11434\n", "11436\n", "11438\n", "11440\n", "11442\n", "11444\n", "11446\n", "11448\n", "11450\n", "11452\n", "11454\n", "11456\n", "11458\n", "11460\n", "11462\n", "11464\n", "11466\n", "11468\n", "11470\n", "11472\n", "11474\n", "11476\n", "11478\n", "11480\n", "11482\n", "11484\n", "11486\n", "11488\n", "11490\n", "11492\n", "11494\n", "11496\n", "11498\n", "11500\n", "11502\n", "11504\n", "11506\n", "11508\n", "11510\n", "11512\n", "11514\n", "11516\n", "11518\n", "11520\n", "11522\n", "11524\n", "11526\n", "11528\n", "11530\n", "11532\n", "11534\n", "11536\n", "11538\n", "11540\n", "11542\n", "11544\n", "11546\n", "11548\n", "11550\n", "11552\n", "11554\n", "11556\n", "11558\n", "11560\n", "11562\n", "11564\n", "11566\n", "11568\n", "11570\n", "11572\n", "11574\n", "11576\n", "11578\n", "11580\n", "11582\n", "11584\n", "11586\n", "11588\n", "11590\n", "11592\n", "11594\n", "11596\n", "11598\n", "11600\n", "11602\n", "11604\n", "11606\n", "11608\n", "11610\n", "11612\n", "11614\n", "11616\n", "11618\n", "11620\n", "11622\n", "11624\n", "11626\n", "11628\n", "11630\n", "11632\n", "11634\n", "11636\n", "11638\n", "11640\n", "11642\n", "11644\n", "11646\n", "11648\n", "11650\n", "11652\n", "11654\n", "11656\n", "11658\n", "11660\n", "11662\n", "11664\n", "11666\n", "11668\n", "11670\n", "11672\n", "11674\n", "11676\n", "11678\n", "11680\n", "11682\n", "11684\n", "11686\n", "11688\n", "11690\n", "11692\n", "11694\n", "11696\n", "11698\n", "11700\n", "11702\n", "11704\n", "11706\n", "11708\n", "11710\n", "11712\n", "11714\n", "11716\n", "11718\n", "11720\n", "11722\n", "11724\n", "11726\n", "11728\n", "11730\n", "11732\n", "11734\n", "11736\n", "11738\n", "11740\n", "11742\n", "11744\n", "11746\n", "11748\n", "11750\n", "11752\n", "11754\n", "11756\n", "11758\n", "11760\n", "11762\n", "11764\n", "11766\n", "11768\n", "11770\n", "11772\n", "11774\n", "11776\n", "11778\n", "11780\n", "11782\n", "11784\n", "11786\n", "11788\n", "11790\n", "11792\n", "11794\n", "11796\n", "11798\n", "11800\n", "11802\n", "11804\n", "11806\n", "11808\n", "11810\n", "11812\n", "11814\n", "11816\n", "11818\n", "11820\n", "11822\n", "11824\n", "11826\n", "11828\n", "11830\n", "11832\n", "11834\n", "11836\n", "11838\n", "11840\n", "11842\n", "11844\n", "11846\n", "11848\n", "11850\n", "11852\n", "11854\n", "11856\n", "11858\n", "11860\n", "11862\n", "11864\n", "11866\n", "11868\n", "11870\n", "11872\n", "11874\n", "11876\n", "11878\n", "11880\n", "11882\n", "11884\n", "11886\n", "11888\n", "11890\n", "11892\n", "11894\n", "11896\n", "11898\n", "11900\n", "11902\n", "11904\n", "11906\n", "11908\n", "11910\n", "11912\n", "11914\n", "11916\n", "11918\n", "11920\n", "11922\n", "11924\n", "11926\n", "11928\n", "11930\n", "11932\n", "11934\n", "11936\n", "11938\n", "11940\n", "11942\n", "11944\n", "11946\n", "11948\n", "11950\n", "11952\n", "11954\n", "11956\n", "11958\n", "11960\n", "11962\n", "11964\n", "11966\n", "11968\n", "11970\n", "11972\n", "11974\n", "11976\n", "11978\n", "11980\n", "11982\n", "11984\n", "11986\n", "11988\n", "11990\n", "11992\n", "11994\n", "11996\n", "11998\n", "12000\n", "12002\n", "12004\n", "12006\n", "12008\n", "12010\n", "12012\n", "12014\n", "12016\n", "12018\n", "12020\n", "12022\n", "12024\n", "12026\n", "12028\n", "12030\n", "12032\n", "12034\n", "12036\n", "12038\n", "12040\n", "12042\n", "12044\n", "12046\n", "12048\n", "12050\n", "12052\n", "12054\n", "12056\n", "12058\n", "12060\n", "12062\n", "12064\n", "12066\n", "12068\n", "12070\n", "12072\n", "12074\n", "12076\n", "12078\n", "12080\n", "12082\n", "12084\n", "12086\n", "12088\n", "12090\n", "12092\n", "12094\n", "12096\n", "12098\n", "12100\n", "12102\n", "12104\n", "12106\n", "12108\n", "12110\n", "12112\n", "12114\n", "12116\n", "12118\n", "12120\n", "12122\n", "12124\n", "12126\n", "12128\n", "12130\n", "12132\n", "12134\n", "12136\n", "12138\n", "12140\n", "12142\n", "12144\n", "12146\n", "12148\n", "12150\n", "12152\n", "12154\n", "12156\n", "12158\n", "12160\n", "12162\n", "12164\n", "12166\n", "12168\n", "12170\n", "12172\n", "12174\n", "12176\n", "12178\n", "12180\n", "12182\n", "12184\n", "12186\n", "12188\n", "12190\n", "12192\n", "12194\n", "12196\n", "12198\n", "12200\n", "12202\n", "12204\n", "12206\n", "12208\n", "12210\n", "12212\n", "12214\n", "12216\n", "12218\n", "12220\n", "12222\n", "12224\n", "12226\n", "12228\n", "12230\n", "12232\n", "12234\n", "12236\n", "12238\n", "12240\n", "12242\n", "12244\n", "12246\n", "12248\n", "12250\n", "12252\n", "12254\n", "12256\n", "12258\n", "12260\n", "12262\n", "12264\n", "12266\n", "12268\n", "12270\n", "12272\n", "12274\n", "12276\n", "12278\n", "12280\n", "12282\n", "12284\n", "12286\n", "12288\n", "12290\n", "12292\n", "12294\n", "12296\n", "12298\n", "12300\n", "12302\n", "12304\n", "12306\n", "12308\n", "12310\n", "12312\n", "12314\n", "12316\n", "12318\n", "12320\n", "12322\n", "12324\n", "12326\n", "12328\n", "12330\n", "12332\n", "12334\n", "12336\n", "12338\n", "12340\n", "12342\n", "12344\n", "12346\n", "12348\n", "12350\n", "12352\n", "12354\n", "12356\n", "12358\n", "12360\n", "12362\n", "12364\n", "12366\n", "12368\n", "12370\n", "12372\n", "12374\n", "12376\n", "12378\n", "12380\n", "12382\n", "12384\n", "12386\n", "12388\n", "12390\n", "12392\n", "12394\n", "12396\n", "12398\n", "12400\n", "12402\n", "12404\n", "12406\n", "12408\n", "12410\n", "12412\n", "12414\n", "12416\n", "12418\n", "12420\n", "12422\n", "12424\n", "12426\n", "12428\n", "12430\n", "12432\n", "12434\n", "12436\n", "12438\n", "12440\n", "12442\n", "12444\n", "12446\n", "12448\n", "12450\n", "12452\n", "12454\n", "12456\n", "12458\n", "12460\n", "12462\n", "12464\n", "12466\n", "12468\n", "12470\n", "12472\n", "12474\n", "12476\n", "12478\n", "12480\n", "12482\n", "12484\n", "12486\n", "12488\n", "12490\n", "12492\n", "12494\n", "12496\n", "12498\n", "12500\n", "12502\n", "12504\n", "12506\n", "12508\n", "12510\n", "12512\n", "12514\n", "12516\n", "12518\n", "12520\n", "12522\n", "12524\n", "12526\n", "12528\n", "12530\n", "12532\n", "12534\n", "12536\n", "12538\n", "12540\n", "12542\n", "12544\n", "12546\n", "12548\n", "12550\n", "12552\n", "12554\n", "12556\n", "12558\n", "12560\n", "12562\n", "12564\n", "12566\n", "12568\n", "12570\n", "12572\n", "12574\n", "12576\n", "12578\n", "12580\n", "12582\n", "12584\n", "12586\n", "12588\n", "12590\n", "12592\n", "12594\n", "12596\n", "12598\n", "12600\n", "12602\n", "12604\n", "12606\n", "12608\n", "12610\n", "12612\n", "12614\n", "12616\n", "12618\n", "12620\n", "12622\n", "12624\n", "12626\n", "12628\n", "12630\n", "12632\n", "12634\n", "12636\n", "12638\n", "12640\n", "12642\n", "12644\n", "12646\n", "12648\n", "12650\n", "12652\n", "12654\n", "12656\n", "12658\n", "12660\n", "12662\n", "12664\n", "12666\n", "12668\n", "12670\n", "12672\n", "12674\n", "12676\n", "12678\n", "12680\n", "12682\n", "12684\n", "12686\n", "12688\n", "12690\n", "12692\n", "12694\n", "12696\n", "12698\n", "12700\n", "12702\n", "12704\n", "12706\n", "12708\n", "12710\n", "12712\n", "12714\n", "12716\n", "12718\n", "12720\n", "12722\n", "12724\n", "12726\n", "12728\n", "12730\n", "12732\n", "12734\n", "12736\n", "12738\n", "12740\n", "12742\n", "12744\n", "12746\n", "12748\n", "12750\n", "12752\n", "12754\n", "12756\n", "12758\n", "12760\n", "12762\n", "12764\n", "12766\n", "12768\n", "12770\n", "12772\n", "12774\n", "12776\n", "12778\n", "12780\n", "12782\n", "12784\n", "12786\n", "12788\n", "12790\n", "12792\n", "12794\n", "12796\n", "12798\n", "12800\n", "12802\n", "12804\n", "12806\n", "12808\n", "12810\n", "12812\n", "12814\n", "12816\n", "12818\n", "12820\n", "12822\n", "12824\n", "12826\n", "12828\n", "12830\n", "12832\n", "12834\n", "12836\n", "12838\n", "12840\n", "12842\n", "12844\n", "12846\n", "12848\n", "12850\n", "12852\n", "12854\n", "12856\n", "12858\n", "12860\n", "12862\n", "12864\n", "12866\n", "12868\n", "12870\n", "12872\n", "12874\n", "12876\n", "12878\n", "12880\n", "12882\n", "12884\n", "12886\n", "12888\n", "12890\n", "12892\n", "12894\n", "12896\n", "12898\n", "12900\n", "12902\n", "12904\n", "12906\n", "12908\n", "12910\n", "12912\n", "12914\n", "12916\n", "12918\n", "12920\n", "12922\n", "12924\n", "12926\n", "12928\n", "12930\n", "12932\n", "12934\n", "12936\n", "12938\n", "12940\n", "12942\n", "12944\n", "12946\n", "12948\n", "12950\n", "12952\n", "12954\n", "12956\n", "12958\n", "12960\n", "12962\n", "12964\n", "12966\n", "12968\n", "12970\n", "12972\n", "12974\n", "12976\n", "12978\n", "12980\n", "12982\n", "12984\n", "12986\n", "12988\n", "12990\n", "12992\n", "12994\n", "12996\n", "12998\n", "13000\n", "13002\n", "13004\n", "13006\n", "13008\n", "13010\n", "13012\n", "13014\n", "13016\n", "13018\n", "13020\n", "13022\n", "13024\n", "13026\n", "13028\n", "13030\n", "13032\n", "13034\n", "13036\n", "13038\n", "13040\n", "13042\n", "13044\n", "13046\n", "13048\n", "13050\n", "13052\n", "13054\n", "13056\n", "13058\n", "13060\n", "13062\n", "13064\n", "13066\n", "13068\n", "13070\n", "13072\n", "13074\n", "13076\n", "13078\n", "13080\n", "13082\n", "13084\n", "13086\n", "13088\n", "13090\n", "13092\n", "13094\n", "13096\n", "13098\n", "13100\n", "13102\n", "13104\n", "13106\n", "13108\n", "13110\n", "13112\n", "13114\n", "13116\n", "13118\n", "13120\n", "13122\n", "13124\n", "13126\n", "13128\n", "13130\n", "13132\n", "13134\n", "13136\n", "13138\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "13140\n", "13142\n", "13144\n", "13146\n", "13148\n", "13150\n", "13152\n", "13154\n", "13156\n", "13158\n", "13160\n", "13162\n", "13164\n", "13166\n", "13168\n", "13170\n", "13172\n", "13174\n", "13176\n", "13178\n", "13180\n", "13182\n", "13184\n", "13186\n", "13188\n", "13190\n", "13192\n", "13194\n", "13196\n", "13198\n", "13200\n", "13202\n", "13204\n", "13206\n", "13208\n", "13210\n", "13212\n", "13214\n", "13216\n", "13218\n", "13220\n", "13222\n", "13224\n", "13226\n", "13228\n", "13230\n", "13232\n", "13234\n", "13236\n", "13238\n", "13240\n", "13242\n", "13244\n", "13246\n", "13248\n", "13250\n", "13252\n", "13254\n", "13256\n", "13258\n", "13260\n", "13262\n", "13264\n", "13266\n", "13268\n", "13270\n", "13272\n", "13274\n", "13276\n", "13278\n", "13280\n", "13282\n", "13284\n", "13286\n", "13288\n", "13290\n", "13292\n", "13294\n", "13296\n", "13298\n", "13300\n", "13302\n", "13304\n", "13306\n", "13308\n", "13310\n", "13312\n", "13314\n", "13316\n", "13318\n", "13320\n", "13322\n", "13324\n", "13326\n", "13328\n", "13330\n", "13332\n", "13334\n", "13336\n", "13338\n", "13340\n", "13342\n", "13344\n", "13346\n", "13348\n", "13350\n", "13352\n", "13354\n", "13356\n", "13358\n", "13360\n", "13362\n", "13364\n", "13366\n", "13368\n", "13370\n", "13372\n", "13374\n", "13376\n", "13378\n", "13380\n", "13382\n", "13384\n", "13386\n", "13388\n", "13390\n", "13392\n", "13394\n", "13396\n", "13398\n", "13400\n", "13402\n", "13404\n", "13406\n", "13408\n", "13410\n", "13412\n", "13414\n", "13416\n", "13418\n", "13420\n", "13422\n", "13424\n", "13426\n", "13428\n", "13430\n", "13432\n", "13434\n", "13436\n", "13438\n", "13440\n", "13442\n", "13444\n", "13446\n", "13448\n", "13450\n", "13452\n", "13454\n", "13456\n", "13458\n", "13460\n", "13462\n", "13464\n", "13466\n", "13468\n", "13470\n", "13472\n", "13474\n", "13476\n", "13478\n", "13480\n", "13482\n", "13484\n", "13486\n", "13488\n", "13490\n", "13492\n", "13494\n", "13496\n", "13498\n", "13500\n", "13502\n", "13504\n", "13506\n", "13508\n", "13510\n", "13512\n", "13514\n", "13516\n", "13518\n", "13520\n", "13522\n", "13524\n", "13526\n", "13528\n", "13530\n", "13532\n", "13534\n", "13536\n", "13538\n", "13540\n", "13542\n", "13544\n", "13546\n", "13548\n", "13550\n", "13552\n", "13554\n", "13556\n", "13558\n", "13560\n", "13562\n", "13564\n", "13566\n", "13568\n", "13570\n", "13572\n", "13574\n", "13576\n", "13578\n", "13580\n", "13582\n", "13584\n", "13586\n", "13588\n", "13590\n", "13592\n", "13594\n", "13596\n", "13598\n", "13600\n", "13602\n", "13604\n", "13606\n", "13608\n", "13610\n", "13612\n", "13614\n", "13616\n", "13618\n", "13620\n", "13622\n", "13624\n", "13626\n", "13628\n", "13630\n", "13632\n", "13634\n", "13636\n", "13638\n", "13640\n", "13642\n", "13644\n", "13646\n", "13648\n", "13650\n", "13652\n", "13654\n", "13656\n", "13658\n", "13660\n", "13662\n", "13664\n", "13666\n", "13668\n", "13670\n", "13672\n", "13674\n", "13676\n", "13678\n", "13680\n", "13682\n", "13684\n", "13686\n", "13688\n", "13690\n", "13692\n", "13694\n", "13696\n", "13698\n", "13700\n", "13702\n", "13704\n", "13706\n", "13708\n", "13710\n", "13712\n", "13714\n", "13716\n", "13718\n", "13720\n", "13722\n", "13724\n", "13726\n", "13728\n", "13730\n", "13732\n", "13734\n", "13736\n", "13738\n", "13740\n", "13742\n", "13744\n", "13746\n", "13748\n", "13750\n", "13752\n", "13754\n", "13756\n", "13758\n", "13760\n", "13762\n", "13764\n", "13766\n", "13768\n", "13770\n", "13772\n", "13774\n", "13776\n", "13778\n", "13780\n", "13782\n", "13784\n", "13786\n", "13788\n", "13790\n", "13792\n", "13794\n", "13796\n", "13798\n", "13800\n", "13802\n", "13804\n", "13806\n", "13808\n", "13810\n", "13812\n", "13814\n", "13816\n", "13818\n", "13820\n", "13822\n", "13824\n", "13826\n", "13828\n", "13830\n", "13832\n", "13834\n", "13836\n", "13838\n", "13840\n", "13842\n", "13844\n", "13846\n", "13848\n", "13850\n", "13852\n", "13854\n", "13856\n", "13858\n", "13860\n", "13862\n", "13864\n", "13866\n", "13868\n", "13870\n", "13872\n", "13874\n", "13876\n", "13878\n", "13880\n", "13882\n", "13884\n", "13886\n", "13888\n", "13890\n", "13892\n", "13894\n", "13896\n", "13898\n", "13900\n", "13902\n", "13904\n", "13906\n", "13908\n", "13910\n", "13912\n", "13914\n", "13916\n", "13918\n", "13920\n", "13922\n", "13924\n", "13926\n", "13928\n", "13930\n", "13932\n", "13934\n", "13936\n", "13938\n", "13940\n", "13942\n", "13944\n", "13946\n", "13948\n", "13950\n", "13952\n", "13954\n", "13956\n", "13958\n", "13960\n", "13962\n", "13964\n", "13966\n", "13968\n", "13970\n", "13972\n", "13974\n", "13976\n", "13978\n", "13980\n", "13982\n", "13984\n", "13986\n", "13988\n", "13990\n", "13992\n", "13994\n", "13996\n", "13998\n", "14000\n", "14002\n", "14004\n", "14006\n", "14008\n", "14010\n", "14012\n", "14014\n", "14016\n", "14018\n", "14020\n", "14022\n", "14024\n", "14026\n", "14028\n", "14030\n", "14032\n", "14034\n", "14036\n", "14038\n", "14040\n", "14042\n", "14044\n", "14046\n", "14048\n", "14050\n", "14052\n", "14054\n", "14056\n", "14058\n", "14060\n", "14062\n", "14064\n", "14066\n", "14068\n", "14070\n", "14072\n", "14074\n", "14076\n", "14078\n", "14080\n", "14082\n", "14084\n", "14086\n", "14088\n", "14090\n", "14092\n", "14094\n", "14096\n", "14098\n", "14100\n", "14102\n", "14104\n", "14106\n", "14108\n", "14110\n", "14112\n", "14114\n", "14116\n", "14118\n", "14120\n", "14122\n", "14124\n", "14126\n", "14128\n", "14130\n", "14132\n", "14134\n", "14136\n", "14138\n", "14140\n", "14142\n", "14144\n", "14146\n", "14148\n", "14150\n", "14152\n", "14154\n", "14156\n", "14158\n", "14160\n", "14162\n", "14164\n", "14166\n", "14168\n", "14170\n", "14172\n", "14174\n", "14176\n", "14178\n", "14180\n", "14182\n", "14184\n", "14186\n", "14188\n", "14190\n", "14192\n", "14194\n", "14196\n", "14198\n", "14200\n", "14202\n", "14204\n", "14206\n", "14208\n", "14210\n", "14212\n", "14214\n", "14216\n", "14218\n", "14220\n", "14222\n", "14224\n", "14226\n", "14228\n", "14230\n", "14232\n", "14234\n", "14236\n", "14238\n", "14240\n", "14242\n", "14244\n", "14246\n", "14248\n", "14250\n", "14252\n", "14254\n", "14256\n", "14258\n", "14260\n", "14262\n", "14264\n", "14266\n", "14268\n", "14270\n", "14272\n", "14274\n", "14276\n", "14278\n", "14280\n", "14282\n", "14284\n", "14286\n", "14288\n", "14290\n", "14292\n", "14294\n", "14296\n", "14298\n", "14300\n", "14302\n", "14304\n", "14306\n", "14308\n", "14310\n", "14312\n", "14314\n", "14316\n", "14318\n", "14320\n", "14322\n", "14324\n", "14326\n", "14328\n", "14330\n", "14332\n", "14334\n", "14336\n", "14338\n", "14340\n", "14342\n", "14344\n", "14346\n", "14348\n", "14350\n", "14352\n", "14354\n", "14356\n", "14358\n", "14360\n", "14362\n", "14364\n", "14366\n", "14368\n", "14370\n", "14372\n", "14374\n", "14376\n", "14378\n", "14380\n", "14382\n", "14384\n", "14386\n", "14388\n", "14390\n", "14392\n", "14394\n", "14396\n", "14398\n", "14400\n", "14402\n", "14404\n", "14406\n", "14408\n", "14410\n", "14412\n", "14414\n", "14416\n", "14418\n", "14420\n", "14422\n", "14424\n", "14426\n", "14428\n", "14430\n", "14432\n", "14434\n", "14436\n", "14438\n", "14440\n", "14442\n", "14444\n", "14446\n", "14448\n", "14450\n", "14452\n", "14454\n", "14456\n", "14458\n", "14460\n", "14462\n", "14464\n", "14466\n", "14468\n", "14470\n", "14472\n", "14474\n", "14476\n", "14478\n", "14480\n", "14482\n", "14484\n", "14486\n", "14488\n", "14490\n", "14492\n", "14494\n", "14496\n", "14498\n", "14500\n", "14502\n", "14504\n", "14506\n", "14508\n", "14510\n", "14512\n", "14514\n", "14516\n", "14518\n", "14520\n", "14522\n", "14524\n", "14526\n", "14528\n", "14530\n", "14532\n", "14534\n", "14536\n", "14538\n", "14540\n", "14542\n", "14544\n", "14546\n", "14548\n", "14550\n", "14552\n", "14554\n", "14556\n", "14558\n", "14560\n", "14562\n", "14564\n", "14566\n", "14568\n", "14570\n", "14572\n", "14574\n", "14576\n", "14578\n", "14580\n", "14582\n", "14584\n", "14586\n", "14588\n", "14590\n", "14592\n", "14594\n", "14596\n", "14598\n", "14600\n", "14602\n", "14604\n", "14606\n", "14608\n", "14610\n", "14612\n", "14614\n", "14616\n", "14618\n", "14620\n", "14622\n", "14624\n", "14626\n", "14628\n", "14630\n", "14632\n", "14634\n", "14636\n", "14638\n", "14640\n", "14642\n", "14644\n", "14646\n", "14648\n", "14650\n", "14652\n", "14654\n", "14656\n", "14658\n", "14660\n", "14662\n", "14664\n", "14666\n", "14668\n", "14670\n", "14672\n", "14674\n", "14676\n", "14678\n", "14680\n", "14682\n", "14684\n", "14686\n", "14688\n", "14690\n", "14692\n", "14694\n", "14696\n", "14698\n", "14700\n", "14702\n", "14704\n", "14706\n", "14708\n", "14710\n", "14712\n", "14714\n", "14716\n", "14718\n", "14720\n", "14722\n", "14724\n", "14726\n", "14728\n", "14730\n", "14732\n", "14734\n", "14736\n", "14738\n", "14740\n", "14742\n", "14744\n", "14746\n", "14748\n", "14750\n", "14752\n", "14754\n", "14756\n", "14758\n", "14760\n", "14762\n", "14764\n", "14766\n", "14768\n", "14770\n", "14772\n", "14774\n", "14776\n", "14778\n", "14780\n", "14782\n", "14784\n", "14786\n", "14788\n", "14790\n", "14792\n", "14794\n", "14796\n", "14798\n", "14800\n", "14802\n", "14804\n", "14806\n", "14808\n", "14810\n", "14812\n", "14814\n", "14816\n", "14818\n", "14820\n", "14822\n", "14824\n", "14826\n", "14828\n", "14830\n", "14832\n", "14834\n", "14836\n", "14838\n", "14840\n", "14842\n", "14844\n", "14846\n", "14848\n", "14850\n", "14852\n", "14854\n", "14856\n", "14858\n", "14860\n", "14862\n", "14864\n", "14866\n", "14868\n", "14870\n", "14872\n", "14874\n", "14876\n", "14878\n", "14880\n", "14882\n", "14884\n", "14886\n", "14888\n", "14890\n", "14892\n", "14894\n", "14896\n", "14898\n", "14900\n", "14902\n", "14904\n", "14906\n", "14908\n", "14910\n", "14912\n", "14914\n", "14916\n", "14918\n", "14920\n", "14922\n", "14924\n", "14926\n", "14928\n", "14930\n", "14932\n", "14934\n", "14936\n", "14938\n", "14940\n", "14942\n", "14944\n", "14946\n", "14948\n", "14950\n", "14952\n", "14954\n", "14956\n", "14958\n", "14960\n", "14962\n", "14964\n", "14966\n", "14968\n", "14970\n", "14972\n", "14974\n", "14976\n", "14978\n", "14980\n", "14982\n", "14984\n", "14986\n", "14988\n", "14990\n", "14992\n", "14994\n", "14996\n", "14998\n", "15000\n", "15002\n", "15004\n", "15006\n", "15008\n", "15010\n", "15012\n", "15014\n", "15016\n", "15018\n", "15020\n", "15022\n", "15024\n", "15026\n", "15028\n", "15030\n", "15032\n", "15034\n", "15036\n", "15038\n", "15040\n", "15042\n", "15044\n", "15046\n", "15048\n", "15050\n", "15052\n", "15054\n", "15056\n", "15058\n", "15060\n", "15062\n", "15064\n", "15066\n", "15068\n", "15070\n", "15072\n", "15074\n", "15076\n", "15078\n", "15080\n", "15082\n", "15084\n", "15086\n", "15088\n", "15090\n", "15092\n", "15094\n", "15096\n", "15098\n", "15100\n", "15102\n", "15104\n", "15106\n", "15108\n", "15110\n", "15112\n", "15114\n", "15116\n", "15118\n", "15120\n", "15122\n", "15124\n", "15126\n", "15128\n", "15130\n", "15132\n", "15134\n", "15136\n", "15138\n", "15140\n", "15142\n", "15144\n", "15146\n", "15148\n", "15150\n", "15152\n", "15154\n", "15156\n", "15158\n", "15160\n", "15162\n", "15164\n", "15166\n", "15168\n", "15170\n", "15172\n", "15174\n", "15176\n", "15178\n", "15180\n", "15182\n", "15184\n", "15186\n", "15188\n", "15190\n", "15192\n", "15194\n", "15196\n", "15198\n", "15200\n", "15202\n", "15204\n", "15206\n", "15208\n", "15210\n", "15212\n", "15214\n", "15216\n", "15218\n", "15220\n", "15222\n", "15224\n", "15226\n", "15228\n", "15230\n", "15232\n", "15234\n", "15236\n", "15238\n", "15240\n", "15242\n", "15244\n", "15246\n", "15248\n", "15250\n", "15252\n", "15254\n", "15256\n", "15258\n", "15260\n", "15262\n", "15264\n", "15266\n", "15268\n", "15270\n", "15272\n", "15274\n", "15276\n", "15278\n", "15280\n", "15282\n", "15284\n", "15286\n", "15288\n", "15290\n", "15292\n", "15294\n", "15296\n", "15298\n", "15300\n", "15302\n", "15304\n", "15306\n", "15308\n", "15310\n", "15312\n", "15314\n", "15316\n", "15318\n", "15320\n", "15322\n", "15324\n", "15326\n", "15328\n", "15330\n", "15332\n", "15334\n", "15336\n", "15338\n", "15340\n", "15342\n", "15344\n", "15346\n", "15348\n", "15350\n", "15352\n", "15354\n", "15356\n", "15358\n", "15360\n", "15362\n", "15364\n", "15366\n", "15368\n", "15370\n", "15372\n", "15374\n", "15376\n", "15378\n", "15380\n", "15382\n", "15384\n", "15386\n", "15388\n", "15390\n", "15392\n", "15394\n", "15396\n", "15398\n", "15400\n", "15402\n", "15404\n", "15406\n", "15408\n", "15410\n", "15412\n", "15414\n", "15416\n", "15418\n", "15420\n", "15422\n", "15424\n", "15426\n", "15428\n", "15430\n", "15432\n", "15434\n", "15436\n", "15438\n", "15440\n", "15442\n", "15444\n", "15446\n", "15448\n", "15450\n", "15452\n", "15454\n", "15456\n", "15458\n", "15460\n", "15462\n", "15464\n", "15466\n", "15468\n", "15470\n", "15472\n", "15474\n", "15476\n", "15478\n", "15480\n", "15482\n", "15484\n", "15486\n", "15488\n", "15490\n", "15492\n", "15494\n", "15496\n", "15498\n", "15500\n", "15502\n", "15504\n", "15506\n", "15508\n", "15510\n", "15512\n", "15514\n", "15516\n", "15518\n", "15520\n", "15522\n", "15524\n", "15526\n", "15528\n", "15530\n", "15532\n", "15534\n", "15536\n", "15538\n", "15540\n", "15542\n", "15544\n", "15546\n", "15548\n", "15550\n", "15552\n", "15554\n", "15556\n", "15558\n", "15560\n", "15562\n", "15564\n", "15566\n", "15568\n", "15570\n", "15572\n", "15574\n", "15576\n", "15578\n", "15580\n", "15582\n", "15584\n", "15586\n", "15588\n", "15590\n", "15592\n", "15594\n", "15596\n", "15598\n", "15600\n", "15602\n", "15604\n", "15606\n", "15608\n", "15610\n", "15612\n", "15614\n", "15616\n", "15618\n", "15620\n", "15622\n", "15624\n", "15626\n", "15628\n", "15630\n", "15632\n", "15634\n", "15636\n", "15638\n", "15640\n", "15642\n", "15644\n", "15646\n", "15648\n", "15650\n", "15652\n", "15654\n", "15656\n", "15658\n", "15660\n", "15662\n", "15664\n", "15666\n", "15668\n", "15670\n", "15672\n", "15674\n", "15676\n", "15678\n", "15680\n", "15682\n", "15684\n", "15686\n", "15688\n", "15690\n", "15692\n", "15694\n", "15696\n", "15698\n", "15700\n", "15702\n", "15704\n", "15706\n", "15708\n", "15710\n", "15712\n", "15714\n", "15716\n", "15718\n", "15720\n", "15722\n", "15724\n", "15726\n", "15728\n", "15730\n", "15732\n", "15734\n", "15736\n", "15738\n", "15740\n", "15742\n", "15744\n", "15746\n", "15748\n", "15750\n", "15752\n", "15754\n", "15756\n", "15758\n", "15760\n", "15762\n", "15764\n", "15766\n", "15768\n", "15770\n", "15772\n", "15774\n", "15776\n", "15778\n", "15780\n", "15782\n", "15784\n", "15786\n", "15788\n", "15790\n", "15792\n", "15794\n", "15796\n", "15798\n", "15800\n", "15802\n", "15804\n", "15806\n", "15808\n", "15810\n", "15812\n", "15814\n", "15816\n", "15818\n", "15820\n", "15822\n", "15824\n", "15826\n", "15828\n", "15830\n", "15832\n", "15834\n", "15836\n", "15838\n", "15840\n", "15842\n", "15844\n", "15846\n", "15848\n", "15850\n", "15852\n", "15854\n", "15856\n", "15858\n", "15860\n", "15862\n", "15864\n", "15866\n", "15868\n", "15870\n", "15872\n", "15874\n", "15876\n", "15878\n", "15880\n", "15882\n", "15884\n", "15886\n", "15888\n", "15890\n", "15892\n", "15894\n", "15896\n", "15898\n", "15900\n", "15902\n", "15904\n", "15906\n", "15908\n", "15910\n", "15912\n", "15914\n", "15916\n", "15918\n", "15920\n", "15922\n", "15924\n", "15926\n", "15928\n", "15930\n", "15932\n", "15934\n", "15936\n", "15938\n", "15940\n", "15942\n", "15944\n", "15946\n", "15948\n", "15950\n", "15952\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "15954\n", "15956\n", "15958\n", "15960\n", "15962\n", "15964\n", "15966\n", "15968\n", "15970\n", "15972\n", "15974\n", "15976\n", "15978\n", "15980\n", "15982\n", "15984\n", "15986\n", "15988\n", "15990\n", "15992\n", "15994\n", "15996\n", "15998\n", "16000\n", "16002\n", "16004\n", "16006\n", "16008\n", "16010\n", "16012\n", "16014\n", "16016\n", "16018\n", "16020\n", "16022\n", "16024\n", "16026\n", "16028\n", "16030\n", "16032\n", "16034\n", "16036\n", "16038\n", "16040\n", "16042\n", "16044\n", "16046\n", "16048\n", "16050\n", "16052\n", "16054\n", "16056\n", "16058\n", "16060\n", "16062\n", "16064\n", "16066\n", "16068\n", "16070\n", "16072\n", "16074\n", "16076\n", "16078\n", "16080\n", "16082\n", "16084\n", "16086\n", "16088\n", "16090\n", "16092\n", "16094\n", "16096\n", "16098\n", "16100\n", "16102\n", "16104\n", "16106\n", "16108\n", "16110\n", "16112\n", "16114\n", "16116\n", "16118\n", "16120\n", "16122\n", "16124\n", "16126\n", "16128\n", "16130\n", "16132\n", "16134\n", "16136\n", "16138\n", "16140\n", "16142\n", "16144\n", "16146\n", "16148\n", "16150\n", "16152\n", "16154\n", "16156\n", "16158\n", "16160\n", "16162\n", "16164\n", "16166\n", "16168\n", "16170\n", "16172\n", "16174\n", "16176\n", "16178\n", "16180\n", "16182\n", "16184\n", "16186\n", "16188\n", "16190\n", "16192\n", "16194\n", "16196\n", "16198\n", "16200\n", "16202\n", "16204\n", "16206\n", "16208\n", "16210\n", "16212\n", "16214\n", "16216\n", "16218\n", "16220\n", "16222\n", "16224\n", "16226\n", "16228\n", "16230\n", "16232\n", "16234\n", "16236\n", "16238\n", "16240\n", "16242\n", "16244\n", "16246\n", "16248\n", "16250\n", "16252\n", "16254\n", "16256\n", "16258\n", "16260\n", "16262\n", "16264\n", "16266\n", "16268\n", "16270\n", "16272\n", "16274\n", "16276\n", "16278\n", "16280\n", "16282\n", "16284\n", "16286\n", "16288\n", "16290\n", "16292\n", "16294\n", "16296\n", "16298\n", "16300\n", "16302\n", "16304\n", "16306\n", "16308\n", "16310\n", "16312\n", "16314\n", "16316\n", "16318\n", "16320\n", "16322\n", "16324\n", "16326\n", "16328\n", "16330\n", "16332\n", "16334\n", "16336\n", "16338\n", "16340\n", "16342\n", "16344\n", "16346\n", "16348\n", "16350\n", "16352\n", "16354\n", "16356\n", "16358\n", "16360\n", "16362\n", "16364\n", "16366\n", "16368\n", "16370\n", "16372\n", "16374\n", "16376\n", "16378\n", "16380\n", "16382\n", "16384\n", "16386\n", "16388\n", "16390\n", "16392\n", "16394\n", "16396\n", "16398\n", "16400\n", "16402\n", "16404\n", "16406\n", "16408\n", "16410\n", "16412\n", "16414\n", "16416\n", "16418\n", "16420\n", "16422\n", "16424\n", "16426\n", "16428\n", "16430\n", "16432\n", "16434\n", "16436\n", "16438\n", "16440\n", "16442\n", "16444\n", "16446\n", "16448\n", "16450\n", "16452\n", "16454\n", "16456\n", "16458\n", "16460\n", "16462\n", "16464\n", "16466\n", "16468\n", "16470\n", "16472\n", "16474\n", "16476\n", "16478\n", "16480\n", "16482\n", "16484\n", "16486\n", "16488\n", "16490\n", "16492\n", "16494\n", "16496\n", "16498\n", "16500\n", "16502\n", "16504\n", "16506\n", "16508\n", "16510\n", "16512\n", "16514\n", "16516\n", "16518\n", "16520\n", "16522\n", "16524\n", "16526\n", "16528\n", "16530\n", "16532\n", "16534\n", "16536\n", "16538\n", "16540\n", "16542\n", "16544\n", "16546\n", "16548\n", "16550\n", "16552\n", "16554\n", "16556\n", "16558\n", "16560\n", "16562\n", "16564\n", "16566\n", "16568\n", "16570\n", "16572\n", "16574\n", "16576\n", "16578\n", "16580\n", "16582\n", "16584\n", "16586\n", "16588\n", "16590\n", "16592\n", "16594\n", "16596\n", "16598\n", "16600\n", "16602\n", "16604\n", "16606\n", "16608\n", "16610\n", "16612\n", "16614\n", "16616\n", "16618\n", "16620\n", "16622\n", "16624\n", "16626\n", "16628\n", "16630\n", "16632\n", "16634\n", "16636\n", "16638\n", "16640\n", "16642\n", "16644\n", "16646\n", "16648\n", "16650\n", "16652\n", "16654\n", "16656\n", "16658\n", "16660\n", "16662\n", "16664\n", "16666\n", "16668\n", "16670\n", "16672\n", "16674\n", "16676\n", "16678\n", "16680\n", "16682\n", "16684\n", "16686\n", "16688\n", "16690\n", "16692\n", "16694\n", "16696\n", "16698\n", "16700\n", "16702\n", "16704\n", "16706\n", "16708\n", "16710\n", "16712\n", "16714\n", "16716\n", "16718\n", "16720\n", "16722\n", "16724\n", "16726\n", "16728\n", "16730\n", "16732\n", "16734\n", "16736\n", "16738\n", "16740\n", "16742\n", "16744\n", "16746\n", "16748\n", "16750\n", "16752\n", "16754\n", "16756\n", "16758\n", "16760\n", "16762\n", "16764\n", "16766\n", "16768\n", "16770\n", "16772\n", "16774\n", "16776\n", "16778\n", "16780\n", "16782\n", "16784\n", "16786\n", "16788\n", "16790\n", "16792\n", "16794\n", "16796\n", "16798\n", "16800\n", "16802\n", "16804\n", "16806\n", "16808\n", "16810\n", "16812\n", "16814\n", "16816\n", "16818\n", "16820\n", "16822\n", "16824\n", "16826\n", "16828\n", "16830\n", "16832\n", "16834\n", "16836\n", "16838\n", "16840\n", "16842\n", "16844\n", "16846\n", "16848\n", "16850\n", "16852\n", "16854\n", "16856\n", "16858\n", "16860\n", "16862\n", "16864\n", "16866\n", "16868\n", "16870\n", "16872\n", "16874\n", "16876\n", "16878\n", "16880\n", "16882\n", "16884\n", "16886\n", "16888\n", "16890\n", "16892\n", "16894\n", "16896\n", "16898\n", "16900\n", "16902\n", "16904\n", "16906\n", "16908\n", "16910\n", "16912\n", "16914\n", "16916\n", "16918\n", "16920\n", "16922\n", "16924\n", "16926\n", "16928\n", "16930\n", "16932\n", "16934\n", "16936\n", "16938\n", "16940\n", "16942\n", "16944\n", "16946\n", "16948\n", "16950\n", "16952\n", "16954\n", "16956\n", "16958\n", "16960\n", "16962\n", "16964\n", "16966\n", "16968\n", "16970\n", "16972\n", "16974\n", "16976\n", "16978\n", "16980\n", "16982\n", "16984\n", "16986\n", "16988\n", "16990\n", "16992\n", "16994\n", "16996\n", "16998\n", "17000\n", "17002\n", "17004\n", "17006\n", "17008\n", "17010\n", "17012\n", "17014\n", "17016\n", "17018\n", "17020\n", "17022\n", "17024\n", "17026\n", "17028\n", "17030\n", "17032\n", "17034\n", "17036\n", "17038\n", "17040\n", "17042\n", "17044\n", "17046\n", "17048\n", "17050\n", "17052\n", "17054\n", "17056\n", "17058\n", "17060\n", "17062\n", "17064\n", "17066\n", "17068\n", "17070\n", "17072\n", "17074\n", "17076\n", "17078\n", "17080\n", "17082\n", "17084\n", "17086\n", "17088\n", "17090\n", "17092\n", "17094\n", "17096\n", "17098\n", "17100\n", "17102\n", "17104\n", "17106\n", "17108\n", "17110\n", "17112\n", "17114\n", "17116\n", "17118\n", "17120\n", "17122\n", "17124\n", "17126\n", "17128\n", "17130\n", "17132\n", "17134\n", "17136\n", "17138\n", "17140\n", "17142\n", "17144\n", "17146\n", "17148\n", "17150\n", "17152\n", "17154\n", "17156\n", "17158\n", "17160\n", "17162\n", "17164\n", "17166\n", "17168\n", "17170\n", "17172\n", "17174\n", "17176\n", "17178\n", "17180\n", "17182\n", "17184\n", "17186\n", "17188\n", "17190\n", "17192\n", "17194\n", "17196\n", "17198\n", "17200\n", "17202\n", "17204\n", "17206\n", "17208\n", "17210\n", "17212\n", "17214\n", "17216\n", "17218\n", "17220\n", "17222\n", "17224\n", "17226\n", "17228\n", "17230\n", "17232\n", "17234\n", "17236\n", "17238\n", "17240\n", "17242\n", "17244\n", "17246\n", "17248\n", "17250\n", "17252\n", "17254\n", "17256\n", "17258\n", "17260\n", "17262\n", "17264\n", "17266\n", "17268\n", "17270\n", "17272\n", "17274\n", "17276\n", "17278\n", "17280\n", "17282\n", "17284\n", "17286\n", "17288\n", "17290\n", "17292\n", "17294\n", "17296\n", "17298\n", "17300\n", "17302\n", "17304\n", "17306\n", "17308\n", "17310\n", "17312\n", "17314\n", "17316\n", "17318\n", "17320\n", "17322\n", "17324\n", "17326\n", "17328\n", "17330\n", "17332\n", "17334\n", "17336\n", "17338\n", "17340\n", "17342\n", "17344\n", "17346\n", "17348\n", "17350\n", "17352\n", "17354\n", "17356\n", "17358\n", "17360\n", "17362\n", "17364\n", "17366\n", "17368\n", "17370\n", "17372\n", "17374\n", "17376\n", "17378\n", "17380\n", "17382\n", "17384\n", "17386\n", "17388\n", "17390\n", "17392\n", "17394\n", "17396\n", "17398\n", "17400\n", "17402\n", "17404\n", "17406\n", "17408\n", "17410\n", "17412\n", "17414\n", "17416\n", "17418\n", "17420\n", "17422\n", "17424\n", "17426\n", "17428\n", "17430\n", "17432\n", "17434\n", "17436\n", "17438\n", "17440\n", "17442\n", "17444\n", "17446\n", "17448\n", "17450\n", "17452\n", "17454\n", "17456\n", "17458\n", "17460\n", "17462\n", "17464\n", "17466\n", "17468\n", "17470\n", "17472\n", "17474\n", "17476\n", "17478\n", "17480\n", "17482\n", "17484\n", "17486\n", "17488\n", "17490\n", "17492\n", "17494\n", "17496\n", "17498\n", "17500\n", "17502\n", "17504\n", "17506\n", "17508\n", "17510\n", "17512\n", "17514\n", "17516\n", "17518\n", "17520\n", "17522\n", "17524\n", "17526\n", "17528\n", "17530\n", "17532\n", "17534\n", "17536\n", "17538\n", "17540\n", "17542\n", "17544\n", "17546\n", "17548\n", "17550\n", "17552\n", "17554\n", "17556\n", "17558\n", "17560\n", "17562\n", "17564\n", "17566\n", "17568\n", "17570\n", "17572\n", "17574\n", "17576\n", "17578\n", "17580\n", "17582\n", "17584\n", "17586\n", "17588\n", "17590\n", "17592\n", "17594\n", "17596\n", "17598\n", "17600\n", "17602\n", "17604\n", "17606\n", "17608\n", "17610\n", "17612\n", "17614\n", "17616\n", "17618\n", "17620\n", "17622\n", "17624\n", "17626\n", "17628\n", "17630\n", "17632\n", "17634\n", "17636\n", "17638\n", "17640\n", "17642\n", "17644\n", "17646\n", "17648\n", "17650\n", "17652\n", "17654\n", "17656\n", "17658\n", "17660\n", "17662\n", "17664\n", "17666\n", "17668\n", "17670\n", "17672\n", "17674\n", "17676\n", "17678\n", "17680\n", "17682\n", "17684\n", "17686\n", "17688\n", "17690\n", "17692\n", "17694\n", "17696\n", "17698\n", "17700\n", "17702\n", "17704\n", "17706\n", "17708\n", "17710\n", "17712\n", "17714\n", "17716\n", "17718\n", "17720\n", "17722\n", "17724\n", "17726\n", "17728\n", "17730\n", "17732\n", "17734\n", "17736\n", "17738\n", "17740\n", "17742\n", "17744\n", "17746\n", "17748\n", "17750\n", "17752\n", "17754\n", "17756\n", "17758\n", "17760\n", "17762\n", "17764\n", "17766\n", "17768\n", "17770\n", "17772\n", "17774\n", "17776\n", "17778\n", "17780\n", "17782\n", "17784\n", "17786\n", "17788\n", "17790\n", "17792\n", "17794\n", "17796\n", "17798\n", "17800\n", "17802\n", "17804\n", "17806\n", "17808\n", "17810\n", "17812\n", "17814\n", "17816\n", "17818\n", "17820\n", "17822\n", "17824\n", "17826\n", "17828\n", "17830\n", "17832\n", "17834\n", "17836\n", "17838\n", "17840\n", "17842\n", "17844\n", "17846\n", "17848\n", "17850\n", "17852\n", "17854\n", "17856\n", "17858\n", "17860\n", "17862\n", "17864\n", "17866\n", "17868\n", "17870\n", "17872\n", "17874\n", "17876\n", "17878\n", "17880\n", "17882\n", "17884\n", "17886\n", "17888\n", "17890\n", "17892\n", "17894\n", "17896\n", "17898\n", "17900\n", "17902\n", "17904\n", "17906\n", "17908\n", "17910\n", "17912\n", "17914\n", "17916\n", "17918\n", "17920\n", "17922\n", "17924\n", "17926\n", "17928\n", "17930\n", "17932\n", "17934\n", "17936\n", "17938\n", "17940\n", "17942\n", "17944\n", "17946\n", "17948\n", "17950\n", "17952\n", "17954\n", "17956\n", "17958\n", "17960\n", "17962\n", "17964\n", "17966\n", "17968\n", "17970\n", "17972\n", "17974\n", "17976\n", "17978\n", "17980\n", "17982\n", "17984\n", "17986\n", "17988\n", "17990\n", "17992\n", "17994\n", "17996\n", "17998\n", "18000\n", "18002\n", "18004\n", "18006\n", "18008\n", "18010\n", "18012\n", "18014\n", "18016\n", "18018\n", "18020\n", "18022\n", "18024\n", "18026\n", "18028\n", "18030\n", "18032\n", "18034\n", "18036\n", "18038\n", "18040\n", "18042\n", "18044\n", "18046\n", "18048\n", "18050\n", "18052\n", "18054\n", "18056\n", "18058\n", "18060\n", "18062\n", "18064\n", "18066\n", "18068\n", "18070\n", "18072\n", "18074\n", "18076\n", "18078\n", "18080\n", "18082\n", "18084\n", "18086\n", "18088\n", "18090\n", "18092\n", "18094\n", "18096\n", "18098\n", "18100\n", "18102\n", "18104\n", "18106\n", "18108\n", "18110\n", "18112\n", "18114\n", "18116\n", "18118\n", "18120\n", "18122\n", "18124\n", "18126\n", "18128\n", "18130\n", "18132\n", "18134\n", "18136\n", "18138\n", "18140\n", "18142\n", "18144\n", "18146\n", "18148\n", "18150\n", "18152\n", "18154\n", "18156\n", "18158\n", "18160\n", "18162\n", "18164\n", "18166\n", "18168\n", "18170\n", "18172\n", "18174\n", "18176\n", "18178\n", "18180\n", "18182\n", "18184\n", "18186\n", "18188\n", "18190\n", "18192\n", "18194\n", "18196\n", "18198\n", "18200\n", "18202\n", "18204\n", "18206\n", "18208\n", "18210\n", "18212\n", "18214\n", "18216\n", "18218\n", "18220\n", "18222\n", "18224\n", "18226\n", "18228\n", "18230\n", "18232\n", "18234\n", "18236\n", "18238\n", "18240\n", "18242\n", "18244\n", "18246\n", "18248\n", "18250\n", "18252\n", "18254\n", "18256\n", "18258\n", "18260\n", "18262\n", "18264\n", "18266\n", "18268\n", "18270\n", "18272\n", "18274\n", "18276\n", "18278\n", "18280\n", "18282\n", "18284\n", "18286\n", "18288\n", "18290\n", "18292\n", "18294\n", "18296\n", "18298\n", "18300\n", "18302\n", "18304\n", "18306\n", "18308\n", "18310\n", "18312\n", "18314\n", "18316\n", "18318\n", "18320\n", "18322\n", "18324\n", "18326\n", "18328\n", "18330\n", "18332\n", "18334\n", "18336\n", "18338\n", "18340\n", "18342\n", "18344\n", "18346\n", "18348\n", "18350\n", "18352\n", "18354\n", "18356\n", "18358\n", "18360\n", "18362\n", "18364\n", "18366\n", "18368\n", "18370\n", "18372\n", "18374\n", "18376\n", "18378\n", "18380\n", "18382\n", "18384\n", "18386\n", "18388\n", "18390\n", "18392\n", "18394\n", "18396\n", "18398\n", "18400\n", "18402\n", "18404\n", "18406\n", "18408\n", "18410\n", "18412\n", "18414\n", "18416\n", "18418\n", "18420\n", "18422\n", "18424\n", "18426\n", "18428\n", "18430\n", "18432\n", "18434\n", "18436\n", "18438\n", "18440\n", "18442\n", "18444\n", "18446\n", "18448\n", "18450\n", "18452\n", "18454\n", "18456\n", "18458\n", "18460\n", "18462\n", "18464\n", "18466\n", "18468\n", "18470\n", "18472\n", "18474\n", "18476\n", "18478\n", "18480\n", "18482\n", "18484\n", "18486\n", "18488\n", "18490\n", "18492\n", "18494\n", "18496\n", "18498\n", "18500\n", "18502\n", "18504\n", "18506\n", "18508\n", "18510\n", "18512\n", "18514\n", "18516\n", "18518\n", "18520\n", "18522\n", "18524\n", "18526\n", "18528\n", "18530\n", "18532\n", "18534\n", "18536\n", "18538\n", "18540\n", "18542\n", "18544\n", "18546\n", "18548\n", "18550\n", "18552\n", "18554\n", "18556\n", "18558\n", "18560\n", "18562\n", "18564\n", "18566\n", "18568\n", "18570\n", "18572\n", "18574\n", "18576\n", "18578\n", "18580\n", "18582\n", "18584\n", "18586\n", "18588\n", "18590\n", "18592\n", "18594\n", "18596\n", "18598\n", "18600\n", "18602\n", "18604\n", "18606\n", "18608\n", "18610\n", "18612\n", "18614\n", "18616\n", "18618\n", "18620\n", "18622\n", "18624\n", "18626\n", "18628\n", "18630\n", "18632\n", "18634\n", "18636\n", "18638\n", "18640\n", "18642\n", "18644\n", "18646\n", "18648\n", "18650\n", "18652\n", "18654\n", "18656\n", "18658\n", "18660\n", "18662\n", "18664\n", "18666\n", "18668\n", "18670\n", "18672\n", "18674\n", "18676\n", "18678\n", "18680\n", "18682\n", "18684\n", "18686\n", "18688\n", "18690\n", "18692\n", "18694\n", "18696\n", "18698\n", "18700\n", "18702\n", "18704\n", "18706\n", "18708\n", "18710\n", "18712\n", "18714\n", "18716\n", "18718\n", "18720\n", "18722\n", "18724\n", "18726\n", "18728\n", "18730\n", "18732\n", "18734\n", "18736\n", "18738\n", "18740\n", "18742\n", "18744\n", "18746\n", "18748\n", "18750\n", "18752\n", "18754\n", "18756\n", "18758\n", "18760\n", "18762\n", "18764\n", "18766\n", "18768\n", "18770\n", "18772\n", "18774\n", "18776\n", "18778\n", "18780\n", "18782\n", "18784\n", "18786\n", "18788\n", "18790\n", "18792\n", "18794\n", "18796\n", "18798\n", "18800\n", "18802\n", "18804\n", "18806\n", "18808\n", "18810\n", "18812\n", "18814\n", "18816\n", "18818\n", "18820\n", "18822\n", "18824\n", "18826\n", "18828\n", "18830\n", "18832\n", "18834\n", "18836\n", "18838\n", "18840\n", "18842\n", "18844\n", "18846\n", "18848\n", "18850\n", "18852\n", "18854\n", "18856\n", "18858\n", "18860\n", "18862\n", "18864\n", "18866\n", "18868\n", "18870\n", "18872\n", "18874\n", "18876\n", "18878\n", "18880\n", "18882\n", "18884\n", "18886\n", "18888\n", "18890\n", "18892\n", "18894\n", "18896\n", "18898\n", "18900\n", "18902\n", "18904\n", "18906\n", "18908\n", "18910\n", "18912\n", "18914\n", "18916\n", "18918\n", "18920\n", "18922\n", "18924\n", "18926\n", "18928\n", "18930\n", "18932\n", "18934\n", "18936\n", "18938\n", "18940\n", "18942\n", "18944\n", "18946\n", "18948\n", "18950\n", "18952\n", "18954\n", "18956\n", "18958\n", "18960\n", "18962\n", "18964\n", "18966\n", "18968\n", "18970\n", "18972\n", "18974\n", "18976\n", "18978\n", "18980\n", "18982\n", "18984\n", "18986\n", "18988\n", "18990\n", "18992\n", "18994\n", "18996\n", "18998\n", "19000\n", "19002\n", "19004\n", "19006\n", "19008\n", "19010\n", "19012\n", "19014\n", "19016\n", "19018\n", "19020\n", "19022\n", "19024\n", "19026\n", "19028\n", "19030\n", "19032\n", "19034\n", "19036\n", "19038\n", "19040\n", "19042\n", "19044\n", "19046\n", "19048\n", "19050\n", "19052\n", "19054\n", "19056\n", "19058\n", "19060\n", "19062\n", "19064\n", "19066\n", "19068\n", "19070\n", "19072\n", "19074\n", "19076\n", "19078\n", "19080\n", "19082\n", "19084\n", "19086\n", "19088\n", "19090\n", "19092\n", "19094\n", "19096\n", "19098\n", "19100\n", "19102\n", "19104\n", "19106\n", "19108\n", "19110\n", "19112\n", "19114\n", "19116\n", "19118\n", "19120\n", "19122\n", "19124\n", "19126\n", "19128\n", "19130\n", "19132\n", "19134\n", "19136\n", "19138\n", "19140\n", "19142\n", "19144\n", "19146\n", "19148\n", "19150\n", "19152\n", "19154\n", "19156\n", "19158\n", "19160\n", "19162\n", "19164\n", "19166\n", "19168\n", "19170\n", "19172\n", "19174\n", "19176\n", "19178\n", "19180\n", "19182\n", "19184\n", "19186\n", "19188\n", "19190\n", "19192\n", "19194\n", "19196\n", "19198\n", "19200\n", "19202\n", "19204\n", "19206\n", "19208\n", "19210\n", "19212\n", "19214\n", "19216\n", "19218\n", "19220\n", "19222\n", "19224\n", "19226\n", "19228\n", "19230\n", "19232\n", "19234\n", "19236\n", "19238\n", "19240\n", "19242\n", "19244\n", "19246\n", "19248\n", "19250\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "19252\n", "19254\n", "19256\n", "19258\n", "19260\n", "19262\n", "19264\n", "19266\n", "19268\n", "19270\n", "19272\n", "19274\n", "19276\n", "19278\n", "19280\n", "19282\n", "19284\n", "19286\n", "19288\n", "19290\n", "19292\n", "19294\n", "19296\n", "19298\n", "19300\n", "19302\n", "19304\n", "19306\n", "19308\n", "19310\n", "19312\n", "19314\n", "19316\n", "19318\n", "19320\n", "19322\n", "19324\n", "19326\n", "19328\n", "19330\n", "19332\n", "19334\n", "19336\n", "19338\n", "19340\n", "19342\n", "19344\n", "19346\n", "19348\n", "19350\n", "19352\n", "19354\n", "19356\n", "19358\n", "19360\n", "19362\n", "19364\n", "19366\n", "19368\n", "19370\n", "19372\n", "19374\n", "19376\n", "19378\n", "19380\n", "19382\n", "19384\n", "19386\n", "19388\n", "19390\n", "19392\n", "19394\n", "19396\n", "19398\n", "19400\n", "19402\n", "19404\n", "19406\n", "19408\n", "19410\n", "19412\n", "19414\n", "19416\n", "19418\n", "19420\n", "19422\n", "19424\n", "19426\n", "19428\n", "19430\n", "19432\n", "19434\n", "19436\n", "19438\n", "19440\n", "19442\n", "19444\n", "19446\n", "19448\n", "19450\n", "19452\n", "19454\n", "19456\n", "19458\n", "19460\n", "19462\n", "19464\n", "19466\n", "19468\n", "19470\n", "19472\n", "19474\n", "19476\n", "19478\n", "19480\n", "19482\n", "19484\n", "19486\n", "19488\n", "19490\n", "19492\n", "19494\n", "19496\n", "19498\n", "19500\n", "19502\n", "19504\n", "19506\n", "19508\n", "19510\n", "19512\n", "19514\n", "19516\n", "19518\n", "19520\n", "19522\n", "19524\n", "19526\n", "19528\n", "19530\n", "19532\n", "19534\n", "19536\n", "19538\n", "19540\n", "19542\n", "19544\n", "19546\n", "19548\n", "19550\n", "19552\n", "19554\n", "19556\n", "19558\n", "19560\n", "19562\n", "19564\n", "19566\n", "19568\n", "19570\n", "19572\n", "19574\n", "19576\n", "19578\n", "19580\n", "19582\n", "19584\n", "19586\n", "19588\n", "19590\n", "19592\n", "19594\n", "19596\n", "19598\n", "19600\n", "19602\n", "19604\n", "19606\n", "19608\n", "19610\n", "19612\n", "19614\n", "19616\n", "19618\n", "19620\n", "19622\n", "19624\n", "19626\n", "19628\n", "19630\n", "19632\n", "19634\n", "19636\n", "19638\n", "19640\n", "19642\n", "19644\n", "19646\n", "19648\n", "19650\n", "19652\n", "19654\n", "19656\n", "19658\n", "19660\n", "19662\n", "19664\n", "19666\n", "19668\n", "19670\n", "19672\n", "19674\n", "19676\n", "19678\n", "19680\n", "19682\n", "19684\n", "19686\n", "19688\n", "19690\n", "19692\n", "19694\n", "19696\n", "19698\n", "19700\n", "19702\n", "19704\n", "19706\n", "19708\n", "19710\n", "19712\n", "19714\n", "19716\n", "19718\n", "19720\n", "19722\n", "19724\n", "19726\n", "19728\n", "19730\n", "19732\n", "19734\n", "19736\n", "19738\n", "19740\n", "19742\n", "19744\n", "19746\n", "19748\n", "19750\n", "19752\n", "19754\n", "19756\n", "19758\n", "19760\n", "19762\n", "19764\n", "19766\n", "19768\n", "19770\n", "19772\n", "19774\n", "19776\n", "19778\n", "19780\n", "19782\n", "19784\n", "19786\n", "19788\n", "19790\n", "19792\n", "19794\n", "19796\n", "19798\n", "19800\n", "19802\n", "19804\n", "19806\n", "19808\n", "19810\n", "19812\n", "19814\n", "19816\n", "19818\n", "19820\n", "19822\n", "19824\n", "19826\n", "19828\n", "19830\n", "19832\n", "19834\n", "19836\n", "19838\n", "19840\n", "19842\n", "19844\n", "19846\n", "19848\n", "19850\n", "19852\n", "19854\n", "19856\n", "19858\n", "19860\n", "19862\n", "19864\n", "19866\n", "19868\n", "19870\n", "19872\n", "19874\n", "19876\n", "19878\n", "19880\n", "19882\n", "19884\n", "19886\n", "19888\n", "19890\n", "19892\n", "19894\n", "19896\n", "19898\n", "19900\n", "19902\n", "19904\n", "19906\n", "19908\n", "19910\n", "19912\n", "19914\n", "19916\n", "19918\n", "19920\n", "19922\n", "19924\n", "19926\n", "19928\n", "19930\n", "19932\n", "19934\n", "19936\n", "19938\n", "19940\n", "19942\n", "19944\n", "19946\n", "19948\n", "19950\n", "19952\n", "19954\n", "19956\n", "19958\n", "19960\n", "19962\n", "19964\n", "19966\n", "19968\n", "19970\n", "19972\n", "19974\n", "19976\n", "19978\n", "19980\n", "19982\n", "19984\n", "19986\n", "19988\n", "19990\n", "19992\n", "19994\n", "19996\n", "19998\n" ] } ], "source": [ "for element in myrange(4, 20000, 2):\n", " print(element)" ] }, { "cell_type": "code", "execution_count": 163, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "generator" ] }, "execution_count": 163, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g = myrange(4, 20000, 2)\n", "type(g)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## JSON" ] }, { "cell_type": "code", "execution_count": 164, "metadata": {}, "outputs": [], "source": [ "import json" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Send away**" ] }, { "cell_type": "code", "execution_count": 165, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'[1, 2, 3, 4]'" ] }, "execution_count": 165, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l_to_send = [1, 2, 3, 4]\n", "json_to_send = json.dumps(l_to_send)\n", "json_to_send" ] }, { "cell_type": "code", "execution_count": 166, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "str" ] }, "execution_count": 166, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(json_to_send)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Receive**" ] }, { "cell_type": "code", "execution_count": 167, "metadata": {}, "outputs": [], "source": [ "json_received = json_to_send" ] }, { "cell_type": "code", "execution_count": 168, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4]" ] }, "execution_count": 168, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l_received = json.loads(json_received)\n", "l_received" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**More datatypes?**" ] }, { "cell_type": "code", "execution_count": 169, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "'{\"one\": 1, \"two\": 2}'" ] }, "execution_count": 169, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d = {\n", " 'one': 1,\n", " 'two': 2,\n", "}\n", "json.dumps(d)" ] }, { "cell_type": "code", "execution_count": 170, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'[[\"hugo\", 10, 1, 2, 3], [\"sine\", 11, 0, 0, 0]]'" ] }, "execution_count": 170, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l = [\n", " ('hugo', 10, 1, 2, 3),\n", " ('sine', 11, 0, 0, 0),\n", "]\n", "serialized = json.dumps(l)\n", "serialized" ] }, { "cell_type": "code", "execution_count": 171, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[['hugo', 10, 1, 2, 3], ['sine', 11, 0, 0, 0]]" ] }, "execution_count": 171, "metadata": {}, "output_type": "execute_result" } ], "source": [ "json.loads(serialized)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Everything is an Object of a Type" ] }, { "cell_type": "code", "execution_count": 172, "metadata": {}, "outputs": [], "source": [ "i = 666" ] }, { "cell_type": "code", "execution_count": 173, "metadata": {}, "outputs": [], "source": [ "j = i" ] }, { "cell_type": "code", "execution_count": 174, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "140106668681968" ] }, "execution_count": 174, "metadata": {}, "output_type": "execute_result" } ], "source": [ "id(i)" ] }, { "cell_type": "code", "execution_count": 175, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "140106668681968" ] }, "execution_count": 175, "metadata": {}, "output_type": "execute_result" } ], "source": [ "id(j)" ] }, { "cell_type": "code", "execution_count": 176, "metadata": {}, "outputs": [], "source": [ "class X:\n", " def __init__(self, blah):\n", " self.blah = blah" ] }, { "cell_type": "code", "execution_count": 177, "metadata": {}, "outputs": [], "source": [ "x = X('hallo')" ] }, { "cell_type": "code", "execution_count": 178, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'hallo'" ] }, "execution_count": 178, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x.blah" ] }, { "cell_type": "code", "execution_count": 179, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "type" ] }, "execution_count": 179, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(X)" ] }, { "cell_type": "code", "execution_count": 180, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "print(X)" ] }, { "cell_type": "code", "execution_count": 181, "metadata": {}, "outputs": [], "source": [ "Y = X" ] }, { "cell_type": "code", "execution_count": 182, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "print(type(Y))" ] }, { "cell_type": "code", "execution_count": 183, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 183, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Y is X" ] }, { "cell_type": "code", "execution_count": 184, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 184, "metadata": {}, "output_type": "execute_result" } ], "source": [ "isinstance(x, X)" ] }, { "cell_type": "code", "execution_count": 185, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 185, "metadata": {}, "output_type": "execute_result" } ], "source": [ "isinstance(x, Y)" ] }, { "cell_type": "code", "execution_count": 186, "metadata": {}, "outputs": [], "source": [ "def f():\n", " print('calling f')" ] }, { "cell_type": "code", "execution_count": 187, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "function" ] }, "execution_count": 187, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(f)" ] }, { "cell_type": "code", "execution_count": 188, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "type" ] }, "execution_count": 188, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(type(f))" ] }, { "cell_type": "code", "execution_count": 189, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "calling f\n" ] } ], "source": [ "f()" ] }, { "cell_type": "code", "execution_count": 190, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "calling f\n" ] } ], "source": [ "g = f\n", "g()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Generators, used more creatively " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Generating wall clock time*, aka iterating over wall clock timestamps" ] }, { "cell_type": "code", "execution_count": 206, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n", "5\n", "6\n", "7\n", "8\n", "9\n" ] } ], "source": [ "timeaxis = range(10)\n", "for timestamp in timeaxis:\n", " print(timestamp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hm, and real timestamps, iterated likewise?" ] }, { "cell_type": "code", "execution_count": 207, "metadata": {}, "outputs": [], "source": [ "import time\n", "def wallclock_axis():\n", " while True:\n", " yield time.time()" ] }, { "cell_type": "code", "execution_count": 210, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1638538131.1975703\n", "1638538131.2978473\n", "1638538131.3981225\n", "1638538131.498449\n", "1638538131.5987027\n", "1638538131.698947\n", "1638538131.7996597\n", "1638538131.899947\n", "1638538132.0001943\n", "1638538132.1010473\n" ] } ], "source": [ "i = 0\n", "for ts in wallclock_axis():\n", " if i < 10:\n", " print(ts)\n", " i += 1\n", " time.sleep(0.1)\n", " else:\n", " break" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exception Handling and Exception Types" ] }, { "cell_type": "code", "execution_count": 216, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 216, "metadata": {}, "output_type": "execute_result" } ], "source": [ "issubclass(TypeError, Exception)" ] }, { "cell_type": "code", "execution_count": 217, "metadata": {}, "outputs": [], "source": [ "def f(name):\n", " pass" ] }, { "cell_type": "code", "execution_count": 220, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bummer\n" ] } ], "source": [ "try:\n", " f()\n", "except Exception:\n", " print('bummer')" ] }, { "cell_type": "code", "execution_count": 222, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bummer, type error\n" ] } ], "source": [ "try:\n", " f()\n", "except TypeError:\n", " print('bummer, type error')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Order of except clauses is relevant:" ] }, { "cell_type": "code", "execution_count": 226, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bummer, but no further information \n" ] } ], "source": [ "try:\n", " f()\n", "except Exception as e:\n", " print('bummer, but no further information', type(e))\n", "except TypeError as e:\n", " print('bummer, maybe name parameter missing', type(e))" ] }, { "cell_type": "code", "execution_count": 228, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bummer, maybe name parameter missing \n" ] } ], "source": [ "try:\n", " f()\n", "except TypeError as e:\n", " print('bummer, maybe name parameter missing', type(e))\n", "except Exception as e:\n", " print('bummer, but no further information', type(e))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2021-12-17" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Shift Operators" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "22" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "number = 0b10110\n", "number" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0x16'" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hex(number)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "22" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1*16**1 + 6*16**0" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0b10110'" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bin(number)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "22" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1*2**4 + 0*2**3 + 1*2**2 + 1*2**1 + 0*2**0" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "11" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "number >> 1" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0b1011'" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bin(number>>1)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0b10110'" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bin(number)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hardware Register: set bit #3 to high" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0b1'" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bit_3 = 0b00001\n", "bin(bit_3)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "bit_3 = 0b00001 << 3" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0b1000'" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bin(bit_3)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0b10110'" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bin(number)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0b11110'" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_number = number | bit_3\n", "bin(new_number)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bitwise Operators" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "num1 = 0b110101101\n", "num2 = 0b101110100" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0b100100100'" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bin(num1 & num2)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0b111111101'" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bin(num1 | num2)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0b10100'" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "num = 0b1010\n", "num <<= 1\n", "bin(num)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PCAP Sample Exam" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question 1**" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "512" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2 ** 3 ** 2 ** 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Operator Precedence" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "14" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2 + 3 * 4" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "14" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2 + (3 * 4)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "20" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(2 + 3) * 4" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "24" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2 * 3 * 4" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "24" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2 * (3 * 4)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "512" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2 ** 3 ** 2 ** 1" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "64" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "((2 ** 3) ** 2) ** 1" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "512" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2 ** (3 ** (2 ** 1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question 3**" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "Floor division ``//``" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.5" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ " 3/2" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "3//2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question 4**" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 2\n" ] } ], "source": [ "print(1, 2)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1,2\n" ] } ], "source": [ "print(1, 2, sep=',')" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n" ] } ], "source": [ "print(1)" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1***" ] } ], "source": [ "print(1, end='***')" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 2\n", "2 3\n" ] } ], "source": [ "print(1, 2)\n", "print(2, 3)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1,2\n", "2,3\n" ] } ], "source": [ "print(1, 2, sep=',')\n", "print(2, 3, sep=',')" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "2\n", "3\n" ] } ], "source": [ "print(1, 2, sep='\\n')\n", "print(2, 3, sep='\\n')" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1,2***2;3+++" ] } ], "source": [ "print(1, 2, sep=',', end='***')\n", "print(2, 3, sep=';', end='+++')" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 2 3 4 " ] } ], "source": [ "n = 0\n", "while n < 4:\n", " n += 1\n", " print(n, end=' ')" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1fuzzi2fuzzi3fuzzi4********" ] } ], "source": [ "print(1, 2, 3, 4, sep='fuzzi', end='********')" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [], "source": [ "print(1, 2, 3, 4, sep='fuzzi', end='********', file=open('mei-super-file', 'w'))" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'1fuzzi2fuzzi3fuzzi4********'" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "open('mei-super-file').read()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question 5**" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [], "source": [ "x = 0\n", "y = 2" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z = len(\"Python\")\n", "z" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [], "source": [ "x = y > z" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n" ] } ], "source": [ "print(x)" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "print(type(x))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question 6**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Binary Operators: *Exclusive OR*" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "num1 = 0b110101101\n", "num2 = 0b101110100" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0b11011001'" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bin(num1 ^ num2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question 11**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Slicing" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [], "source": [ "l = [1, 2, 3, 'a', 'b', 'c', 6, 7, 8]" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l[2]" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'c'" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l[5]" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[3, 'a', 'b']" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l[2:5]" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[3, 'b']" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l[2:5:2]" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'cde'" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = 'abcdef'\n", "s[2:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Immutable, Slice Assignment" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 'a', 'b', 'c', 6, 7, 8]" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [], "source": [ "l[3:6] = [4, 5]" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4, 5, 6, 7, 8]" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'abcdef'" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Strings are *immutable*, which means that *there is no slice assignment*. Slicing is possible though!!" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 'str' object does not support item assignment\n" ] } ], "source": [ "try:\n", " s[2:4] = ['x', 'y']\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question 12**" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 > 2 # numerical comparison" ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'a' > 'b' # lexical comparison" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'1' > '2' # lexical comparison" ] }, { "cell_type": "code", "execution_count": 115, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'abc' > 'def'" ] }, { "cell_type": "code", "execution_count": 117, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 117, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = '20'\n", "y = '30'\n", "x > y" ] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 119, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = '020'\n", "x > y" ] }, { "cell_type": "code", "execution_count": 121, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 121, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = '200'\n", "y = '30'\n", "x > y" ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'2' > '3'" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 123, "metadata": {}, "output_type": "execute_result" } ], "source": [ "int('200') > int('30')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question 13**" ] }, { "cell_type": "code", "execution_count": 125, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'r'" ] }, "execution_count": 125, "metadata": {}, "output_type": "execute_result" } ], "source": [ "name = 'Faschingbauer'\n", "name[12]" ] }, { "cell_type": "code", "execution_count": 127, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " string index out of range\n" ] } ], "source": [ "try:\n", " name[13]\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'r'" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" } ], "source": [ "name[-1]" ] }, { "cell_type": "code", "execution_count": 130, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'a'" ] }, "execution_count": 130, "metadata": {}, "output_type": "execute_result" } ], "source": [ "name[-4]" ] }, { "cell_type": "code", "execution_count": 131, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'auer'" ] }, "execution_count": 131, "metadata": {}, "output_type": "execute_result" } ], "source": [ "name[-4:13]" ] }, { "cell_type": "code", "execution_count": 132, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'aue'" ] }, "execution_count": 132, "metadata": {}, "output_type": "execute_result" } ], "source": [ "name[-4:12]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question 15**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dictionary iteration" ] }, { "cell_type": "code", "execution_count": 134, "metadata": {}, "outputs": [], "source": [ "dict = { 'a': 1, 'b': 2, 'c': 3 }" ] }, { "cell_type": "code", "execution_count": 136, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a\n", "b\n", "c\n" ] } ], "source": [ "for elem in dict:\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 138, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a\n", "b\n", "c\n" ] } ], "source": [ "for elem in dict.keys():\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 140, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n" ] } ], "source": [ "for elem in dict.values():\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 142, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('a', 1)\n", "('b', 2)\n", "('c', 3)\n" ] } ], "source": [ "for elem in dict.items():\n", " print(elem)" ] }, { "cell_type": "code", "execution_count": 145, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a 1\n", "b 2\n", "c 3\n" ] } ], "source": [ "for k, v in dict.items(): # tuple unpacking\n", " print(k, v)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Tuple unpacking" ] }, { "cell_type": "code", "execution_count": 146, "metadata": {}, "outputs": [], "source": [ "t = ('a', 1)" ] }, { "cell_type": "code", "execution_count": 147, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('a', 1)" ] }, "execution_count": 147, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t2 = t\n", "t2" ] }, { "cell_type": "code", "execution_count": 148, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a 1\n" ] } ], "source": [ "k = t[0]\n", "v = t[1]\n", "print(k, v)" ] }, { "cell_type": "code", "execution_count": 149, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a 1\n" ] } ], "source": [ "k, v = t # tuple unpacking\n", "print(k, v)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question 17**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "List comprehension" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 4, 9, 16]" ] }, "execution_count": 150, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l = [0, 1, 2, 3, 4]\n", "squares = [elem**2 for elem in l]\n", "squares" ] }, { "cell_type": "code", "execution_count": 152, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 4, 9, 16]" ] }, "execution_count": 152, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def sq(elems):\n", " ret = []\n", " for elem in elems:\n", " ret.append(elem**2)\n", " return ret\n", "squares = sq(l)\n", "squares" ] }, { "cell_type": "code", "execution_count": 153, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 4, 9, 16]" ] }, "execution_count": 153, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[elem**2 for elem in l]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dictionary comprehension" ] }, { "cell_type": "code", "execution_count": 156, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}" ] }, "execution_count": 156, "metadata": {}, "output_type": "execute_result" } ], "source": [ "{elem: elem**2 for elem in l}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Set comprehension" ] }, { "cell_type": "code", "execution_count": 158, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{0, 1, 4, 9, 16}" ] }, "execution_count": 158, "metadata": {}, "output_type": "execute_result" } ], "source": [ "{elem**2 for elem in l}" ] }, { "cell_type": "code", "execution_count": 161, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " integer division or modulo by zero\n" ] } ], "source": [ "try:\n", " lst = [i // i for i in range(0,4)]\n", " print(lst)\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 163, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n" ] } ], "source": [ "for i in range(0,4):\n", " print(i)" ] }, { "cell_type": "code", "execution_count": 165, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " division by zero\n" ] } ], "source": [ "try:\n", " 0/0\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 167, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " integer division or modulo by zero\n" ] } ], "source": [ "try:\n", " 0//0\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question 18**" ] }, { "cell_type": "code", "execution_count": 168, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[[], [0], [0, 1]]" ] }, "execution_count": 168, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lst = [[c for c in range(r)] for r in range(3)]\n", "lst" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question 20**" ] }, { "cell_type": "code", "execution_count": 170, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['12', '34']" ] }, "execution_count": 170, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lst1 = \"12,34\"\n", "lst1.split(',')" ] }, { "cell_type": "code", "execution_count": 173, "metadata": {}, "outputs": [], "source": [ "lst2 = lst1.split(',')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question 22**" ] }, { "cell_type": "code", "execution_count": 174, "metadata": {}, "outputs": [], "source": [ "l = [0, 1, 2, 3, 4]" ] }, { "cell_type": "code", "execution_count": 176, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 4, 9, 16]" ] }, "execution_count": 176, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[elem**2 for elem in l]" ] }, { "cell_type": "code", "execution_count": 178, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "4\n", "9\n", "16\n" ] } ], "source": [ "for elem in l:\n", " print(elem**2)" ] }, { "cell_type": "code", "execution_count": 180, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "4\n", "9\n", "16\n" ] } ], "source": [ "def f(n):\n", " return n**2\n", "for elem in l:\n", " print(f(elem))" ] }, { "cell_type": "code", "execution_count": 183, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "4\n", "9\n", "16\n" ] } ], "source": [ "f = lambda n: n**2\n", "for elem in l:\n", " print(f(elem))" ] }, { "cell_type": "code", "execution_count": 184, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "4\n", "9\n", "16\n" ] } ], "source": [ "for elem in l:\n", " print((lambda n: n**2)(elem))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question 23**" ] }, { "cell_type": "code", "execution_count": 185, "metadata": {}, "outputs": [], "source": [ "import math" ] }, { "cell_type": "code", "execution_count": 186, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.141592653589793\n" ] } ], "source": [ "print(math.pi)" ] }, { "cell_type": "code", "execution_count": 187, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.141592653589793\n" ] } ], "source": [ "from math import pi\n", "print(pi)" ] }, { "cell_type": "code", "execution_count": 188, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.141592653589793\n" ] } ], "source": [ "from math import pi as joerg\n", "print(joerg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## System Errors" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " [Errno 2] No such file or directory: '/xyz/abc'\n", "2\n" ] } ], "source": [ "try:\n", " f = open('/xyz/abc')\n", "except Exception as e:\n", " print(type(e), e)\n", " print(e.errno)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from os import strerror" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'No such file or directory'" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "strerror(2)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " [Errno 13] Permission denied: '/etc/passwd'\n" ] } ], "source": [ "try:\n", " open('/etc/passwd', 'w')\n", "except Exception as e:\n", " print(type(e), e)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Permission denied'" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "strerror(13)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.9" } }, "nbformat": 4, "nbformat_minor": 4 }