Create a function that takes a Roman numeral as its argument and returns its value as a numeric decimal integer. You don't need to validate the form of the Roman numeral.

Modern Roman numerals are written by expressing each decimal digit of the number to be encoded separately, starting with the leftmost digit and skipping any 0s. So 1990 is rendered "MCMXC" (1000 = M, 900 = CM, 90 = XC) and 2008 is rendered "MMVIII" (2000 = MM, 8 = VIII). The Roman numeral for 1666, "MDCLXVI", uses each letter in descending order.

Example:

```python
solution('XXI') # should return 21
```

```Elixir
Solution.decode("XXI") # should return 21
```

Help:
```
Symbol  Value
I             1
V             5
X             10
L             50
C             100
D             500
M             1,000
```

*Courtesy of rosettacode.org*

```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 = 'import lzma, base64\n\nsolution = lambda r: lzma.decompress(base64.b64decode("""\\\n                                 /Td6WFo\n                                 AAATm1r\n                                 RGAgAhA\n                                 RYAAAB0\n                                 L+Wj4IT\n                                 PDa5dAC\n                                  +IBTAD\n                                  CJOfKM\n                                  Rt/y05\n                                  ncAbPH\n                                  e/ziZ5\n                                  +lW9kF\n                                9apVzeQmm\n                               psQxWSa1Vj\n                               Vw0eOX96iJ\n                              AQAOMdiyld0\n                             sRLijjQWnNEj\n                            SX+C4RCcTLw6\n                            bbBQ4gBNEtE/\n                           J8Xpew2izDFru\n                         zCker5is WtTkyf\n                        Bmh1cPQf  uhXI5E\n                       Elng7n5P   7Az2pC                                 ksO2lQlx4JKbk\n                      CMHbwaIh6   bK9e5p                                GyvWtQJb32tJ+s1j\n                     Nw4AEa0eX    7R9U7X                            ns57GeveiFAaaLdiwpGIf\n                    zNJytHpyxR    jl/SQT                          EBPJ3/dJ7D1CpMr5lEVk3yRr\n                   Muo2eLSouN     BHkDVz                        b6rQexAiAGqur2nqcP6iMUab7lJ\n                  7Atsjv09bPz     Mh/tzn                       3Duiy4gfTajPi1GXYddhGNGPKu6Y\n                  T7VZO0gHZC8OoLkdG4TIzM                      b8qfQj0Krb/4D/KketjjIVXLSQscFD\n                  FRQ8NlZRz8S/uAACXvxhrB                     I5UkGzWXQB921RMO46lOq1Qpj/DAU+R\n                  yDhpaE3jagOIQ6t8tC+57aq26                  6SHjln1K49lAj+0QxAa5itcNxqYvkNYb\n                    nWuZyHzEpIaj6M721gBPZGuq90WtHJ        QfSmhkU3g8oYn4dXMfOYd/JxVNTFv0uER3h\n                        CdkSk4B+DEJBg0cS2CMoCEhmJ9R7Ux  N2pYMYGoKrZ6kCTSXC+6Cn+bCfrOulsOTxWR+\n                            TBx/B4fyX/vSDY55/1LPURZfrWrKF3jTGJopUpacl4hajl3nuIW7V31oddC8+j7sfC\n                               LEWKiQgB5sp/SjtvvbPDVjibyvrOs975PIBz8jVo4W88FHwFZ7OSiaswWcZCINEj\n                                  h5NgjvBB8nzbtA9Nc/KE0thSHUTeotlfpZO84FAiyCFpRMKcfLpnB/+BnLqL4D\n                                  3i0UJe OX7/LYhEhcl/oe8d4Eoz6zZwbYrMlc/W/Z13DUOYfIDuD2GqbWELZzkd\n                                  rlqFSGv7T8bBwvhW3I9WfPCRJzU+Yruy8Yv2fKQKLDBPQLuQr7zbIsMM6Wq7pR9Xy\n                                  ptgNFP7ebeDrK3/b1C4hQsrH6BHABWFdg31SbpCijEMAOXib5ZjWr+fSik6P6RLMzuY8\n                                  v1u5z9cvy/BBokC2gu3XIVspV9CPSYw7dng3aA6JXvp3oYr6GYUnPNaRs8xWn6/l\n                                 DxmBvS9EBq3zLapEaXOI0f+Ov2HBxwo6nqeqfu7skPEluQa8c1XCUnjJXpDc1q8aqr\n                                oQPfyJt80Z/kLYHqoyly82sTylBVByPbdGOx1aLU8DJcwPVoKldM+n6OxVa2sTZQ3+Kz5Un\n                                 3W3k1WL+6p8n5d0WO7Fm89A9rXPjC7RyMheWuvyjBzvMrDicRsoTbkKOlE9WgCBLwIUvJ9d77Y\n                                 cGmxHZex4fn2exxXwObOfXDI67dnrEV9VqirXa05i+LCw2NmLa1O5qS6227qwrDRFX+Ge30Mce\n                                 licP/W9tongIW1++1KuyAHYdTacDyNfaC1FhHW4VUcTwyjqXwmJ9OSFuxmkHH8Xs\n                                 MgVopPAgd+aK8HmD2HLJ4Pm9dduyMPBuWx18btQUxgPL0EiB+1uhOupA6epIRCHuQp5 d\n                                9/7QaZHwi+loqjcRnfocYK1oGHcF    pjVMcOHy19U5I3IEGC9YH7kyMUSNfvxWCzynsz\n                                ZyL5d6wDfGq10sQzuHT0zBvp4a      wKgt2P82d4Y4Ucahat42JzGunKGB34R1t+2H\n                                IBoV9R0Od4vsdKc2y8+SaNWN        3h5ru+y195DJ+ADp+XMz8omYShSDnmXwKe5H8\n                                 pBIKzUTkny+mgMO5TTl3LN        m1f64bRxbq8bQ8u5Fd/RyknXda8jeLZKy1daUum      iO\n                                 jWu24qGCtfMsIjA20wwk0l        HX brW/Hw9VeMtG8pXRQsOEamAUfeyJdwRZOA35cpvauZOY\n                                  lfS9Mo6bG3e28lh3vEo+s        i1 up9tqkQ/QE+At+GJYzbJg9Vhn+T4Pont99BdW0NG9l\n                                  NH+cIWItjDqN9ELhGuBAbK       og eaVoVj4v9NA6GI0FpfSnI87b6DehE/D Ys\n                                  iNvSwI/YojHiukqEnDZ+hiUgr       xN1FyUwDjpF/3khOVikJjrcypyzbCNF\n                                  iF+wXkiG4N57WF4xKvVRFYZJwpE      TXznQ6KRBMVeA0HPReN   P4PO UuXEQ\n                                  boQTHjMF6CZ6zNtOUwpDWwabsmH7m    zHROuVp/CU4nyYg3C+Xe    OSr  8C1\n                                  I3ZXS4OnhSaRVpw1fmKxVYz+zFxCMbj    MN2zKyiKGxLycuDDtpk     r\n                                  mk0VwLYmECLn/+4AZLlvGYZgs9+dswl/R     oOiTWrRLWYNCLwDuO\n                                  NCquFYpXwPJ7OTfZmI/lSci0oxt6K1bCA+     LmwevjoFurWILV3m\n                                  hJy91lo3FR75O+pTOFOXVqHREDIq54DhRhs     +JX+k/56oDlL\n                                  8khxwGhFudFIJlMR+ocl4pcn5oal7b1yUv7P      EQ6bhSzUGT\n                              2DkhLG2xToc1FkSUCUs0ZBForTksg4oKeXY+wmzT5      d0ov8uhIs3\n                     RkU5d73LAX2WB3K8pSP7REvCXZN5GlmRpRNJyEoFfSF+EJBVHi       amOIgs5/Jf\n               HE9ZsEXrPyI9VkYUbA5zfuBuC6UbRFbGJv5kd0IYSbAGZQ+6Ip/n6XO0        FeUNdLXk8\n          QNFBENfFfvSd7PYEPTpxHcUKRgoBXHitXZ8yyhsx98RQCnWJ37S2ZMqCyj7XG         N1bTCXhXN\n    C8SH/0qhB8eEMTI4MlZfQPN9GiK1rB+Kew7vXPlWUeVEM1yvdK6nip8ZmoVOOgj9dy           +NfqJ1wN\n  C6wTvnr4k7dBav1DI4r1M154EwJ5fQHtVq7huhJIHeVFFMIsJOJHwaw7HIOpAB+ra8Fi            0Rtsjudc\n co20P5sbAEOg50/JcF3wwsX6vLrPkXMrQ7wOHwvRS17E4gPZszd9fOPziqFUQTWn0qlv              kt3DjZHz\n/ze4tiWlF94TLmcQTZUmsvJdWrMNVIt4itpjZQ71tkkFzYmdGl/67dIBwTSTxN3LxSefX               mNbDPW9\nGPGTWnKXk61yp38Qa06gIHaxpBsRYotF8v4pFe8pJf23jrQYAmNsgnTjrEi/YteTy2GV                 /rCKdJA\nhX9K/GrNHuFaoq17s5AEjYBwQWFiRrIHltzynhi+xQHCTyzguBYLrT1BlAe433rIcY                   1fTm0mxs\nKYwQiX2KR/w07P9g4NolasD9AaMUREJKbFe2DHoT      C34ZqIGdqD67GXf3vNKT                  b41gBup2XJ\n 3Ae4ItCMgUkRcpAhfagPR            YwuTzM      BDdcOS1qh4mdxK471MjY                  ShqmAlAMOx8\n  rcxtoAmdK4zCQg7WKTy+wv          J7AwNX      FACIORl3QZDAun/4B2L/                 kcQZRqVnDbzde\n    FyE/AGv2lKBQcVUTWs5LY         /WHLkX      +e4DaGLJSvBpS0JgM/w4                 pH2JnU6mZ3YB\n      UoQiKVB6E6Q+R5rSF78h        o8ZWh1       Ze0dDrGjhvFlSwq1jzn                 wZ7  UeJJg6+\n        rf39tvWMSrRkBbFF3WX       uc7vqI       HNL63rtNLDYk1lNSP91                 uZ     Et+c0\n          2PjNdK+aCUIJGBLiFG      umzPTv       Eb5i1TeV9rsqWAXO9+i                         y7lq\n            r8W3HS348PkFoj7D5     TaWMTd       GDkVzQJWOqKE0a2jlr/                         Ajpo\n              tE1f3mNbjnlP3gr     1j0Tfz        HNJrXRuaUyruMQXZZu                           s4\n                YmzQhagmlyLgC6    9bm0yu        8v7v6ILSbFEUtOo/j\n                 bljZ4G+CmEOhnt   7J5uOA        a5bqP/fS2tXWFNq5u\n                   hCRpmP1C2lKIh  ++Cvu0         Me8l9dy9ehafsxIG\n                    5unn/tSbpZ6JU Qnx6Yf         Y47uKb+W4yiX6D4t\n                     8JvEHDtvot884paTfUy         UuoVJ3Srm9Xcj2nJ\n                       VoUY5yr+bEdtU50V+          bNIm8TLp45w3MCD\n                         Co3Ry4SRQvsG/6l          0SszckG+2WefFa\n                          S6scWyVc9WX5HeW/        jixEi44ljwrNs2\n                           b6Brc3o2Sqd6n831d       lgOO2nT+5rm18\n                            qdajthwQIdeJI12t       FOPWTVVvuW+X6U\n                             8p0aoC0KHtkIQRg        sOmWEcALsRnKV+\n                              1VvSiwDx4e71V          LzQHHYIwTWdQa1\n                               Jc7IzK6CQKx            V//Ai2P1TGA6wv\n                                gFmA2icc/             8teq5Ef3CPO9COg\n                                pEA1OU9R               yvpCuuWeBpNY8c\n                                 LqCLorm               hhkGBB7I0CXwuy5\n                                 wx1tyUp                H1qdSiGLomuoIO\n                                 DWlFe21                OTWgfZ8f/yPXhZ\n                                 0EsElFT                 Mkxmwt8XJA3Yr\n                                 GOGywvo                 bmHFrN9tpD6YD\n                                  FAUCHa                 6QSN4doeNIPUG\n                                  O4TzQb                  Bg4hRqxxFXVI\n                                  sxgb30                  eVGwfxiUDvZ\n                                  tjR0N3                  UzlkXEMyQEc\n                                  ZWU2AF                  STp4lJJtBY+\n                                  yphBJE                   vt6PB2jIW2\n                                  1BR9fH                   Mx5qIAmAQh\n                                  0lkMnx                   Iw6EoryBGu\n                                  mM0iMM                   sQjGLtB5EO\n                                  IqoEDu                   gHditn3CoK\n                                  WW5lsj                   BD3Qx/0qdJ\n                                  CuS6GX                   x4FM2ebnO8fWKp\n                                  ntfA8d                   LzSeUVtQdjr6baJF\n                                  FvPKTx                    ROHoATjmcuuS8Za\n                                  +k8hIE                    Y4QPMhGvw+rgmyO\n                                  eS8ljL                    NRa+3ee2ejgRJ\n                                  c7dN0u                    D2wdc+VotP3H\n                                  gRwcVW                     CLXrUkFgFJ\n                                  wEcr3+                     hmfByOZqn\n                                  qKf0LJ                     ka7Bshnwx\n                                  3Fo0Yc                      B4P6oE8\n                                 kTBeuis                    rshRGerY\n                                 N1H3fvn                  1K0EZPQbP\nGS+o85xeZ/wyT2TJZ6RegMRdEdU/Haq0NXmXBLEQW7mgH7rBKJRWimm6vmrxhQewbVBdoszwppeYiIeukokoL0KUGtHWNUpaHG54bzeeH5mPrJ\nUDPEreNjIFmaxZ6Lib6q4MQOxaFwAAAABSbX0sVUXgFAAByhvQiQIAiLSQnrHEZ/sCAAAAAARZWg===""")).decode().split().index(r)'
_co = compile(_CODE, USER_FILENAME, "exec")
exec(_co, ns, ns)

_target = None
_fn_name = 'solution'
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: 8566080