Introduction

It's been more than 20 minutes since the negligent waiter has taken your order for the house special prime tofu steak with a side of chili fries.

Out of boredom, you start fiddling around with the condiments tray. To be efficient, you want to be familiar with the choice of sauces and spices before your order is finally served.

You also examine the toothpick holder and try to analyze its inner workings when - yikes - the holder's lid falls off and all 23 picks lay scattered on the table.

Being a good and hygiene oriented citizen, you decide not to just put them back in the holder. Instead of letting all the good wood go to waste, you start playing around with the picks.

In the first "round", you lay down one toothpick vertically. You've used a total of one toothpick.

In the second "round", at each end of the first toothpick, you add a perpendicular toothpick at its center point. You added two additional toothpicks for a total of three toothpicks.

In the next rounds, you continue to add perpendicular toothpicks to each free end of toothpicks already on the table.

With your 23 toothpicks, you can complete a total of six rounds:


You wonder if you'd be able to implement this sequence in your favorite programming language. Because your food still hasn't arrived, you decide to take out your laptop and start implementing...

Challenge
Implement a script that returns the amount of toothpicks needed to complete n amount of rounds of the toothpick sequence.

```
0 <= n <= 5000
```

Hint
You can attempt this brute force or get some inspiration from the math department.

```python

USER_FILENAME = "<user_code>"
import sys, json, builtins
import math, heapq, bisect, itertools, functools, collections, statistics, fractions, decimal, operator, array, random, re, string, os, pathlib
try:
    import resource as _res
except Exception:
    _res = None
from collections import Counter, defaultdict, deque, OrderedDict
from functools import lru_cache, reduce
from itertools import accumulate, permutations, combinations, product
from math import gcd, ceil, floor, sqrt
from decimal import Decimal
try:
    from typing import *
except Exception:
    pass
try:
    sys.setrecursionlimit(1_000_000)
except Exception:
    pass
try:
    import site as _site
    try:
        _sys_sites = _site.getsitepackages() if hasattr(_site, "getsitepackages") else []
        for _p in _sys_sites:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
    try:
        _usp = _site.getusersitepackages()
        if isinstance(_usp, str):
            _usp = [_usp]
        for _p in _usp:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
except Exception:
    pass

def _disabled_input(*args, **kwargs):
    raise RuntimeError("input() is disabled in callable mode")
builtins.input = _disabled_input

ns = {"__name__": "__judge__"}  # prevent if __name__ == "__main__" blocks
for _k, _v in list(globals().items()):
    if not _k.startswith("_"):
        ns[_k] = _v
_CODE = 'from math import log\nfrom functools import lru_cache\n\n@lru_cache(5000)\ndef toothpick(n):\n    if n == 0:\n        return 0\n    else:\n        k = int(log(n, 2))\n        i = n - 2**k\n        if i == 0:\n            return (2**(2*k+1)+1)/3\n        else:\n            return toothpick(2**k) + 2 * toothpick(i) + toothpick(i+1) - 1\n\n# from collections import deque\n# from time import monotonic\n# from numpy import zeros\n# from itertools import chain\n\n# _r = zeros((5000, 5000))\n# _n = 0\n# _q1 = [(2500, 2500)]\n# _q2 = []\n# _c = 0\n# _t = monotonic()\n\n# def toothpick(n):\n#     print(n)\n#     nonlocal _n, _q1, _q2, _c, _t\n#     t = _t\n#     if n > 2100:\n#         raise Exception(n)\n#     r = _r\n#     q1 = _q1\n#     q2 = _q2\n#     count = _c\n#     t1 = 0\n#     t2 = 0\n#     for round in range(_n, n):\n#         dx = 1 if round % 2 == 1 else 0\n#         dy = 0 if round % 2 == 1 else 1\n#         tmp = monotonic()\n#         re = []\n#         ap = re.append\n#         r_m = 0\n        \n#         for xy in chain(q1, q2):\n\n#             r_m = r[xy]\n#             if r_m == 0:\n#                 r[xy] = round\n#                 ap(xy)\n# #                 count += 1\n#             else:\n#                 if r_m == round:\n#                     r[xy] = -1\n# #                     count -= 1\n#         t1 += monotonic() - tmp\n#         tmp = monotonic()\n#         q1 = [(xy[0]+dx, xy[1]+dy) for xy in re if r[xy] == round]\n#         q2 = [(xy[0]-dx, xy[1]-dy) for xy in re if r[xy] == round]\n#         count += len(q1)\n#         t2 += monotonic() - tmp\n    \n    \n#     print(n, count, monotonic() - t, t1, t2)\n#     _n = n\n#     _q1 = q1\n#     _q2 = q2\n#     _c = count\n#     return count\n'
_co = compile(_CODE, USER_FILENAME, "exec")
exec(_co, ns, ns)

_target = None
_fn_name = 'toothpick'
if _fn_name:
    if "Solution" in ns:
        try:
            _obj = ns["Solution"]()
            if hasattr(_obj, _fn_name):
                _target = getattr(_obj, _fn_name)
        except Exception:
            _target = None
    if _target is None and _fn_name in ns and callable(ns[_fn_name]):
        _target = ns[_fn_name]
# Fallback: if there's exactly one user-defined function, use it
if _target is None:
    _cands = [v for k, v in ns.items() if callable(v) and getattr(v, "__module__", "") in ("__judge__", "__main__")]
    _user_funcs = [c for c in _cands if getattr(c, "__name__", "").startswith("_") is False]
    if len(_user_funcs) == 1:
        _target = _user_funcs[0]
if _target is None:
    raise RuntimeError(f"Could not resolve callable '{_fn_name}'")

_raw = sys.stdin.read().strip()
if _raw:
    _parsed = json.loads(_raw)
    if isinstance(_parsed, dict):
        _kwargs = _parsed.get("kwargs", {})
        _args = _parsed.get("args", [])
    else:
        _args, _kwargs = _parsed, {}
else:
    _args, _kwargs = [], {}
if not isinstance(_args, (list, tuple)):
    _args = [_args]
_res = _target(*_args, **_kwargs)
try:
    sys.stdout.write(repr(_res) + "\n")
except Exception:
    pass

```

Measured memory_bytes: 5732