{
 "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": [
       "<function __main__.add(a, b)>"
      ]
     },
     "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='<stderr>' mode='w' encoding='utf...\n",
      "    __stdin__ = <_io.TextIOWrapper name='<stdin>' mode='r' encoding='utf-8...\n",
      "    __stdout__ = <_io.TextIOWrapper name='<stdout>' 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 = <ipykernel.displayhook.ZMQShellDisplayHook object>\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 = [<class '_frozen_importlib.BuiltinImporter'>, <class '_fro...\n",
      "    modules = {'IPython': <module 'IPython' from '/home/jfasch/venv/jfasch...\n",
      "    path = ['/home/jfasch/work/jfasch-home/trainings/log/detail/2021-12-01...\n",
      "    path_hooks = [<class 'zipimport.zipimporter'>, <function FileFinder.pa...\n",
      "    path_importer_cache = {'/home/jfasch/.ipython': FileFinder('/home/jfas...\n",
      "    platform = 'linux'\n",
      "    platlibdir = 'lib64'\n",
      "    prefix = '/home/jfasch/venv/jfasch-home'\n",
      "    ps1 = 'In : '\n",
      "    ps2 = '...: '\n",
      "    ps3 = 'Out: '\n",
      "    pycache_prefix = None\n",
      "    stderr = <ipykernel.iostream.OutStream object>\n",
      "    stdin = <_io.TextIOWrapper name='<stdin>' mode='r' encoding='utf-8'>\n",
      "    stdout = <ipykernel.iostream.OutStream object>\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": [
      "<class 'AttributeError'> '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": [
      "<class 'KeyError'> '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": [
      "<class 'StopIteration'> \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": [
      "<class '__main__.X'>\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": [
      "<class 'type'>\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 <class 'TypeError'>\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 <class 'TypeError'>\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": [
      "<class 'bool'>\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": [
      "<class 'TypeError'> '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": [
      "<class 'IndexError'> 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": [
      "<class 'ZeroDivisionError'> 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": [
      "<class 'ZeroDivisionError'> 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": [
      "<class 'ZeroDivisionError'> 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": [
      "<class 'FileNotFoundError'> [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": [
      "<class 'PermissionError'> [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
}