atomdb package

Contents

atomdb package#

AtomDB, a database of atomic and ionic properties.

class atomdb.Element(elem)#

Bases: object

Element properties.

Attributes#

atnumint

Atomic number of the element.

symbolstr

Symbol of the element.

namestr

Name of the element.

property at_radius#

atomic radius of the element.

Returns#

at_radius : Dict[float]

Notes#

This property is a dictionary with the following keys:
property atnum#
property c6#

Isolated atom C6 dispersion coefficients of the element.

Returns#

c6 : Dict[float]

Notes#

This property is a dictionary with the following keys:
property cov_radius#

Covalent radius of the element.

Returns#

cov_radius : Dict[float]

Notes#

This property is a dictionary with the following keys:
  • “cordero”
    • Source

      B. Cordero, V. Gomez, A. E. Platero-Prats, M. Reves, J. Echeverria,E. Cremades, F. Barragan, and S. Alvarez, Dalton Trans. pp. 2832–2838 (2008)

    • Units

      angstrom

    • URL

      http://dx.doi.org/10.1039/b801115j

    • Notes

      For carbon the number is a weighted average over the data for different hybridizations. For Mn, Fe, and Co, the number is a weighted average over the data for different spins (high spin and low spin)

  • “bragg”
  • “slater”
property eneg#

Electronegativity of the element.

Returns#

eneg : Dict[float]

Notes#

This property is a dictionary with the following keys:
property group#

Group of the element.

Returns#

group : int

property mass#

Atomic mass of the element.

Returns#

mass : Dict[float]

Notes#

This property is a dictionary with the following keys:
property mult#

Multiplicity of the element.

Returns#

mult : int

property name#

Name of the element.

Returns#

name : str

property period#

Period of the element.

Returns#

period : int

property pold#

Isolated atom dipole polarizability of the element.

Returns#

pold : Dict[float]

Notes#

This property is a dictionary with the following keys:
  • “crc”
    • Source

      CRC Handbook of Chemistry and Physics (CRC, Boca Raton, FL, 2003).

    • Units

      angstrom**3

    • Notes

      If multiple values were present in the CRC book, the value used in Erin’s postg code is taken

  • “chu”
property symbol#

Symbol of the element.

Returns#

symbol : str

property vdw_radius#

van der Waals radius of the element.

Returns#

vdw_radius : Dict[float]

Notes#

This property is a dictionary with the following keys:
class atomdb.Promolecule#

Bases: object

Promolecule class.

A promolecule is an approximation of a molecule constructed from a linear combination of atomic and/or ionic species. Properties of this promolecule can be computed from those of the atomic and/or ionic species, depending on whether the property is an extensive one or an intensive one.

For an extensive property, the formula is a linear combination:

\[\text{prop.}_{\text{mol;extensive}} = \sum_{A=1}^{N_{\text{atoms}}} c_A \text{prop.}_A\]

For an intensive property, the formula is a mean:

\[\text{prop.}_{\text{mol;intensive}} = {\left\langle \left\{ \text{prop.}_A \right\}_{A=1}^{N_{\text{atoms}}} \right\rangle}_p\]

where the parameter p defines the type of mean used (1 = linear, 2 = geometric, etc.).

Attributes#

atoms: list of Species

Species instances out of which the promolecule is composed.

coords: np.ndarray((N, 3), dtype=float)

Coordinates of each species component of the promolecule.

coeffs: np.ndarray((N,), dtype=float)

Coefficients of each species component of the promolecule.

charge()#

Compute the charge of the promolecule.

Returns#

charge: float

Charge of the promolecule.

density(points, spin='t', log=False)#

Compute the electron density of the promolecule at the desired points.

Parameters#

points: np.ndarray((N, 3), dtype=float)

Points at which to compute the density.

spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’

Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.

log: bool, default=False

Whether to compute the log of the density instead of the density. May be slightly more accurate.

Returns#

density: np.ndarray((N,), dtype=float)

Density evaluated at N points.

energy()#

Compute the energy of the promolecule.

Returns#

energy: float

Energy of the promolecule.

eta(p=1)#

Compute the chemical hardness of the promolecule.

Parameters#

p: int, default=1 (linear mean)

Type of mean used in the computation.

Returns#

eta: float

Chemical hardness of the promolecule.

gradient(points, spin='t', log=False)#

Compute the electron density gradient of the promolecule at the desired points.

Promolecular gradient:

\[\nabla \rho_{\text{mol}}^{(0)} (\mathbf{R}) = \sum_{A=1}^{N_{\text{atoms}}}\ c_A \nabla \rho_A^{(0)}(\mathbf{R})\]

where

\(N_{\text{atoms}}\) is the number of atoms in the molecule,

\(c_A\) are the coefficients of the species,

\(R\) are points in 3D cartesian coordinates,

\(\nabla \rho_A^{(0)}(\mathbf{R})\) is the gradient of the species.

Parameters#

points: np.ndarray((N, 3), dtype=float)

Points at which to compute the electron density gradient.

spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’

Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.

log: bool, default=False

Whether to compute the log of the density instead of the density. May be slightly more accurate.

Returns#

gradient: np.ndarray((N, 3), dtype=float)

Electron density gradient of the promolecule evaluated at N points.

hessian(points, spin='t', log=False)#

Compute the promolecule’s electron density Hessian at the desired points.

Parameters#

points: np.ndarray((N, 3), dtype=float)

Points at which to compute the electron density Hessian.

spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’

Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.

log: bool, default=False

Whether to compute the log of the density instead of the density. May be slightly more accurate.

Returns#

hess: np.ndarray((N, 3, 3), dtype=float)

Electron density Hessian of the promolecule evaluated at N points.

ip(p=1)#

Compute the ionization potential of the promolecule.

Parameters#

p: int, default=1 (linear mean)

Type of mean used in the computation.

Returns#

ip: float

Ionization potential of the promolecule.

ked(points, spin='t', log=False)#

Compute the kinetic energy density of the promolecule at the desired points.

points: np.ndarray((N, 3), dtype=float)

Points at which to compute the kinetic energy density.

spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’

Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.

log: bool, default=False

Whether to compute the log of the density instead of the density. May be slightly more accurate.

Returns#

ked: np.ndarray((N,), dtype=float)

Kinetic energy density evaluated at N points.

laplacian(points, spin='t', log=False)#

Compute the promolecule’s electron density Laplacian at the desired points.

Parameters#

points: np.ndarray((N, 3), dtype=float)

Points at which to compute the electron density Laplacian.

spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’

Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.

log: bool, default=False

Whether to compute the log of the density instead of the density. May be slightly more accurate.

Returns#

laplacian: np.ndarray((N,), dtype=float)

Electron density Laplacian of the promolecule evaluated at N points.

mass()#

Compute the mass of the promolecule.

Returns#

mass: float

Mass of the promolecule.

mu(p=1)#

Compute the chemical potential of the promolecule.

Parameters#

p: int, default=1 (linear mean)

Type of mean used in the computation.

Returns#

mu: float

Chemical potential of the promolecule.

mult(p=1)#

Compute the multiplicity of the promolecule.

Parameters#

p: int, default=1 (linear mean)

Type of mean used in the computation.

Returns#

mult: float

Multiplicity of the promolecule.

nelec()#

Compute the electron number of the promolecule.

Returns#

nelec: float

Number of electrons in the promolecule.

nspin(p=1)#

Compute the spin number of the promolecule.

Parameters#

p: int, default=1 (linear mean)

Type of mean used in the computation.

Returns#

nspin: float

Spin number of the promolecule.

class atomdb.Species(dataset, fields, spinpol=1)#

Bases: object

Properties of atomic and ionic species.

property at_radius#

Atomic radius.

Returns#

at_radiusdict, float

The return dictionary contains atomic radii types wc and cr. For references corresponding to each type check theochem/AtomDB

property atmass#

Atomic mass in atomic units.

Returns#

atmassdict

Two options are available: the isotopically averaged mass ‘stb’, and the mass of the most common isotope ‘nist’. For references corresponding to each type check theochem/AtomDB

property atnum#

Atomic number.

Returns#

atnum : int

property charge#

Charge

\[Q = Z - N\]

Where Q is the charge, Z the atomic number and N the total number of electrons stored in SpeciesData object.

Returns#

charge : int

property cov_radius#

Covalent radius (derived from crystallographic data).

Returns#

cov_radiusdict, float

The return dictionary contains crystallographic covalent radii types cordero, bragg and slater. For references corresponding to each type check theochem/AtomDB

d_dens_func(spin='t', index=None, log=False)#

Return a cubic spline of the first derivative of the electronic density.

The derivarive of the density as a function of the distance to the atomic center (a set of points along a 1-D grid) is modeled by a cubic spline. The property can be computed for the alpha, beta, alpha + beta, and alpha - beta components of the electron density.

Parameters#

spinstr, optional

Type of occupied spin orbitals which can be either “a” (for alpha), “b” (for beta), “ab” (for alpha + beta), and, “m” (for alpha - beta), by default ‘ab’

indexsequence of int, optional

Sequence of integers representing the spin orbitals which are indexed from 1 to the number basis functions. If None, all orbitals of the given spin(s) are included

logbool, optional

Whether the logarithm of the density property is used for interpolation

Returns#

Callable[[np.ndarray(N,), int] -> np.ndarray(N,)]

a callable function evaluating the derivative of the density given a set of radial points (1-D array).

property dataset#

Name of the type of dataset.

Returns#

dataset : string

dd_dens_func(spin='t', index=None, log=False)#

Return a cubic spline of the electronic density Laplacian.

Parameters#

spinstr, default=”t”

Type of occupied spin orbitals. Can be either “t” (for alpha + beta), “a” (for alpha), “b” (for beta), or “m” (for alpha - beta).

indexsequence of int, optional

Sequence of integers representing the spin orbitals. These are indexed from 0 to the number of basis functions. By default, all orbitals of the given spin(s) are included.

logbool, default=False

Whether the logarithm of the density is used for interpolation.

Returns#

DensitySpline

A DensitySpline instance for the density and its derivatives. Given a set of radial points, it can evaluate densities and derivatives up to order 2.

dens_func(spin='t', index=None, log=False)#

Return a cubic spline of the electronic density.

Parameters#

spinstr, default=”t”

Type of occupied spin orbitals. Can be either “t” (for alpha + beta), “a” (for alpha), “b” (for beta), or “m” (for alpha - beta).

indexsequence of int, optional

Sequence of integers representing the spin orbitals. These are indexed from 0 to the number of basis functions. By default, all orbitals of the given spin(s) are included.

logbool, default=False

Whether the logarithm of the density is used for interpolation.

Returns#

DensitySpline

A DensitySpline instance for the density and its derivatives. Given a set of radial points, it can evaluate densities and derivatives up to order 2.

property dispersion_c6#

Isolated atom C6 dispersion coefficients.

Returns#

dispersion_c6dict, float

The return dictionary contains isolated atom C6 dispersion coefficients types chu. For references corresponding to each type check theochem/AtomDB

property elem#

Element symbol.

Returns#

elem : string

property energy#

Energy.

Returns#

energy : float

property eta#

Chemical hardness.

Returns#

eta : float

get_docstring()#

Docstring of the species’ dataset.

property ip#

Ionization potential.

Returns#

ip : float

ked_func(spin='t', index=None, log=False)#

Return a cubic spline of the kinetic energy density.

Parameters#

spinstr, default=”t”

Type of occupied spin orbitals. Can be either “t” (for alpha + beta), “a” (for alpha), “b” (for beta), or “m” (for alpha - beta).

indexsequence of int, optional

Sequence of integers representing the spin orbitals. These are indexed from 0 to the number of basis functions. By default, all orbitals of the given spin(s) are included.

logbool, default=False

Whether the logarithm of the density is used for interpolation.

Returns#

DensitySpline

A DensitySpline instance for the density and its derivatives. Given a set of radial points, it can evaluate densities and derivatives up to order 2.

property mu#

Chemical potential.

Returns#

mu : float

property mult#

Multiplicity

\[M = \left|N_S\right| + 1\]

Where \(\left|N_S\right|\) is the spin number.

Returns#

mult : int

property nelec#

Number of electrons.

Returns#

nelec : int

property nexc#

Excitation number.

Returns#

nexc : int

property nspin#

Spin number

\[N_S = N_α - N_β\]
Where \(N_S\) is the spin number and \(N_α\) and \(N_β\) number of alpha and

beta electrons.

Returns#

nspin : int

property obasis_name#

Basis name.

Returns#

obasis_name : string

property polarizability#

Isolated atom dipole polarizability.

Returns#

polarizabilitydict, float

The return dictionary contains isolated atom dipole polarizability types crc and chu. For references corresponding to each type check theochem/AtomDB

property spinpol#

Spin polarization direction (±1).

Returns#

spinpol : int

to_dict()#

Return the dictionary representation of the Species instance.

to_json()#

Return the JSON string representation of the Species instance.

property vdw_radius#

Van der Waals radii.

Returns#

vdw_radiusdict, float

The return dictionary contains van der wals radii types bondi, truhlar, rt, batsanov, dreiding, uff and mm3. For references corresponding to each type check theochem/AtomDB

atomdb.compile(elem, charge, mult, nexc=0, dataset='slater', datapath='/home/runner/.local/lib/python3.10/site-packages/atomdb/datasets')#

Compile an atomic or ionic species into the AtomDB database.

Parameters#

elemstr

Element symbol.

chargeint

Charge.

multint

Multiplicity.

nexcint, optional

Excitation level, by default 0.

datasetstr, optional

Dataset name, by default DEFAULT_DATASET.

datapathstr, optional

Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.

atomdb.dump(*species, datapath='/home/runner/.local/lib/python3.10/site-packages/atomdb/datasets')#

Dump the Species instance(s) to a MessagePack file in the database.

Parameters#

species: Iterable

Iterables of objects of class Species

datapathstr, optional

Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.

atomdb.element_name(elem)#

Return the element name from a string or int.

Parameters#

elem: (str | int)

Symbol, name, or number of an element.

Returns#

namestr

Element name.

atomdb.element_number(elem)#

Return the element number from a string or int.

Parameters#

elem: (str | int)

Symbol, name, or number of an element.

Returns#

atnumint

Atomic number.

atomdb.element_symbol(elem)#

Return the element symbol from a string or int.

Parameters#

elem: (str | int)

Symbol, name, or number of an element.

Returns#

symbolstr

Element symbol.

atomdb.load(elem, charge, mult, nexc=0, dataset='slater', datapath='/home/runner/.local/lib/python3.10/site-packages/atomdb/datasets', remotepath='https://raw.githubusercontent.com/theochem/AtomDBdata/main/')#

Load one or many atomic or ionic species from the AtomDB database.

Parameters#

elemstr

Element symbol.

chargeint

Charge.

multint

Multiplicity.

nexcint, optional

Excitation level, by default 0.

datasetstr, optional

Dataset name, by default DEFAULT_DATASET.

datapathstr, optional

Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.

remotepathstr, optional

Remote URL for AtomDB datasets, by default DEFAULT_REMOTE variable value

Returns#

Object of class Species

atomdb.raw_datafile(suffix, elem, charge, mult, nexc=0, dataset='slater', datapath='/home/runner/.local/lib/python3.10/site-packages/atomdb/datasets', remotepath='https://raw.githubusercontent.com/theochem/AtomDBdata/main/')#

Returns the local path to the raw data file of a species

This function retrieves the raw data file of a species from the AtomDB cache if present. If the file is not found, it is downloaded from the remote URL.

Parameters#

suffixstr

File extension of the raw data file.

elemstr

Element symbol.

chargeint

Charge.

multint

Multiplicity.

nexcint, optional

Excitation level, by default 0.

datasetstr, optional

Dataset name, by default DEFAULT_DATASET.

datapathstr, optional

Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.

remotepathstr, optional

Remote URL for AtomDB datasets, by default DEFAULT_REMOTE variable value.

Returns#

str

Path to the raw data file.

Subpackages#

Submodules#

atomdb.periodic module#

class atomdb.periodic.Element(elem)#

Bases: object

Element properties.

Attributes#

atnumint

Atomic number of the element.

symbolstr

Symbol of the element.

namestr

Name of the element.

property at_radius#

atomic radius of the element.

Returns#

at_radius : Dict[float]

Notes#

This property is a dictionary with the following keys:
property atnum#
property c6#

Isolated atom C6 dispersion coefficients of the element.

Returns#

c6 : Dict[float]

Notes#

This property is a dictionary with the following keys:
property cov_radius#

Covalent radius of the element.

Returns#

cov_radius : Dict[float]

Notes#

This property is a dictionary with the following keys:
  • “cordero”
    • Source

      B. Cordero, V. Gomez, A. E. Platero-Prats, M. Reves, J. Echeverria,E. Cremades, F. Barragan, and S. Alvarez, Dalton Trans. pp. 2832–2838 (2008)

    • Units

      angstrom

    • URL

      http://dx.doi.org/10.1039/b801115j

    • Notes

      For carbon the number is a weighted average over the data for different hybridizations. For Mn, Fe, and Co, the number is a weighted average over the data for different spins (high spin and low spin)

  • “bragg”
  • “slater”
property eneg#

Electronegativity of the element.

Returns#

eneg : Dict[float]

Notes#

This property is a dictionary with the following keys:
property group#

Group of the element.

Returns#

group : int

property mass#

Atomic mass of the element.

Returns#

mass : Dict[float]

Notes#

This property is a dictionary with the following keys:
property mult#

Multiplicity of the element.

Returns#

mult : int

property name#

Name of the element.

Returns#

name : str

property period#

Period of the element.

Returns#

period : int

property pold#

Isolated atom dipole polarizability of the element.

Returns#

pold : Dict[float]

Notes#

This property is a dictionary with the following keys:
  • “crc”
    • Source

      CRC Handbook of Chemistry and Physics (CRC, Boca Raton, FL, 2003).

    • Units

      angstrom**3

    • Notes

      If multiple values were present in the CRC book, the value used in Erin’s postg code is taken

  • “chu”
property symbol#

Symbol of the element.

Returns#

symbol : str

property vdw_radius#

van der Waals radius of the element.

Returns#

vdw_radius : Dict[float]

Notes#

This property is a dictionary with the following keys:
atomdb.periodic.element_name(elem)#

Return the element name from a string or int.

Parameters#

elem: (str | int)

Symbol, name, or number of an element.

Returns#

namestr

Element name.

atomdb.periodic.element_number(elem)#

Return the element number from a string or int.

Parameters#

elem: (str | int)

Symbol, name, or number of an element.

Returns#

atnumint

Atomic number.

atomdb.periodic.element_symbol(elem)#

Return the element symbol from a string or int.

Parameters#

elem: (str | int)

Symbol, name, or number of an element.

Returns#

symbolstr

Element symbol.

atomdb.promolecule module#

AtomDB promolecule submodule.

class atomdb.promolecule.Promolecule#

Bases: object

Promolecule class.

A promolecule is an approximation of a molecule constructed from a linear combination of atomic and/or ionic species. Properties of this promolecule can be computed from those of the atomic and/or ionic species, depending on whether the property is an extensive one or an intensive one.

For an extensive property, the formula is a linear combination:

\[\text{prop.}_{\text{mol;extensive}} = \sum_{A=1}^{N_{\text{atoms}}} c_A \text{prop.}_A\]

For an intensive property, the formula is a mean:

\[\text{prop.}_{\text{mol;intensive}} = {\left\langle \left\{ \text{prop.}_A \right\}_{A=1}^{N_{\text{atoms}}} \right\rangle}_p\]

where the parameter p defines the type of mean used (1 = linear, 2 = geometric, etc.).

Attributes#

atoms: list of Species

Species instances out of which the promolecule is composed.

coords: np.ndarray((N, 3), dtype=float)

Coordinates of each species component of the promolecule.

coeffs: np.ndarray((N,), dtype=float)

Coefficients of each species component of the promolecule.

charge()#

Compute the charge of the promolecule.

Returns#

charge: float

Charge of the promolecule.

density(points, spin='t', log=False)#

Compute the electron density of the promolecule at the desired points.

Parameters#

points: np.ndarray((N, 3), dtype=float)

Points at which to compute the density.

spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’

Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.

log: bool, default=False

Whether to compute the log of the density instead of the density. May be slightly more accurate.

Returns#

density: np.ndarray((N,), dtype=float)

Density evaluated at N points.

energy()#

Compute the energy of the promolecule.

Returns#

energy: float

Energy of the promolecule.

eta(p=1)#

Compute the chemical hardness of the promolecule.

Parameters#

p: int, default=1 (linear mean)

Type of mean used in the computation.

Returns#

eta: float

Chemical hardness of the promolecule.

gradient(points, spin='t', log=False)#

Compute the electron density gradient of the promolecule at the desired points.

Promolecular gradient:

\[\nabla \rho_{\text{mol}}^{(0)} (\mathbf{R}) = \sum_{A=1}^{N_{\text{atoms}}}\ c_A \nabla \rho_A^{(0)}(\mathbf{R})\]

where

\(N_{\text{atoms}}\) is the number of atoms in the molecule,

\(c_A\) are the coefficients of the species,

\(R\) are points in 3D cartesian coordinates,

\(\nabla \rho_A^{(0)}(\mathbf{R})\) is the gradient of the species.

Parameters#

points: np.ndarray((N, 3), dtype=float)

Points at which to compute the electron density gradient.

spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’

Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.

log: bool, default=False

Whether to compute the log of the density instead of the density. May be slightly more accurate.

Returns#

gradient: np.ndarray((N, 3), dtype=float)

Electron density gradient of the promolecule evaluated at N points.

hessian(points, spin='t', log=False)#

Compute the promolecule’s electron density Hessian at the desired points.

Parameters#

points: np.ndarray((N, 3), dtype=float)

Points at which to compute the electron density Hessian.

spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’

Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.

log: bool, default=False

Whether to compute the log of the density instead of the density. May be slightly more accurate.

Returns#

hess: np.ndarray((N, 3, 3), dtype=float)

Electron density Hessian of the promolecule evaluated at N points.

ip(p=1)#

Compute the ionization potential of the promolecule.

Parameters#

p: int, default=1 (linear mean)

Type of mean used in the computation.

Returns#

ip: float

Ionization potential of the promolecule.

ked(points, spin='t', log=False)#

Compute the kinetic energy density of the promolecule at the desired points.

points: np.ndarray((N, 3), dtype=float)

Points at which to compute the kinetic energy density.

spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’

Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.

log: bool, default=False

Whether to compute the log of the density instead of the density. May be slightly more accurate.

Returns#

ked: np.ndarray((N,), dtype=float)

Kinetic energy density evaluated at N points.

laplacian(points, spin='t', log=False)#

Compute the promolecule’s electron density Laplacian at the desired points.

Parameters#

points: np.ndarray((N, 3), dtype=float)

Points at which to compute the electron density Laplacian.

spin: (‘t’ | ‘a’ | ‘b’ | ‘m’), default=’t’

Type of density to compute; either total, alpha-spin, beta-spin, or magnetization density.

log: bool, default=False

Whether to compute the log of the density instead of the density. May be slightly more accurate.

Returns#

laplacian: np.ndarray((N,), dtype=float)

Electron density Laplacian of the promolecule evaluated at N points.

mass()#

Compute the mass of the promolecule.

Returns#

mass: float

Mass of the promolecule.

mu(p=1)#

Compute the chemical potential of the promolecule.

Parameters#

p: int, default=1 (linear mean)

Type of mean used in the computation.

Returns#

mu: float

Chemical potential of the promolecule.

mult(p=1)#

Compute the multiplicity of the promolecule.

Parameters#

p: int, default=1 (linear mean)

Type of mean used in the computation.

Returns#

mult: float

Multiplicity of the promolecule.

nelec()#

Compute the electron number of the promolecule.

Returns#

nelec: float

Number of electrons in the promolecule.

nspin(p=1)#

Compute the spin number of the promolecule.

Parameters#

p: int, default=1 (linear mean)

Type of mean used in the computation.

Returns#

nspin: float

Spin number of the promolecule.

atomdb.promolecule.make_promolecule(atnums, coords, charges=None, mults=None, units=None, dataset='slater', datapath='/home/runner/.local/lib/python3.10/site-packages/atomdb/datasets', remotepath='https://raw.githubusercontent.com/theochem/AtomDBdata/main/')#

Construct a Promolecule instance from a set of atoms and their coordinates, charges, and multiplicities.

Parameters#

atnums: list of (str|int)

List of element number for each atom.

coords: list of np.ndarray((3,), dtype=float)

List of coordinates for each atom.

charges: list of (int | float), default=[0, …, 0]

List of charges.

mults: list of (int), default=[1, …, 1]

List of multiplicities for each atom.

units: (‘bohr’ | ‘angstrom’)

Units of coords values. Default is Bohr.

dataset: str, default=DEFAULT_DATASET

Data set from which to load atomic species.

datapath: str, default=DEFAULT_DATAPATH

System path where the desired data set is located.

remotepath: str, default=DEFAULT_REMOTE

Remote path where the desired data set is located.

Returns#

promol: Promolecule

Promolecule instance.

atomdb.species module#

AtomDB, a database of atomic and ionic properties.

class atomdb.species.Species(dataset, fields, spinpol=1)#

Bases: object

Properties of atomic and ionic species.

property at_radius#

Atomic radius.

Returns#

at_radiusdict, float

The return dictionary contains atomic radii types wc and cr. For references corresponding to each type check theochem/AtomDB

property atmass#

Atomic mass in atomic units.

Returns#

atmassdict

Two options are available: the isotopically averaged mass ‘stb’, and the mass of the most common isotope ‘nist’. For references corresponding to each type check theochem/AtomDB

property atnum#

Atomic number.

Returns#

atnum : int

property charge#

Charge

\[Q = Z - N\]

Where Q is the charge, Z the atomic number and N the total number of electrons stored in SpeciesData object.

Returns#

charge : int

property cov_radius#

Covalent radius (derived from crystallographic data).

Returns#

cov_radiusdict, float

The return dictionary contains crystallographic covalent radii types cordero, bragg and slater. For references corresponding to each type check theochem/AtomDB

d_dens_func(spin='t', index=None, log=False)#

Return a cubic spline of the first derivative of the electronic density.

The derivarive of the density as a function of the distance to the atomic center (a set of points along a 1-D grid) is modeled by a cubic spline. The property can be computed for the alpha, beta, alpha + beta, and alpha - beta components of the electron density.

Parameters#

spinstr, optional

Type of occupied spin orbitals which can be either “a” (for alpha), “b” (for beta), “ab” (for alpha + beta), and, “m” (for alpha - beta), by default ‘ab’

indexsequence of int, optional

Sequence of integers representing the spin orbitals which are indexed from 1 to the number basis functions. If None, all orbitals of the given spin(s) are included

logbool, optional

Whether the logarithm of the density property is used for interpolation

Returns#

Callable[[np.ndarray(N,), int] -> np.ndarray(N,)]

a callable function evaluating the derivative of the density given a set of radial points (1-D array).

property dataset#

Name of the type of dataset.

Returns#

dataset : string

dd_dens_func(spin='t', index=None, log=False)#

Return a cubic spline of the electronic density Laplacian.

Parameters#

spinstr, default=”t”

Type of occupied spin orbitals. Can be either “t” (for alpha + beta), “a” (for alpha), “b” (for beta), or “m” (for alpha - beta).

indexsequence of int, optional

Sequence of integers representing the spin orbitals. These are indexed from 0 to the number of basis functions. By default, all orbitals of the given spin(s) are included.

logbool, default=False

Whether the logarithm of the density is used for interpolation.

Returns#

DensitySpline

A DensitySpline instance for the density and its derivatives. Given a set of radial points, it can evaluate densities and derivatives up to order 2.

dens_func(spin='t', index=None, log=False)#

Return a cubic spline of the electronic density.

Parameters#

spinstr, default=”t”

Type of occupied spin orbitals. Can be either “t” (for alpha + beta), “a” (for alpha), “b” (for beta), or “m” (for alpha - beta).

indexsequence of int, optional

Sequence of integers representing the spin orbitals. These are indexed from 0 to the number of basis functions. By default, all orbitals of the given spin(s) are included.

logbool, default=False

Whether the logarithm of the density is used for interpolation.

Returns#

DensitySpline

A DensitySpline instance for the density and its derivatives. Given a set of radial points, it can evaluate densities and derivatives up to order 2.

property dispersion_c6#

Isolated atom C6 dispersion coefficients.

Returns#

dispersion_c6dict, float

The return dictionary contains isolated atom C6 dispersion coefficients types chu. For references corresponding to each type check theochem/AtomDB

property elem#

Element symbol.

Returns#

elem : string

property energy#

Energy.

Returns#

energy : float

property eta#

Chemical hardness.

Returns#

eta : float

get_docstring()#

Docstring of the species’ dataset.

property ip#

Ionization potential.

Returns#

ip : float

ked_func(spin='t', index=None, log=False)#

Return a cubic spline of the kinetic energy density.

Parameters#

spinstr, default=”t”

Type of occupied spin orbitals. Can be either “t” (for alpha + beta), “a” (for alpha), “b” (for beta), or “m” (for alpha - beta).

indexsequence of int, optional

Sequence of integers representing the spin orbitals. These are indexed from 0 to the number of basis functions. By default, all orbitals of the given spin(s) are included.

logbool, default=False

Whether the logarithm of the density is used for interpolation.

Returns#

DensitySpline

A DensitySpline instance for the density and its derivatives. Given a set of radial points, it can evaluate densities and derivatives up to order 2.

property mu#

Chemical potential.

Returns#

mu : float

property mult#

Multiplicity

\[M = \left|N_S\right| + 1\]

Where \(\left|N_S\right|\) is the spin number.

Returns#

mult : int

property nelec#

Number of electrons.

Returns#

nelec : int

property nexc#

Excitation number.

Returns#

nexc : int

property nspin#

Spin number

\[N_S = N_α - N_β\]
Where \(N_S\) is the spin number and \(N_α\) and \(N_β\) number of alpha and

beta electrons.

Returns#

nspin : int

property obasis_name#

Basis name.

Returns#

obasis_name : string

property polarizability#

Isolated atom dipole polarizability.

Returns#

polarizabilitydict, float

The return dictionary contains isolated atom dipole polarizability types crc and chu. For references corresponding to each type check theochem/AtomDB

property spinpol#

Spin polarization direction (±1).

Returns#

spinpol : int

to_dict()#

Return the dictionary representation of the Species instance.

to_json()#

Return the JSON string representation of the Species instance.

property vdw_radius#

Van der Waals radii.

Returns#

vdw_radiusdict, float

The return dictionary contains van der wals radii types bondi, truhlar, rt, batsanov, dreiding, uff and mm3. For references corresponding to each type check theochem/AtomDB

atomdb.species.compile(elem, charge, mult, nexc=0, dataset='slater', datapath='/home/runner/.local/lib/python3.10/site-packages/atomdb/datasets')#

Compile an atomic or ionic species into the AtomDB database.

Parameters#

elemstr

Element symbol.

chargeint

Charge.

multint

Multiplicity.

nexcint, optional

Excitation level, by default 0.

datasetstr, optional

Dataset name, by default DEFAULT_DATASET.

datapathstr, optional

Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.

atomdb.species.dump(*species, datapath='/home/runner/.local/lib/python3.10/site-packages/atomdb/datasets')#

Dump the Species instance(s) to a MessagePack file in the database.

Parameters#

species: Iterable

Iterables of objects of class Species

datapathstr, optional

Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.

atomdb.species.load(elem, charge, mult, nexc=0, dataset='slater', datapath='/home/runner/.local/lib/python3.10/site-packages/atomdb/datasets', remotepath='https://raw.githubusercontent.com/theochem/AtomDBdata/main/')#

Load one or many atomic or ionic species from the AtomDB database.

Parameters#

elemstr

Element symbol.

chargeint

Charge.

multint

Multiplicity.

nexcint, optional

Excitation level, by default 0.

datasetstr, optional

Dataset name, by default DEFAULT_DATASET.

datapathstr, optional

Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.

remotepathstr, optional

Remote URL for AtomDB datasets, by default DEFAULT_REMOTE variable value

Returns#

Object of class Species

atomdb.species.raw_datafile(suffix, elem, charge, mult, nexc=0, dataset='slater', datapath='/home/runner/.local/lib/python3.10/site-packages/atomdb/datasets', remotepath='https://raw.githubusercontent.com/theochem/AtomDBdata/main/')#

Returns the local path to the raw data file of a species

This function retrieves the raw data file of a species from the AtomDB cache if present. If the file is not found, it is downloaded from the remote URL.

Parameters#

suffixstr

File extension of the raw data file.

elemstr

Element symbol.

chargeint

Charge.

multint

Multiplicity.

nexcint, optional

Excitation level, by default 0.

datasetstr, optional

Dataset name, by default DEFAULT_DATASET.

datapathstr, optional

Path to the local AtomDB cache, by default DEFAULT_DATAPATH variable value.

remotepathstr, optional

Remote URL for AtomDB datasets, by default DEFAULT_REMOTE variable value.

Returns#

str

Path to the raw data file.

atomdb.utils module#

Constants and utility functions.

atomdb.utils.DEFAULT_DATAPATH = '/home/runner/.local/lib/python3.10/site-packages/atomdb/datasets'#

The path for AtomDB local cache.

atomdb.utils.DEFAULT_DATASET = 'slater'#

Default dataset to query.

atomdb.utils.DEFAULT_REMOTE = 'https://raw.githubusercontent.com/theochem/AtomDBdata/main/'#

Default remote URL for AtomDB datasets.

atomdb.utils.MODULE_DATAPATH = '/home/runner/.local/lib/python3.10/site-packages/atomdb/data'#

The path for AtomDB data files.

atomdb.utils.MULTIPLICITIES = {(1, -2): 2, (1, -1): 1, (1, 0): 2, (2, -2): 1, (2, -1): 2, (2, 0): 1, (2, 1): 2, (3, -2): 2, (3, -1): 1, (3, 0): 2, (3, 1): 1, (3, 2): 2, (4, -2): 3, (4, -1): 2, (4, 0): 1, (4, 1): 2, (4, 2): 1, (4, 3): 2, (5, -2): 4, (5, -1): 3, (5, 0): 2, (5, 1): 1, (5, 2): 2, (5, 3): 1, (5, 4): 2, (6, -2): 3, (6, -1): 4, (6, 0): 3, (6, 1): 2, (6, 2): 1, (6, 3): 2, (6, 4): 1, (6, 5): 2, (7, -2): 2, (7, -1): 3, (7, 0): 4, (7, 1): 3, (7, 2): 2, (7, 3): 1, (7, 4): 2, (7, 5): 1, (7, 6): 2, (8, -2): 1, (8, -1): 2, (8, 0): 3, (8, 1): 4, (8, 2): 3, (8, 3): 2, (8, 4): 1, (8, 5): 2, (8, 6): 1, (8, 7): 2, (9, -2): 2, (9, -1): 1, (9, 0): 2, (9, 1): 3, (9, 2): 4, (9, 3): 3, (9, 4): 2, (9, 5): 1, (9, 6): 2, (9, 7): 1, (9, 8): 2, (10, -2): 1, (10, -1): 2, (10, 0): 1, (10, 1): 2, (10, 2): 3, (10, 3): 4, (10, 4): 3, (10, 5): 2, (10, 6): 1, (10, 7): 2, (10, 8): 1, (10, 9): 2, (11, -2): 2, (11, -1): 1, (11, 0): 2, (11, 1): 1, (11, 2): 2, (11, 3): 3, (11, 4): 4, (11, 5): 3, (11, 6): 2, (11, 7): 1, (11, 8): 2, (11, 9): 1, (11, 10): 2, (12, -2): 3, (12, -1): 2, (12, 0): 1, (12, 1): 2, (12, 2): 1, (12, 3): 2, (12, 4): 3, (12, 5): 4, (12, 6): 3, (12, 7): 2, (12, 8): 1, (12, 9): 2, (12, 10): 1, (12, 11): 2, (13, -2): 4, (13, -1): 3, (13, 0): 2, (13, 1): 1, (13, 2): 2, (13, 3): 1, (13, 4): 2, (13, 5): 3, (13, 6): 4, (13, 7): 3, (13, 8): 2, (13, 9): 1, (13, 10): 2, (13, 11): 1, (13, 12): 2, (14, -2): 3, (14, -1): 4, (14, 0): 3, (14, 1): 2, (14, 2): 1, (14, 3): 2, (14, 4): 1, (14, 5): 2, (14, 6): 3, (14, 7): 4, (14, 8): 3, (14, 9): 2, (14, 10): 1, (14, 11): 2, (14, 12): 1, (14, 13): 2, (15, -2): 2, (15, -1): 3, (15, 0): 4, (15, 1): 3, (15, 2): 2, (15, 3): 1, (15, 4): 2, (15, 5): 1, (15, 6): 2, (15, 7): 3, (15, 8): 4, (15, 9): 3, (15, 10): 2, (15, 11): 1, (15, 12): 2, (15, 13): 1, (15, 14): 2, (16, -2): 1, (16, -1): 2, (16, 0): 3, (16, 1): 4, (16, 2): 3, (16, 3): 2, (16, 4): 1, (16, 5): 2, (16, 6): 1, (16, 7): 2, (16, 8): 3, (16, 9): 4, (16, 10): 3, (16, 11): 2, (16, 12): 1, (16, 13): 2, (16, 14): 1, (16, 15): 2, (17, -2): 2, (17, -1): 1, (17, 0): 2, (17, 1): 3, (17, 2): 4, (17, 3): 3, (17, 4): 2, (17, 5): 1, (17, 6): 2, (17, 7): 1, (17, 8): 2, (17, 9): 3, (17, 10): 4, (17, 11): 3, (17, 12): 2, (17, 13): 1, (17, 14): 2, (17, 15): 1, (17, 16): 2, (18, -2): 1, (18, -1): 2, (18, 0): 1, (18, 1): 2, (18, 2): 3, (18, 3): 4, (18, 4): 3, (18, 5): 2, (18, 6): 1, (18, 7): 2, (18, 8): 1, (18, 9): 2, (18, 10): 3, (18, 11): 4, (18, 12): 3, (18, 13): 2, (18, 14): 1, (18, 15): 2, (18, 16): 1, (18, 17): 2, (19, -2): 2, (19, -1): 1, (19, 0): 2, (19, 1): 1, (19, 2): 2, (19, 3): 3, (19, 4): 4, (19, 5): 3, (19, 6): 2, (19, 7): 1, (19, 8): 2, (19, 9): 1, (19, 10): 2, (19, 11): 3, (19, 12): 4, (19, 13): 3, (19, 14): 2, (19, 15): 1, (19, 16): 2, (19, 17): 1, (19, 18): 2, (20, -2): 3, (20, -1): 2, (20, 0): 1, (20, 1): 2, (20, 2): 1, (20, 3): 2, (20, 4): 3, (20, 5): 4, (20, 6): 3, (20, 7): 2, (20, 8): 1, (20, 9): 2, (20, 10): 1, (20, 11): 2, (20, 12): 3, (20, 13): 4, (20, 14): 3, (20, 15): 2, (20, 16): 1, (20, 17): 2, (20, 18): 1, (20, 19): 2, (21, -2): 4, (21, -1): 3, (21, 0): 2, (21, 1): 3, (21, 2): 2, (21, 3): 1, (21, 4): 2, (21, 5): 3, (21, 6): 4, (21, 7): 3, (21, 8): 2, (21, 9): 1, (21, 10): 2, (21, 11): 1, (21, 12): 2, (21, 13): 3, (21, 14): 4, (21, 15): 3, (21, 16): 2, (21, 17): 1, (21, 18): 2, (21, 19): 1, (21, 20): 2, (22, -2): 7, (22, -1): 4, (22, 0): 3, (22, 1): 4, (22, 2): 3, (22, 3): 2, (22, 4): 1, (22, 5): 2, (22, 6): 3, (22, 7): 4, (22, 8): 3, (22, 9): 2, (22, 10): 1, (22, 11): 2, (22, 12): 1, (22, 13): 2, (22, 14): 3, (22, 15): 4, (22, 16): 3, (22, 17): 2, (22, 18): 1, (22, 19): 2, (22, 20): 1, (22, 21): 2, (23, -2): 6, (23, -1): 7, (23, 0): 4, (23, 1): 5, (23, 2): 4, (23, 3): 3, (23, 4): 2, (23, 5): 1, (23, 6): 2, (23, 7): 3, (23, 8): 4, (23, 9): 3, (23, 10): 2, (23, 11): 1, (23, 12): 2, (23, 13): 1, (23, 14): 2, (23, 15): 3, (23, 16): 4, (23, 17): 3, (23, 18): 2, (23, 19): 1, (23, 20): 2, (23, 21): 1, (23, 22): 2, (24, -2): 5, (24, -1): 6, (24, 0): 7, (24, 1): 6, (24, 2): 5, (24, 3): 4, (24, 4): 3, (24, 5): 2, (24, 6): 1, (24, 7): 2, (24, 8): 3, (24, 9): 4, (24, 10): 3, (24, 11): 2, (24, 12): 1, (24, 13): 2, (24, 14): 1, (24, 15): 2, (24, 16): 3, (24, 17): 4, (24, 18): 3, (24, 19): 2, (24, 20): 1, (24, 21): 2, (24, 22): 1, (24, 23): 2, (25, -2): 4, (25, -1): 5, (25, 0): 6, (25, 1): 7, (25, 2): 6, (25, 3): 5, (25, 4): 4, (25, 5): 3, (25, 6): 2, (25, 7): 1, (25, 8): 2, (25, 9): 3, (25, 10): 4, (25, 11): 3, (25, 12): 2, (25, 13): 1, (25, 14): 2, (25, 15): 1, (25, 16): 2, (25, 17): 3, (25, 18): 4, (25, 19): 3, (25, 20): 2, (25, 21): 1, (25, 22): 2, (25, 23): 1, (25, 24): 2, (26, -2): 3, (26, -1): 4, (26, 0): 5, (26, 1): 6, (26, 2): 5, (26, 3): 6, (26, 4): 5, (26, 5): 4, (26, 6): 3, (26, 7): 2, (26, 8): 1, (26, 9): 2, (26, 10): 3, (26, 11): 4, (26, 12): 3, (26, 13): 2, (26, 14): 1, (26, 15): 2, (26, 16): 1, (26, 17): 2, (26, 18): 3, (26, 19): 4, (26, 20): 3, (26, 21): 2, (26, 22): 1, (26, 23): 2, (26, 24): 1, (26, 25): 2, (27, -2): 2, (27, -1): 3, (27, 0): 4, (27, 1): 3, (27, 2): 4, (27, 3): 5, (27, 4): 6, (27, 5): 5, (27, 6): 4, (27, 7): 3, (27, 8): 2, (27, 9): 1, (27, 10): 2, (27, 11): 3, (27, 12): 4, (27, 13): 3, (27, 14): 2, (27, 15): 1, (27, 16): 2, (27, 17): 1, (27, 18): 2, (27, 19): 3, (27, 20): 4, (27, 21): 3, (27, 22): 2, (27, 23): 1, (27, 24): 2, (27, 25): 1, (27, 26): 2, (28, -2): 1, (28, -1): 2, (28, 0): 3, (28, 1): 2, (28, 2): 3, (28, 3): 4, (28, 4): 5, (28, 5): 6, (28, 6): 5, (28, 7): 4, (28, 8): 3, (28, 9): 2, (28, 10): 1, (28, 11): 2, (28, 12): 3, (28, 13): 4, (28, 14): 3, (28, 15): 2, (28, 16): 1, (28, 17): 2, (28, 18): 1, (28, 19): 2, (28, 20): 3, (28, 21): 4, (28, 22): 3, (28, 23): 2, (28, 24): 1, (28, 25): 2, (28, 26): 1, (28, 27): 2, (29, -2): 2, (29, -1): 1, (29, 0): 2, (29, 1): 1, (29, 2): 2, (29, 3): 3, (29, 4): 4, (29, 5): 5, (29, 6): 6, (29, 7): 5, (29, 8): 4, (29, 9): 3, (29, 10): 2, (29, 11): 1, (29, 12): 2, (29, 13): 3, (29, 14): 4, (29, 15): 3, (29, 16): 2, (29, 17): 1, (29, 18): 2, (29, 19): 1, (29, 20): 2, (29, 21): 3, (29, 22): 4, (29, 23): 3, (29, 24): 2, (29, 25): 1, (29, 26): 2, (29, 27): 1, (29, 28): 2, (30, -2): 3, (30, -1): 2, (30, 0): 1, (30, 1): 2, (30, 2): 1, (30, 3): 2, (30, 4): 3, (30, 5): 4, (30, 6): 5, (30, 7): 6, (30, 8): 5, (30, 9): 4, (30, 10): 3, (30, 11): 2, (30, 12): 1, (30, 13): 2, (30, 14): 3, (30, 15): 4, (30, 16): 3, (30, 17): 2, (30, 18): 1, (30, 19): 2, (30, 20): 1, (30, 21): 2, (30, 22): 3, (30, 23): 4, (30, 24): 3, (30, 25): 2, (30, 26): 1, (30, 27): 2, (30, 28): 1, (30, 29): 2, (31, -2): 4, (31, -1): 3, (31, 0): 2, (31, 1): 1, (31, 2): 2, (31, 3): 1, (31, 4): 2, (31, 5): 3, (31, 6): 4, (31, 7): 5, (31, 8): 6, (31, 9): 5, (31, 10): 4, (31, 11): 3, (31, 12): 2, (31, 13): 1, (31, 14): 2, (31, 15): 3, (31, 16): 4, (31, 17): 3, (31, 18): 2, (31, 19): 1, (31, 20): 2, (31, 21): 1, (31, 22): 2, (31, 23): 3, (31, 24): 4, (31, 25): 3, (31, 26): 2, (31, 27): 1, (31, 28): 2, (31, 29): 1, (31, 30): 2, (32, -2): 3, (32, -1): 4, (32, 0): 3, (32, 1): 2, (32, 2): 1, (32, 3): 2, (32, 4): 1, (32, 5): 2, (32, 6): 3, (32, 7): 4, (32, 8): 5, (32, 9): 6, (32, 10): 5, (32, 11): 4, (32, 12): 3, (32, 13): 2, (32, 14): 1, (32, 15): 2, (32, 16): 3, (32, 17): 4, (32, 18): 3, (32, 19): 2, (32, 20): 1, (32, 21): 2, (32, 22): 1, (32, 23): 2, (32, 24): 3, (32, 25): 4, (32, 26): 3, (32, 27): 2, (32, 28): 1, (32, 29): 2, (32, 30): 1, (32, 31): 2, (33, -2): 2, (33, -1): 3, (33, 0): 4, (33, 1): 3, (33, 2): 2, (33, 3): 1, (33, 4): 2, (33, 5): 1, (33, 6): 2, (33, 7): 3, (33, 8): 4, (33, 9): 5, (33, 10): 6, (33, 11): 5, (33, 12): 4, (33, 13): 3, (33, 14): 2, (33, 15): 1, (33, 16): 2, (33, 17): 3, (33, 18): 4, (33, 19): 3, (33, 20): 2, (33, 21): 1, (33, 22): 2, (33, 23): 1, (33, 24): 2, (33, 25): 3, (33, 26): 4, (33, 27): 3, (33, 28): 2, (33, 29): 1, (33, 30): 2, (33, 31): 1, (33, 32): 2, (34, -2): 1, (34, -1): 2, (34, 0): 3, (34, 1): 4, (34, 2): 3, (34, 3): 2, (34, 4): 1, (34, 5): 2, (34, 6): 1, (34, 7): 2, (34, 8): 3, (34, 9): 4, (34, 10): 5, (34, 11): 6, (34, 12): 5, (34, 13): 4, (34, 14): 3, (34, 15): 2, (34, 16): 1, (34, 17): 2, (34, 18): 3, (34, 19): 4, (34, 20): 3, (34, 21): 2, (34, 22): 1, (34, 23): 2, (34, 24): 1, (34, 25): 2, (34, 26): 3, (34, 27): 4, (34, 28): 3, (34, 29): 2, (34, 30): 1, (34, 31): 2, (34, 32): 1, (34, 33): 2, (35, -2): 2, (35, -1): 1, (35, 0): 2, (35, 1): 3, (35, 2): 4, (35, 3): 3, (35, 4): 2, (35, 5): 1, (35, 6): 2, (35, 7): 1, (35, 8): 2, (35, 9): 3, (35, 10): 4, (35, 11): 5, (35, 12): 6, (35, 13): 5, (35, 14): 4, (35, 15): 3, (35, 16): 2, (35, 17): 1, (35, 18): 2, (35, 19): 3, (35, 20): 4, (35, 21): 3, (35, 22): 2, (35, 23): 1, (35, 24): 2, (35, 25): 1, (35, 26): 2, (35, 27): 3, (35, 28): 4, (35, 29): 3, (35, 30): 2, (35, 31): 1, (35, 32): 2, (35, 33): 1, (35, 34): 2, (36, -2): 1, (36, -1): 2, (36, 0): 1, (36, 1): 2, (36, 2): 3, (36, 3): 4, (36, 4): 3, (36, 5): 2, (36, 6): 1, (36, 7): 2, (36, 8): 1, (36, 9): 2, (36, 10): 3, (36, 11): 4, (36, 12): 5, (36, 13): 6, (36, 14): 5, (36, 15): 4, (36, 16): 3, (36, 17): 2, (36, 18): 1, (36, 19): 2, (36, 20): 3, (36, 21): 4, (36, 22): 3, (36, 23): 2, (36, 24): 1, (36, 25): 2, (36, 26): 1, (36, 27): 2, (36, 28): 3, (36, 29): 4, (36, 30): 3, (36, 31): 2, (36, 32): 1, (36, 33): 2, (36, 34): 1, (36, 35): 2, (37, -2): 2, (37, -1): 1, (37, 0): 2, (37, 1): 1, (37, 2): 2, (37, 3): 3, (37, 4): 4, (37, 5): 3, (37, 6): 2, (37, 7): 1, (37, 8): 2, (37, 9): 1, (37, 10): 2, (37, 11): 3, (37, 12): 4, (37, 13): 5, (37, 14): 6, (37, 15): 5, (37, 16): 4, (37, 17): 3, (37, 18): 2, (37, 19): 1, (37, 20): 2, (37, 21): 3, (37, 22): 4, (37, 23): 3, (37, 24): 2, (37, 25): 1, (37, 26): 2, (37, 27): 1, (37, 28): 2, (37, 29): 3, (37, 30): 4, (37, 31): 3, (37, 32): 2, (37, 33): 1, (37, 34): 2, (37, 35): 1, (37, 36): 2, (38, -2): 3, (38, -1): 2, (38, 0): 1, (38, 1): 2, (38, 2): 1, (38, 3): 2, (38, 4): 3, (38, 5): 4, (38, 6): 3, (38, 7): 2, (38, 8): 1, (38, 9): 2, (38, 10): 1, (38, 11): 2, (38, 12): 3, (38, 13): 4, (38, 14): 5, (38, 15): 6, (38, 16): 5, (38, 17): 4, (38, 18): 3, (38, 19): 2, (38, 20): 1, (38, 21): 2, (38, 22): 3, (38, 23): 4, (38, 24): 3, (38, 25): 2, (38, 26): 1, (38, 27): 2, (38, 28): 1, (38, 29): 2, (38, 30): 3, (38, 31): 4, (38, 32): 3, (38, 33): 2, (38, 34): 1, (38, 35): 2, (38, 36): 1, (38, 37): 2, (39, -2): 6, (39, -1): 3, (39, 0): 2, (39, 1): 1, (39, 2): 2, (39, 3): 1, (39, 4): 2, (39, 5): 3, (39, 6): 4, (39, 7): 3, (39, 8): 2, (39, 9): 1, (39, 10): 2, (39, 11): 1, (39, 12): 2, (39, 13): 3, (39, 14): 4, (39, 15): 5, (39, 16): 6, (39, 17): 5, (39, 18): 4, (39, 19): 3, (39, 20): 2, (39, 21): 1, (39, 22): 2, (39, 23): 3, (39, 24): 4, (39, 25): 3, (39, 26): 2, (39, 27): 1, (39, 28): 2, (39, 29): 1, (39, 30): 2, (39, 31): 3, (39, 33): 3, (39, 34): 2, (39, 35): 1, (39, 36): 2, (39, 37): 1, (39, 38): 2, (40, -2): 7, (40, -1): 6, (40, 0): 3, (40, 1): 4, (40, 2): 3, (40, 3): 2, (40, 4): 1, (40, 5): 2, (40, 6): 3, (40, 7): 4, (40, 8): 3, (40, 9): 2, (40, 10): 1, (40, 11): 2, (40, 12): 1, (40, 13): 2, (40, 14): 3, (40, 15): 4, (40, 16): 5, (40, 17): 6, (40, 18): 5, (40, 19): 4, (40, 20): 3, (40, 21): 2, (40, 22): 1, (40, 23): 2, (40, 24): 3, (40, 25): 4, (40, 26): 3, (40, 27): 2, (40, 28): 1, (40, 29): 2, (40, 30): 1, (40, 31): 2, (40, 32): 3, (40, 34): 3, (40, 35): 2, (40, 36): 1, (40, 37): 2, (40, 38): 1, (40, 39): 2, (41, -2): 6, (41, -1): 7, (41, 0): 6, (41, 1): 5, (41, 2): 4, (41, 3): 3, (41, 4): 2, (41, 5): 1, (41, 6): 2, (41, 7): 3, (41, 8): 4, (41, 9): 3, (41, 10): 2, (41, 11): 1, (41, 12): 2, (41, 13): 1, (41, 14): 2, (41, 15): 3, (41, 16): 4, (41, 17): 5, (41, 18): 6, (41, 19): 5, (41, 20): 4, (41, 21): 3, (41, 22): 2, (41, 23): 1, (41, 24): 2, (41, 25): 3, (41, 26): 4, (41, 27): 3, (41, 28): 2, (41, 29): 1, (41, 30): 2, (41, 31): 1, (41, 32): 2, (41, 33): 3, (41, 35): 3, (41, 36): 2, (41, 37): 1, (41, 38): 2, (41, 39): 1, (41, 40): 2, (42, -2): 5, (42, -1): 6, (42, 0): 7, (42, 1): 6, (42, 2): 5, (42, 3): 4, (42, 4): 3, (42, 5): 2, (42, 6): 1, (42, 7): 2, (42, 8): 3, (42, 9): 4, (42, 10): 3, (42, 11): 2, (42, 12): 1, (42, 13): 2, (42, 14): 1, (42, 15): 2, (42, 16): 3, (42, 17): 4, (42, 18): 5, (42, 19): 6, (42, 20): 5, (42, 21): 4, (42, 22): 3, (42, 23): 2, (42, 24): 1, (42, 25): 2, (42, 26): 3, (42, 27): 4, (42, 28): 3, (42, 29): 2, (42, 30): 1, (42, 31): 2, (42, 32): 1, (42, 33): 2, (42, 34): 3, (42, 36): 3, (42, 37): 2, (42, 38): 1, (42, 39): 2, (42, 40): 1, (42, 41): 2, (43, -2): 4, (43, -1): 5, (43, 0): 6, (43, 1): 7, (43, 2): 6, (43, 3): 5, (43, 4): 4, (43, 5): 3, (43, 6): 2, (43, 7): 1, (43, 8): 2, (43, 9): 3, (43, 10): 4, (43, 11): 3, (43, 12): 2, (43, 13): 1, (43, 14): 2, (43, 15): 1, (43, 16): 2, (43, 17): 3, (43, 18): 4, (43, 19): 5, (43, 20): 6, (43, 21): 5, (43, 22): 4, (43, 23): 3, (43, 24): 2, (43, 25): 1, (43, 26): 2, (43, 27): 3, (43, 28): 4, (43, 29): 3, (43, 30): 2, (43, 31): 1, (43, 32): 2, (43, 33): 1, (43, 34): 2, (43, 35): 3, (43, 37): 3, (43, 38): 2, (43, 39): 1, (43, 40): 2, (43, 41): 1, (43, 42): 2, (44, -2): 1, (44, -1): 4, (44, 0): 5, (44, 1): 4, (44, 2): 5, (44, 3): 6, (44, 4): 5, (44, 5): 4, (44, 6): 3, (44, 7): 2, (44, 8): 1, (44, 9): 2, (44, 10): 3, (44, 11): 4, (44, 12): 3, (44, 13): 2, (44, 14): 1, (44, 15): 2, (44, 16): 1, (44, 17): 2, (44, 18): 3, (44, 19): 4, (44, 20): 5, (44, 21): 6, (44, 22): 5, (44, 23): 4, (44, 24): 3, (44, 25): 2, (44, 26): 1, (44, 27): 2, (44, 28): 3, (44, 29): 4, (44, 30): 3, (44, 31): 2, (44, 32): 1, (44, 33): 2, (44, 34): 1, (44, 35): 2, (44, 36): 3, (44, 38): 3, (44, 39): 2, (44, 40): 1, (44, 41): 2, (44, 42): 1, (44, 43): 2, (45, -2): 2, (45, -1): 1, (45, 0): 4, (45, 1): 3, (45, 2): 4, (45, 3): 5, (45, 4): 6, (45, 5): 5, (45, 6): 4, (45, 7): 3, (45, 8): 2, (45, 9): 1, (45, 10): 2, (45, 11): 3, (45, 12): 4, (45, 13): 3, (45, 14): 2, (45, 15): 1, (45, 16): 2, (45, 17): 1, (45, 18): 2, (45, 19): 3, (45, 20): 4, (45, 21): 5, (45, 22): 6, (45, 23): 5, (45, 24): 4, (45, 25): 3, (45, 26): 2, (45, 27): 1, (45, 28): 2, (45, 29): 3, (45, 30): 4, (45, 31): 3, (45, 32): 2, (45, 33): 1, (45, 34): 2, (45, 35): 1, (45, 36): 2, (45, 37): 3, (45, 39): 3, (45, 40): 2, (45, 41): 1, (45, 42): 2, (45, 43): 1, (45, 44): 2, (46, -2): 1, (46, -1): 2, (46, 0): 1, (46, 1): 2, (46, 2): 3, (46, 3): 4, (46, 4): 5, (46, 5): 6, (46, 6): 5, (46, 7): 4, (46, 8): 3, (46, 9): 2, (46, 10): 1, (46, 11): 2, (46, 12): 3, (46, 13): 4, (46, 14): 3, (46, 15): 2, (46, 16): 1, (46, 17): 2, (46, 18): 1, (46, 19): 2, (46, 20): 3, (46, 21): 4, (46, 22): 5, (46, 23): 6, (46, 24): 5, (46, 25): 4, (46, 26): 3, (46, 27): 2, (46, 28): 1, (46, 29): 2, (46, 30): 3, (46, 31): 4, (46, 32): 3, (46, 33): 2, (46, 34): 1, (46, 35): 2, (46, 36): 1, (46, 37): 2, (46, 38): 3, (46, 40): 3, (46, 41): 2, (46, 42): 1, (46, 43): 2, (46, 44): 1, (46, 45): 2, (47, -2): 2, (47, -1): 1, (47, 0): 2, (47, 1): 1, (47, 2): 2, (47, 3): 3, (47, 4): 4, (47, 5): 5, (47, 6): 6, (47, 7): 5, (47, 8): 4, (47, 9): 3, (47, 10): 2, (47, 11): 1, (47, 12): 2, (47, 13): 3, (47, 14): 4, (47, 15): 3, (47, 16): 2, (47, 17): 1, (47, 18): 2, (47, 19): 1, (47, 20): 2, (47, 21): 3, (47, 22): 4, (47, 23): 5, (47, 24): 6, (47, 25): 5, (47, 26): 4, (47, 27): 3, (47, 28): 2, (47, 29): 1, (47, 30): 2, (47, 31): 3, (47, 32): 4, (47, 33): 3, (47, 34): 2, (47, 35): 1, (47, 36): 2, (47, 37): 1, (47, 38): 2, (47, 39): 3, (47, 41): 3, (47, 42): 2, (47, 43): 1, (47, 44): 2, (47, 45): 1, (47, 46): 2, (48, -2): 3, (48, -1): 2, (48, 0): 1, (48, 1): 2, (48, 2): 1, (48, 3): 2, (48, 4): 3, (48, 5): 4, (48, 6): 5, (48, 7): 6, (48, 8): 5, (48, 9): 4, (48, 10): 3, (48, 11): 2, (48, 12): 1, (48, 13): 2, (48, 14): 3, (48, 15): 4, (48, 16): 3, (48, 17): 2, (48, 18): 1, (48, 19): 2, (48, 20): 1, (48, 21): 2, (48, 22): 3, (48, 23): 4, (48, 24): 5, (48, 25): 6, (48, 26): 5, (48, 27): 4, (48, 28): 3, (48, 29): 2, (48, 30): 1, (48, 31): 2, (48, 32): 3, (48, 33): 4, (48, 34): 3, (48, 35): 2, (48, 36): 1, (48, 37): 2, (48, 38): 1, (48, 39): 2, (48, 40): 3, (48, 42): 3, (48, 43): 2, (48, 44): 1, (48, 45): 2, (48, 46): 1, (48, 47): 2, (49, -2): 4, (49, -1): 3, (49, 0): 2, (49, 1): 1, (49, 2): 2, (49, 3): 1, (49, 4): 2, (49, 5): 3, (49, 6): 4, (49, 7): 5, (49, 8): 6, (49, 9): 5, (49, 10): 4, (49, 11): 3, (49, 12): 2, (49, 13): 1, (49, 14): 2, (49, 15): 3, (49, 16): 4, (49, 17): 3, (49, 18): 2, (49, 19): 1, (49, 20): 2, (49, 21): 1, (49, 22): 2, (49, 23): 3, (49, 24): 4, (49, 25): 5, (49, 26): 6, (49, 27): 5, (49, 28): 4, (49, 29): 3, (49, 30): 2, (49, 31): 1, (49, 32): 2, (49, 33): 3, (49, 34): 4, (49, 35): 3, (49, 36): 2, (49, 37): 1, (49, 38): 2, (49, 39): 1, (49, 40): 2, (49, 41): 3, (49, 43): 3, (49, 44): 2, (49, 45): 1, (49, 46): 2, (49, 47): 1, (49, 48): 2, (50, -2): 3, (50, -1): 4, (50, 0): 3, (50, 1): 2, (50, 2): 1, (50, 3): 2, (50, 4): 1, (50, 5): 2, (50, 6): 3, (50, 7): 4, (50, 8): 5, (50, 9): 6, (50, 10): 5, (50, 11): 4, (50, 12): 3, (50, 13): 2, (50, 14): 1, (50, 15): 2, (50, 16): 3, (50, 17): 4, (50, 18): 3, (50, 19): 2, (50, 20): 1, (50, 21): 2, (50, 22): 1, (50, 23): 2, (50, 24): 3, (50, 25): 4, (50, 26): 5, (50, 27): 6, (50, 28): 5, (50, 29): 4, (50, 30): 3, (50, 31): 2, (50, 32): 1, (50, 33): 2, (50, 34): 3, (50, 35): 4, (50, 36): 3, (50, 37): 2, (50, 38): 1, (50, 39): 2, (50, 40): 1, (50, 41): 2, (50, 42): 3, (50, 44): 3, (50, 45): 2, (50, 46): 1, (50, 47): 2, (50, 48): 1, (50, 49): 2, (51, -2): 2, (51, -1): 3, (51, 0): 4, (51, 1): 3, (51, 2): 2, (51, 3): 1, (51, 4): 2, (51, 5): 1, (51, 6): 2, (51, 7): 3, (51, 8): 4, (51, 9): 5, (51, 10): 6, (51, 11): 5, (51, 12): 4, (51, 13): 3, (51, 14): 2, (51, 15): 1, (51, 16): 2, (51, 17): 3, (51, 18): 4, (51, 19): 3, (51, 20): 2, (51, 21): 1, (51, 22): 2, (51, 23): 1, (51, 24): 2, (51, 25): 3, (51, 26): 4, (51, 27): 5, (51, 28): 6, (51, 29): 5, (51, 30): 4, (51, 31): 3, (51, 32): 2, (51, 33): 1, (51, 34): 2, (51, 35): 3, (51, 36): 4, (51, 37): 3, (51, 38): 2, (51, 39): 1, (51, 40): 2, (51, 41): 1, (51, 42): 2, (51, 43): 3, (51, 45): 3, (51, 46): 2, (51, 47): 1, (51, 48): 2, (51, 49): 1, (51, 50): 2, (52, -2): 1, (52, -1): 2, (52, 0): 3, (52, 1): 4, (52, 2): 3, (52, 3): 2, (52, 4): 1, (52, 5): 2, (52, 6): 1, (52, 7): 2, (52, 8): 3, (52, 9): 4, (52, 10): 5, (52, 11): 6, (52, 12): 5, (52, 13): 4, (52, 14): 3, (52, 15): 2, (52, 16): 1, (52, 17): 2, (52, 18): 3, (52, 19): 4, (52, 20): 3, (52, 21): 2, (52, 22): 1, (52, 23): 2, (52, 24): 1, (52, 25): 2, (52, 26): 3, (52, 27): 4, (52, 28): 5, (52, 29): 6, (52, 30): 5, (52, 31): 4, (52, 32): 3, (52, 33): 2, (52, 34): 1, (52, 35): 2, (52, 36): 3, (52, 37): 4, (52, 38): 3, (52, 39): 2, (52, 40): 1, (52, 41): 2, (52, 42): 1, (52, 43): 2, (52, 44): 3, (52, 46): 3, (52, 47): 2, (52, 48): 1, (52, 49): 2, (52, 50): 1, (52, 51): 2, (53, -2): 2, (53, -1): 1, (53, 0): 2, (53, 1): 3, (53, 2): 4, (53, 3): 3, (53, 4): 2, (53, 5): 1, (53, 6): 2, (53, 7): 1, (53, 8): 2, (53, 9): 3, (53, 10): 4, (53, 11): 5, (53, 12): 6, (53, 13): 5, (53, 14): 4, (53, 15): 3, (53, 16): 2, (53, 17): 1, (53, 18): 2, (53, 19): 3, (53, 20): 4, (53, 21): 3, (53, 22): 2, (53, 23): 1, (53, 24): 2, (53, 25): 1, (53, 26): 2, (53, 27): 3, (53, 28): 4, (53, 29): 5, (53, 30): 6, (53, 31): 5, (53, 32): 4, (53, 33): 3, (53, 34): 2, (53, 35): 1, (53, 36): 2, (53, 37): 3, (53, 38): 4, (53, 39): 3, (53, 40): 2, (53, 41): 1, (53, 42): 2, (53, 43): 1, (53, 44): 2, (53, 45): 3, (53, 47): 3, (53, 48): 2, (53, 49): 1, (53, 50): 2, (53, 51): 1, (53, 52): 2, (54, -2): 1, (54, -1): 2, (54, 0): 1, (54, 1): 2, (54, 2): 3, (54, 3): 4, (54, 4): 3, (54, 5): 2, (54, 6): 1, (54, 7): 2, (54, 8): 1, (54, 9): 2, (54, 10): 3, (54, 11): 4, (54, 12): 5, (54, 13): 6, (54, 14): 5, (54, 15): 4, (54, 16): 3, (54, 17): 2, (54, 18): 1, (54, 19): 2, (54, 20): 3, (54, 21): 4, (54, 22): 3, (54, 23): 2, (54, 24): 1, (54, 25): 2, (54, 26): 1, (54, 27): 2, (54, 29): 4, (54, 30): 5, (54, 31): 6, (54, 32): 5, (54, 33): 4, (54, 34): 3, (54, 35): 2, (54, 36): 1, (54, 37): 2, (54, 38): 3, (54, 39): 4, (54, 40): 3, (54, 41): 2, (54, 42): 1, (54, 43): 2, (54, 44): 1, (54, 45): 2, (54, 46): 3, (54, 48): 3, (54, 49): 2, (54, 50): 1, (54, 51): 2, (54, 52): 1, (54, 53): 2, (55, -2): 2, (55, -1): 1, (55, 0): 2, (55, 1): 1, (55, 2): 2, (55, 3): 3, (55, 4): 4, (55, 5): 3, (55, 6): 2, (55, 7): 1, (55, 8): 2, (55, 9): 1, (55, 10): 2, (55, 11): 3, (55, 12): 4, (55, 13): 5, (55, 14): 6, (55, 15): 5, (55, 16): 4, (55, 17): 3, (55, 18): 2, (55, 19): 1, (55, 20): 2, (55, 21): 3, (55, 22): 4, (55, 23): 3, (55, 24): 2, (55, 25): 1, (55, 26): 2, (55, 27): 1, (55, 28): 2, (55, 30): 4, (55, 31): 5, (55, 32): 6, (55, 33): 5, (55, 34): 4, (55, 35): 3, (55, 36): 2, (55, 37): 1, (55, 38): 2, (55, 39): 3, (55, 40): 4, (55, 41): 3, (55, 42): 2, (55, 43): 1, (55, 44): 2, (55, 45): 1, (55, 46): 2, (55, 49): 3, (55, 50): 2, (55, 51): 1, (55, 52): 2, (55, 53): 1, (55, 54): 2, (56, -2): 1, (56, -1): 2, (56, 0): 1, (56, 1): 2, (56, 2): 1, (56, 3): 2, (56, 4): 3, (56, 5): 4, (56, 6): 3, (56, 7): 2, (56, 8): 1, (56, 9): 2, (56, 10): 1, (56, 11): 2, (56, 12): 3, (56, 13): 4, (56, 14): 5, (56, 15): 6, (56, 16): 5, (56, 17): 4, (56, 18): 3, (56, 19): 2, (56, 20): 1, (56, 21): 2, (56, 22): 3, (56, 23): 4, (56, 24): 3, (56, 25): 2, (56, 26): 1, (56, 27): 2, (56, 28): 1, (56, 29): 2, (56, 31): 4, (56, 32): 5, (56, 33): 6, (56, 34): 5, (56, 35): 4, (56, 36): 3, (56, 37): 2, (56, 38): 1, (56, 39): 2, (56, 40): 3, (56, 41): 4, (56, 42): 3, (56, 43): 2, (56, 44): 1, (56, 45): 2, (56, 46): 1, (56, 47): 2, (56, 50): 3, (56, 51): 2, (56, 52): 1, (56, 53): 2, (56, 54): 1, (56, 55): 2, (57, -2): 4, (57, -1): 1, (57, 0): 2, (57, 1): 3, (57, 2): 2, (57, 3): 1, (57, 4): 2, (57, 5): 3, (57, 6): 4, (57, 7): 3, (57, 8): 2, (57, 9): 1, (57, 10): 2, (57, 11): 1, (57, 12): 2, (57, 13): 3, (57, 14): 4, (57, 15): 5, (57, 16): 6, (57, 17): 5, (57, 18): 4, (57, 19): 3, (57, 20): 2, (57, 21): 1, (57, 22): 2, (57, 23): 3, (57, 24): 4, (57, 25): 3, (57, 26): 2, (57, 27): 1, (57, 28): 2, (57, 29): 1, (57, 30): 2, (57, 31): 3, (57, 32): 4, (57, 35): 5, (57, 36): 4, (57, 37): 3, (57, 38): 2, (57, 39): 1, (57, 40): 2, (57, 41): 3, (57, 42): 2, (57, 43): 3, (57, 44): 2, (57, 45): 1, (57, 46): 2, (57, 47): 1, (57, 48): 2, (57, 49): 3, (57, 51): 3, (57, 52): 2, (57, 53): 1, (57, 54): 2, (57, 55): 1, (57, 56): 2, (58, -2): 5, (58, -1): 4, (58, 0): 1, (58, 1): 4, (58, 2): 3, (58, 3): 2, (58, 4): 1, (58, 5): 2, (58, 6): 3, (58, 7): 4, (58, 8): 3, (58, 9): 2, (58, 10): 1, (58, 11): 2, (58, 12): 1, (58, 13): 2, (58, 14): 3, (58, 15): 4, (58, 16): 5, (58, 17): 6, (58, 18): 5, (58, 19): 4, (58, 20): 3, (58, 21): 2, (58, 22): 1, (58, 23): 2, (58, 24): 3, (58, 25): 4, (58, 26): 3, (58, 27): 2, (58, 28): 1, (58, 29): 2, (58, 30): 1, (58, 31): 2, (58, 32): 3, (58, 33): 4, (58, 36): 5, (58, 37): 4, (58, 38): 3, (58, 39): 2, (58, 40): 1, (58, 41): 2, (58, 42): 3, (58, 43): 2, (58, 44): 3, (58, 45): 2, (58, 46): 1, (58, 47): 2, (58, 48): 1, (58, 49): 2, (58, 50): 3, (58, 52): 3, (58, 53): 2, (58, 54): 1, (58, 55): 2, (58, 56): 1, (58, 57): 2, (59, -2): 6, (59, -1): 5, (59, 0): 4, (59, 2): 4, (59, 3): 3, (59, 4): 2, (59, 5): 1, (59, 10): 2, (59, 11): 1, (59, 12): 2, (59, 13): 1, (59, 14): 2, (59, 15): 3, (59, 16): 4, (59, 17): 5, (59, 18): 6, (59, 19): 5, (59, 20): 4, (59, 21): 3, (59, 22): 2, (59, 23): 1, (59, 24): 2, (59, 25): 3, (59, 26): 4, (59, 27): 3, (59, 28): 2, (59, 29): 1, (59, 30): 2, (59, 31): 1, (59, 32): 2, (59, 33): 3, (59, 34): 4, (59, 37): 5, (59, 38): 4, (59, 39): 3, (59, 40): 2, (59, 41): 1, (59, 42): 2, (59, 43): 3, (59, 44): 2, (59, 45): 3, (59, 46): 2, (59, 47): 1, (59, 48): 2, (59, 49): 1, (59, 50): 2, (59, 51): 3, (59, 53): 3, (59, 54): 2, (59, 55): 1, (59, 56): 2, (59, 57): 1, (59, 58): 2, (60, -2): 7, (60, -1): 6, (60, 0): 5, (60, 1): 6, (60, 2): 5, (60, 3): 4, (60, 4): 3, (60, 11): 2, (60, 12): 1, (60, 13): 2, (60, 14): 1, (60, 15): 2, (60, 16): 3, (60, 17): 4, (60, 18): 5, (60, 19): 6, (60, 20): 5, (60, 21): 4, (60, 22): 3, (60, 23): 2, (60, 24): 1, (60, 25): 2, (60, 26): 3, (60, 27): 4, (60, 28): 3, (60, 29): 2, (60, 30): 1, (60, 31): 2, (60, 32): 1, (60, 33): 2, (60, 34): 3, (60, 35): 4, (60, 38): 5, (60, 39): 4, (60, 40): 3, (60, 41): 2, (60, 42): 1, (60, 43): 2, (60, 44): 3, (60, 45): 2, (60, 46): 3, (60, 47): 2, (60, 48): 1, (60, 49): 2, (60, 50): 1, (60, 51): 2, (60, 52): 3, (60, 54): 3, (60, 55): 2, (60, 56): 1, (60, 57): 2, (60, 58): 1, (60, 59): 2, (61, -2): 8, (61, -1): 7, (61, 0): 6, (61, 1): 7, (61, 2): 6, (61, 3): 5, (61, 4): 4, (61, 12): 2, (61, 13): 1, (61, 14): 2, (61, 15): 1, (61, 16): 2, (61, 17): 3, (61, 18): 4, (61, 19): 5, (61, 20): 6, (61, 21): 5, (61, 22): 4, (61, 23): 3, (61, 24): 2, (61, 25): 1, (61, 26): 2, (61, 27): 3, (61, 28): 4, (61, 29): 3, (61, 30): 2, (61, 31): 1, (61, 32): 2, (61, 33): 1, (61, 34): 2, (61, 35): 3, (61, 36): 4, (61, 39): 5, (61, 40): 4, (61, 41): 3, (61, 42): 2, (61, 43): 1, (61, 44): 2, (61, 45): 3, (61, 46): 2, (61, 47): 3, (61, 48): 2, (61, 49): 1, (61, 50): 2, (61, 51): 1, (61, 52): 2, (61, 53): 3, (61, 55): 3, (61, 56): 2, (61, 57): 1, (61, 58): 2, (61, 59): 1, (61, 60): 2, (62, -2): 9, (62, -1): 8, (62, 0): 7, (62, 1): 8, (62, 2): 7, (62, 3): 6, (62, 4): 5, (62, 5): 4, (62, 13): 2, (62, 15): 2, (62, 16): 1, (62, 17): 2, (62, 18): 3, (62, 19): 4, (62, 20): 5, (62, 21): 6, (62, 22): 5, (62, 23): 4, (62, 24): 3, (62, 25): 2, (62, 26): 1, (62, 27): 2, (62, 28): 3, (62, 29): 4, (62, 30): 3, (62, 31): 2, (62, 32): 1, (62, 33): 2, (62, 34): 1, (62, 35): 2, (62, 36): 3, (62, 37): 4, (62, 40): 5, (62, 41): 4, (62, 42): 3, (62, 43): 2, (62, 44): 1, (62, 45): 2, (62, 46): 3, (62, 47): 2, (62, 48): 3, (62, 49): 2, (62, 50): 1, (62, 51): 2, (62, 52): 1, (62, 53): 2, (62, 54): 3, (62, 56): 3, (62, 57): 2, (62, 58): 1, (62, 59): 2, (62, 60): 1, (62, 61): 2, (63, -2): 6, (63, -1): 9, (63, 0): 8, (63, 1): 9, (63, 2): 8, (63, 3): 7, (63, 4): 6, (63, 15): 3, (63, 16): 2, (63, 17): 1, (63, 18): 2, (63, 19): 3, (63, 20): 4, (63, 21): 5, (63, 22): 6, (63, 23): 5, (63, 24): 4, (63, 25): 3, (63, 26): 2, (63, 27): 1, (63, 28): 2, (63, 29): 3, (63, 30): 4, (63, 31): 3, (63, 32): 2, (63, 33): 1, (63, 34): 2, (63, 35): 1, (63, 36): 2, (63, 37): 3, (63, 38): 4, (63, 41): 5, (63, 42): 4, (63, 43): 3, (63, 44): 2, (63, 45): 1, (63, 46): 2, (63, 47): 3, (63, 48): 2, (63, 49): 3, (63, 50): 2, (63, 51): 1, (63, 52): 2, (63, 53): 1, (63, 54): 2, (63, 55): 3, (63, 57): 3, (63, 58): 2, (63, 59): 1, (63, 60): 2, (63, 61): 1, (63, 62): 2, (64, -2): 5, (64, -1): 6, (64, 0): 9, (64, 1): 10, (64, 2): 9, (64, 3): 8, (64, 4): 7, (64, 13): 6, (64, 15): 4, (64, 16): 3, (64, 17): 2, (64, 18): 1, (64, 19): 2, (64, 20): 3, (64, 21): 4, (64, 22): 5, (64, 23): 6, (64, 24): 5, (64, 25): 4, (64, 26): 3, (64, 27): 2, (64, 28): 1, (64, 29): 2, (64, 30): 3, (64, 31): 4, (64, 32): 3, (64, 33): 2, (64, 34): 1, (64, 35): 2, (64, 36): 1, (64, 37): 2, (64, 38): 3, (64, 39): 4, (64, 42): 5, (64, 43): 4, (64, 44): 3, (64, 45): 2, (64, 46): 1, (64, 47): 2, (64, 48): 3, (64, 49): 2, (64, 50): 3, (64, 51): 2, (64, 52): 1, (64, 53): 2, (64, 54): 1, (64, 55): 2, (64, 56): 3, (64, 58): 3, (64, 59): 2, (64, 60): 1, (64, 61): 2, (64, 62): 1, (64, 63): 2, (65, -2): 4, (65, -1): 5, (65, 0): 6, (65, 2): 6, (65, 3): 7, (65, 4): 8, (65, 14): 6, (65, 15): 5, (65, 16): 4, (65, 17): 3, (65, 18): 2, (65, 19): 1, (65, 20): 2, (65, 21): 3, (65, 22): 4, (65, 23): 5, (65, 24): 6, (65, 25): 5, (65, 26): 4, (65, 27): 3, (65, 28): 2, (65, 29): 1, (65, 30): 2, (65, 31): 3, (65, 32): 4, (65, 33): 3, (65, 34): 2, (65, 35): 1, (65, 36): 2, (65, 37): 1, (65, 38): 2, (65, 39): 3, (65, 40): 4, (65, 43): 5, (65, 44): 4, (65, 45): 3, (65, 46): 2, (65, 47): 1, (65, 48): 2, (65, 49): 3, (65, 50): 2, (65, 51): 3, (65, 52): 2, (65, 53): 1, (65, 54): 2, (65, 55): 1, (65, 56): 2, (65, 57): 3, (65, 59): 3, (65, 60): 2, (65, 61): 1, (65, 62): 2, (65, 63): 1, (65, 64): 2, (66, -2): 3, (66, -1): 4, (66, 0): 5, (66, 2): 5, (66, 3): 6, (66, 4): 7, (66, 15): 6, (66, 16): 5, (66, 17): 4, (66, 18): 3, (66, 19): 2, (66, 20): 1, (66, 21): 2, (66, 22): 3, (66, 23): 4, (66, 24): 5, (66, 25): 6, (66, 26): 5, (66, 27): 4, (66, 28): 3, (66, 29): 2, (66, 30): 1, (66, 31): 2, (66, 32): 3, (66, 33): 4, (66, 34): 3, (66, 35): 2, (66, 36): 1, (66, 37): 2, (66, 38): 1, (66, 39): 2, (66, 40): 3, (66, 41): 4, (66, 44): 5, (66, 45): 4, (66, 46): 3, (66, 47): 2, (66, 48): 1, (66, 49): 2, (66, 50): 3, (66, 51): 2, (66, 52): 3, (66, 53): 2, (66, 54): 1, (66, 55): 2, (66, 56): 1, (66, 57): 2, (66, 58): 3, (66, 60): 3, (66, 61): 2, (66, 62): 1, (66, 63): 2, (66, 64): 1, (66, 65): 2, (67, -2): 2, (67, -1): 3, (67, 0): 4, (67, 2): 4, (67, 3): 5, (67, 4): 6, (67, 16): 6, (67, 17): 5, (67, 18): 4, (67, 19): 3, (67, 20): 2, (67, 21): 1, (67, 22): 2, (67, 23): 3, (67, 24): 4, (67, 25): 5, (67, 26): 6, (67, 27): 5, (67, 28): 4, (67, 29): 3, (67, 30): 2, (67, 31): 1, (67, 32): 2, (67, 33): 3, (67, 34): 4, (67, 35): 3, (67, 36): 2, (67, 37): 1, (67, 38): 2, (67, 39): 1, (67, 40): 2, (67, 41): 3, (67, 42): 4, (67, 45): 5, (67, 46): 4, (67, 47): 3, (67, 48): 2, (67, 49): 1, (67, 50): 2, (67, 51): 3, (67, 52): 2, (67, 53): 3, (67, 54): 2, (67, 55): 1, (67, 56): 2, (67, 57): 1, (67, 58): 2, (67, 59): 3, (67, 61): 3, (67, 62): 2, (67, 63): 1, (67, 64): 2, (67, 65): 1, (67, 66): 2, (68, -2): 1, (68, -1): 2, (68, 0): 3, (68, 2): 3, (68, 3): 4, (68, 4): 5, (68, 15): 8, (68, 16): 7, (68, 17): 6, (68, 18): 5, (68, 19): 4, (68, 20): 3, (68, 21): 2, (68, 22): 1, (68, 23): 2, (68, 24): 3, (68, 25): 4, (68, 26): 5, (68, 27): 6, (68, 28): 5, (68, 29): 4, (68, 30): 3, (68, 31): 2, (68, 32): 1, (68, 33): 2, (68, 34): 3, (68, 35): 4, (68, 36): 3, (68, 37): 2, (68, 38): 1, (68, 39): 2, (68, 40): 1, (68, 41): 2, (68, 42): 3, (68, 43): 4, (68, 46): 5, (68, 47): 4, (68, 48): 3, (68, 49): 2, (68, 50): 1, (68, 51): 2, (68, 52): 3, (68, 53): 2, (68, 54): 3, (68, 55): 2, (68, 56): 1, (68, 57): 2, (68, 58): 1, (68, 59): 2, (68, 60): 3, (68, 62): 3, (68, 63): 2, (68, 64): 1, (68, 65): 2, (68, 66): 1, (68, 67): 2, (69, -2): 2, (69, -1): 1, (69, 0): 2, (69, 2): 2, (69, 3): 3, (69, 4): 4, (69, 5): 5, (69, 10): 4, (69, 14): 6, (69, 15): 7, (69, 16): 8, (69, 17): 7, (69, 18): 6, (69, 19): 5, (69, 20): 4, (69, 21): 3, (69, 22): 2, (69, 23): 1, (69, 24): 2, (69, 25): 3, (69, 26): 4, (69, 27): 5, (69, 28): 6, (69, 29): 5, (69, 30): 4, (69, 31): 3, (69, 32): 2, (69, 33): 1, (69, 34): 2, (69, 35): 3, (69, 36): 4, (69, 37): 3, (69, 38): 2, (69, 39): 1, (69, 40): 2, (69, 41): 1, (69, 42): 2, (69, 43): 3, (69, 44): 4, (69, 47): 5, (69, 48): 4, (69, 49): 3, (69, 50): 2, (69, 51): 1, (69, 52): 2, (69, 53): 3, (69, 54): 2, (69, 55): 3, (69, 56): 2, (69, 57): 1, (69, 58): 2, (69, 59): 1, (69, 60): 2, (69, 61): 3, (69, 63): 3, (69, 64): 2, (69, 65): 1, (69, 66): 2, (69, 67): 1, (69, 68): 2, (70, -2): 3, (70, -1): 2, (70, 0): 1, (70, 1): 2, (70, 2): 1, (70, 3): 2, (70, 4): 3, (70, 10): 3, (70, 11): 4, (70, 15): 6, (70, 16): 7, (70, 17): 8, (70, 18): 7, (70, 19): 6, (70, 20): 5, (70, 21): 4, (70, 22): 3, (70, 23): 2, (70, 24): 1, (70, 25): 2, (70, 26): 3, (70, 27): 4, (70, 28): 5, (70, 29): 6, (70, 30): 5, (70, 31): 4, (70, 32): 3, (70, 33): 2, (70, 34): 1, (70, 35): 2, (70, 36): 3, (70, 37): 4, (70, 38): 3, (70, 39): 2, (70, 40): 1, (70, 41): 2, (70, 42): 1, (70, 43): 2, (70, 44): 3, (70, 45): 4, (70, 48): 5, (70, 49): 4, (70, 50): 3, (70, 51): 2, (70, 52): 1, (70, 53): 2, (70, 54): 3, (70, 55): 2, (70, 56): 3, (70, 57): 2, (70, 58): 1, (70, 59): 2, (70, 60): 1, (70, 61): 2, (70, 62): 3, (70, 64): 3, (70, 65): 2, (70, 66): 1, (70, 67): 2, (70, 68): 1, (70, 69): 2, (71, -2): 4, (71, -1): 3, (71, 0): 2, (71, 1): 1, (71, 2): 2, (71, 3): 1, (71, 4): 2, (71, 5): 3, (71, 8): 4, (71, 11): 3, (71, 12): 4, (71, 16): 6, (71, 17): 7, (71, 18): 8, (71, 19): 7, (71, 20): 6, (71, 21): 5, (71, 22): 4, (71, 23): 3, (71, 24): 2, (71, 25): 1, (71, 26): 2, (71, 27): 3, (71, 28): 4, (71, 29): 5, (71, 30): 6, (71, 31): 5, (71, 32): 4, (71, 33): 3, (71, 34): 2, (71, 35): 1, (71, 36): 2, (71, 37): 3, (71, 38): 4, (71, 39): 3, (71, 40): 2, (71, 41): 1, (71, 42): 2, (71, 43): 1, (71, 44): 2, (71, 45): 3, (71, 46): 4, (71, 49): 5, (71, 50): 4, (71, 51): 3, (71, 52): 2, (71, 53): 1, (71, 54): 2, (71, 55): 3, (71, 56): 2, (71, 57): 3, (71, 58): 2, (71, 59): 1, (71, 60): 2, (71, 61): 1, (71, 62): 2, (71, 63): 3, (71, 65): 3, (71, 66): 2, (71, 67): 1, (71, 68): 2, (71, 69): 1, (71, 70): 2, (72, -2): 5, (72, -1): 4, (72, 0): 3, (72, 1): 2, (72, 2): 3, (72, 3): 2, (72, 4): 1, (72, 5): 2, (72, 9): 4, (72, 12): 3, (72, 13): 4, (72, 14): 5, (72, 17): 6, (72, 18): 7, (72, 19): 8, (72, 20): 7, (72, 21): 6, (72, 22): 5, (72, 23): 4, (72, 24): 3, (72, 25): 2, (72, 26): 1, (72, 27): 2, (72, 28): 3, (72, 29): 4, (72, 30): 5, (72, 31): 6, (72, 32): 5, (72, 33): 4, (72, 34): 3, (72, 35): 2, (72, 36): 1, (72, 37): 2, (72, 38): 3, (72, 39): 4, (72, 40): 3, (72, 41): 2, (72, 42): 1, (72, 43): 2, (72, 44): 1, (72, 45): 2, (72, 46): 3, (72, 47): 4, (72, 50): 5, (72, 51): 4, (72, 52): 3, (72, 53): 2, (72, 54): 1, (72, 55): 2, (72, 56): 3, (72, 57): 2, (72, 58): 3, (72, 59): 2, (72, 60): 1, (72, 61): 2, (72, 62): 1, (72, 63): 2, (72, 64): 3, (72, 66): 3, (72, 67): 2, (72, 68): 1, (72, 69): 2, (72, 70): 1, (72, 71): 2, (73, -2): 6, (73, -1): 5, (73, 0): 4, (73, 1): 5, (73, 2): 4, (73, 3): 3, (73, 4): 2, (73, 5): 1, (73, 6): 2, (73, 10): 4, (73, 12): 2, (73, 13): 3, (73, 14): 4, (73, 15): 5, (73, 18): 6, (73, 19): 7, (73, 20): 8, (73, 21): 7, (73, 22): 6, (73, 23): 5, (73, 24): 4, (73, 25): 3, (73, 26): 2, (73, 27): 1, (73, 28): 2, (73, 29): 3, (73, 30): 4, (73, 31): 5, (73, 32): 6, (73, 33): 5, (73, 34): 4, (73, 35): 3, (73, 36): 2, (73, 37): 1, (73, 38): 2, (73, 39): 3, (73, 40): 4, (73, 41): 3, (73, 42): 2, (73, 43): 1, (73, 44): 2, (73, 45): 1, (73, 46): 2, (73, 47): 3, (73, 48): 4, (73, 51): 5, (73, 52): 4, (73, 53): 3, (73, 54): 2, (73, 55): 1, (73, 56): 2, (73, 57): 3, (73, 58): 2, (73, 59): 3, (73, 60): 2, (73, 61): 1, (73, 62): 2, (73, 63): 1, (73, 64): 2, (73, 65): 3, (73, 67): 3, (73, 68): 2, (73, 69): 1, (73, 70): 2, (73, 71): 1, (73, 72): 2, (74, -2): 5, (74, -1): 6, (74, 0): 5, (74, 1): 6, (74, 2): 5, (74, 3): 4, (74, 4): 3, (74, 5): 2, (74, 6): 1, (74, 7): 2, (74, 8): 3, (74, 9): 2, (74, 10): 3, (74, 11): 4, (74, 12): 1, (74, 13): 2, (74, 14): 3, (74, 15): 4, (74, 16): 5, (74, 17): 4, (74, 18): 5, (74, 19): 6, (74, 20): 7, (74, 21): 8, (74, 22): 7, (74, 23): 6, (74, 24): 5, (74, 25): 4, (74, 26): 3, (74, 27): 2, (74, 28): 1, (74, 29): 2, (74, 30): 3, (74, 31): 4, (74, 32): 5, (74, 33): 4, (74, 34): 3, (74, 35): 4, (74, 36): 3, (74, 37): 2, (74, 38): 1, (74, 39): 2, (74, 40): 3, (74, 41): 2, (74, 42): 3, (74, 43): 2, (74, 44): 1, (74, 45): 2, (74, 46): 1, (74, 47): 2, (74, 55): 2, (74, 56): 1, (74, 57): 2, (74, 58): 3, (74, 59): 2, (74, 60): 3, (74, 61): 2, (74, 62): 1, (74, 63): 2, (74, 64): 1, (74, 65): 2, (74, 66): 3, (74, 67): 2, (74, 68): 3, (74, 69): 2, (74, 70): 1, (74, 71): 2, (74, 72): 1, (74, 73): 2, (75, -2): 4, (75, -1): 5, (75, 0): 6, (75, 1): 7, (75, 2): 6, (75, 3): 5, (75, 4): 4, (75, 5): 3, (75, 6): 2, (75, 7): 1, (75, 8): 2, (75, 9): 3, (75, 10): 2, (75, 11): 3, (75, 12): 4, (75, 14): 2, (75, 15): 3, (75, 16): 4, (75, 18): 4, (75, 19): 5, (75, 20): 6, (75, 21): 7, (75, 22): 8, (75, 23): 7, (75, 24): 6, (75, 25): 5, (75, 26): 4, (75, 27): 3, (75, 28): 2, (75, 29): 1, (75, 30): 2, (75, 31): 3, (75, 32): 4, (75, 33): 5, (75, 35): 5, (75, 36): 4, (75, 37): 3, (75, 38): 2, (75, 39): 1, (75, 40): 2, (75, 41): 3, (75, 43): 3, (75, 44): 2, (75, 45): 1, (75, 46): 2, (75, 47): 1, (75, 48): 2, (75, 49): 3, (75, 50): 4, (75, 53): 5, (75, 54): 4, (75, 55): 3, (75, 56): 2, (75, 57): 1, (75, 58): 2, (75, 59): 3, (75, 60): 2, (75, 61): 3, (75, 62): 2, (75, 63): 1, (75, 64): 2, (75, 65): 1, (75, 66): 2, (75, 67): 3, (75, 69): 3, (75, 70): 2, (75, 71): 1, (75, 72): 2, (75, 73): 1, (75, 74): 2, (76, -2): 3, (76, -1): 4, (76, 0): 5, (76, 1): 6, (76, 2): 7, (76, 3): 6, (76, 4): 5, (76, 5): 4, (76, 6): 3, (76, 7): 2, (76, 8): 1, (76, 9): 2, (76, 10): 3, (76, 11): 2, (76, 12): 3, (76, 13): 4, (76, 15): 2, (76, 16): 3, (76, 19): 4, (76, 20): 5, (76, 21): 6, (76, 22): 7, (76, 23): 8, (76, 24): 7, (76, 25): 6, (76, 26): 5, (76, 27): 4, (76, 28): 3, (76, 29): 2, (76, 30): 1, (76, 31): 2, (76, 32): 3, (76, 33): 4, (76, 34): 5, (76, 36): 5, (76, 37): 4, (76, 38): 3, (76, 39): 2, (76, 40): 1, (76, 41): 2, (76, 42): 3, (76, 44): 3, (76, 45): 2, (76, 46): 1, (76, 47): 2, (76, 48): 1, (76, 49): 2, (76, 50): 3, (76, 51): 4, (76, 54): 5, (76, 55): 4, (76, 56): 3, (76, 57): 2, (76, 58): 1, (76, 59): 2, (76, 60): 3, (76, 61): 2, (76, 62): 3, (76, 63): 2, (76, 64): 1, (76, 65): 2, (76, 66): 1, (76, 67): 2, (76, 68): 3, (76, 70): 3, (76, 71): 2, (76, 72): 1, (76, 73): 2, (76, 74): 1, (76, 75): 2, (77, -2): 2, (77, -1): 3, (77, 0): 4, (77, 1): 5, (77, 2): 4, (77, 3): 5, (77, 4): 6, (77, 5): 5, (77, 6): 4, (77, 7): 3, (77, 8): 2, (77, 9): 1, (77, 10): 2, (77, 11): 3, (77, 12): 2, (77, 13): 3, (77, 14): 2, (77, 15): 1, (77, 16): 2, (77, 17): 3, (77, 20): 4, (77, 21): 5, (77, 22): 6, (77, 23): 7, (77, 24): 8, (77, 25): 7, (77, 26): 6, (77, 27): 5, (77, 28): 4, (77, 29): 3, (77, 30): 2, (77, 31): 1, (77, 32): 2, (77, 33): 3, (77, 34): 4, (77, 35): 5, (77, 37): 5, (77, 38): 4, (77, 39): 3, (77, 40): 2, (77, 41): 1, (77, 42): 2, (77, 43): 3, (77, 45): 3, (77, 46): 2, (77, 47): 1, (77, 48): 2, (77, 49): 1, (77, 50): 2, (77, 51): 3, (77, 52): 4, (77, 55): 5, (77, 56): 4, (77, 57): 3, (77, 58): 2, (77, 59): 1, (77, 60): 2, (77, 61): 3, (77, 62): 2, (77, 63): 3, (77, 64): 2, (77, 65): 1, (77, 66): 2, (77, 67): 1, (77, 68): 2, (77, 69): 3, (77, 71): 3, (77, 72): 2, (77, 73): 1, (77, 74): 2, (77, 75): 1, (77, 76): 2, (78, -2): 1, (78, -1): 2, (78, 0): 3, (78, 1): 2, (78, 2): 3, (78, 3): 4, (78, 4): 5, (78, 5): 6, (78, 6): 5, (78, 7): 4, (78, 8): 3, (78, 9): 2, (78, 10): 1, (78, 11): 2, (78, 12): 3, (78, 13): 2, (78, 14): 3, (78, 15): 2, (78, 16): 1, (78, 17): 2, (78, 18): 3, (78, 21): 4, (78, 22): 5, (78, 23): 6, (78, 24): 7, (78, 25): 8, (78, 26): 7, (78, 27): 6, (78, 28): 5, (78, 29): 4, (78, 30): 3, (78, 31): 2, (78, 32): 1, (78, 33): 2, (78, 34): 3, (78, 35): 4, (78, 36): 5, (78, 38): 5, (78, 39): 4, (78, 40): 3, (78, 41): 2, (78, 42): 1, (78, 43): 2, (78, 44): 3, (78, 46): 3, (78, 47): 2, (78, 48): 1, (78, 49): 2, (78, 50): 1, (78, 51): 2, (78, 52): 3, (78, 53): 4, (78, 56): 5, (78, 57): 4, (78, 58): 3, (78, 59): 2, (78, 60): 1, (78, 61): 2, (78, 62): 3, (78, 63): 2, (78, 64): 3, (78, 65): 2, (78, 66): 1, (78, 67): 2, (78, 68): 1, (78, 69): 2, (78, 70): 3, (78, 72): 3, (78, 73): 2, (78, 74): 1, (78, 75): 2, (78, 76): 1, (78, 77): 2, (79, -2): 2, (79, -1): 1, (79, 0): 2, (79, 1): 1, (79, 2): 2, (79, 3): 3, (79, 4): 4, (79, 5): 5, (79, 6): 6, (79, 7): 5, (79, 8): 4, (79, 9): 3, (79, 10): 2, (79, 11): 1, (79, 12): 2, (79, 13): 3, (79, 14): 2, (79, 15): 3, (79, 16): 2, (79, 17): 1, (79, 18): 2, (79, 19): 3, (79, 22): 4, (79, 23): 5, (79, 24): 6, (79, 25): 7, (79, 26): 8, (79, 27): 7, (79, 28): 6, (79, 29): 5, (79, 30): 4, (79, 31): 3, (79, 32): 2, (79, 33): 1, (79, 34): 2, (79, 35): 3, (79, 36): 4, (79, 37): 5, (79, 39): 5, (79, 40): 4, (79, 41): 3, (79, 42): 2, (79, 43): 1, (79, 44): 2, (79, 45): 3, (79, 47): 3, (79, 48): 2, (79, 49): 1, (79, 50): 2, (79, 51): 1, (79, 52): 2, (79, 53): 3, (79, 54): 4, (79, 57): 5, (79, 58): 4, (79, 59): 3, (79, 60): 2, (79, 61): 1, (79, 62): 2, (79, 63): 3, (79, 64): 2, (79, 65): 3, (79, 66): 2, (79, 67): 1, (79, 68): 2, (79, 69): 1, (79, 70): 2, (79, 71): 3, (79, 73): 3, (79, 74): 2, (79, 75): 1, (79, 76): 2, (79, 77): 1, (79, 78): 2, (80, -2): 3, (80, -1): 2, (80, 0): 1, (80, 1): 2, (80, 2): 1, (80, 3): 2, (80, 4): 3, (80, 5): 4, (80, 6): 5, (80, 7): 6, (80, 8): 5, (80, 9): 4, (80, 10): 3, (80, 11): 2, (80, 12): 1, (80, 13): 2, (80, 14): 3, (80, 15): 2, (80, 16): 3, (80, 17): 2, (80, 18): 1, (80, 19): 2, (80, 21): 2, (80, 23): 4, (80, 24): 5, (80, 25): 6, (80, 26): 7, (80, 27): 8, (80, 28): 7, (80, 29): 6, (80, 30): 5, (80, 31): 4, (80, 32): 3, (80, 33): 2, (80, 34): 1, (80, 35): 2, (80, 36): 3, (80, 37): 4, (80, 38): 5, (80, 40): 5, (80, 41): 4, (80, 42): 3, (80, 43): 2, (80, 44): 1, (80, 45): 2, (80, 46): 3, (80, 48): 3, (80, 49): 2, (80, 50): 1, (80, 51): 2, (80, 52): 1, (80, 53): 2, (80, 54): 3, (80, 55): 4, (80, 58): 5, (80, 59): 4, (80, 60): 3, (80, 61): 2, (80, 62): 1, (80, 63): 2, (80, 64): 3, (80, 65): 2, (80, 66): 3, (80, 67): 2, (80, 68): 1, (80, 69): 2, (80, 70): 1, (80, 71): 2, (80, 72): 3, (80, 74): 3, (80, 75): 2, (80, 76): 1, (80, 77): 2, (80, 78): 1, (80, 79): 2, (81, -2): 4, (81, -1): 3, (81, 0): 2, (81, 1): 1, (81, 2): 2, (81, 3): 1, (81, 4): 2, (81, 5): 3, (81, 6): 4, (81, 7): 5, (81, 8): 6, (81, 9): 5, (81, 10): 4, (81, 11): 3, (81, 12): 2, (81, 13): 1, (81, 14): 2, (81, 15): 3, (81, 16): 2, (81, 17): 3, (81, 18): 2, (81, 19): 1, (81, 20): 2, (81, 22): 2, (81, 24): 4, (81, 25): 5, (81, 26): 6, (81, 27): 7, (81, 28): 8, (81, 29): 7, (81, 30): 6, (81, 31): 5, (81, 32): 4, (81, 33): 3, (81, 34): 2, (81, 35): 1, (81, 36): 2, (81, 37): 3, (81, 38): 4, (81, 39): 5, (81, 41): 5, (81, 42): 4, (81, 43): 3, (81, 44): 2, (81, 45): 1, (81, 46): 2, (81, 47): 3, (81, 49): 3, (81, 50): 2, (81, 51): 1, (81, 52): 2, (81, 53): 1, (81, 54): 2, (81, 55): 3, (81, 56): 4, (81, 59): 5, (81, 60): 4, (81, 61): 3, (81, 62): 2, (81, 63): 1, (81, 64): 2, (81, 65): 3, (81, 66): 2, (81, 67): 3, (81, 68): 2, (81, 69): 1, (81, 70): 2, (81, 71): 1, (81, 72): 2, (81, 73): 3, (81, 75): 3, (81, 76): 2, (81, 77): 1, (81, 78): 2, (81, 79): 1, (81, 80): 2, (82, -2): 3, (82, -1): 4, (82, 0): 3, (82, 1): 2, (82, 2): 1, (82, 3): 2, (82, 4): 1, (82, 5): 2, (82, 6): 3, (82, 7): 4, (82, 8): 5, (82, 9): 6, (82, 10): 5, (82, 11): 4, (82, 12): 3, (82, 13): 2, (82, 14): 1, (82, 15): 2, (82, 16): 3, (82, 17): 2, (82, 18): 3, (82, 19): 2, (82, 20): 1, (82, 21): 2, (82, 23): 2, (82, 25): 4, (82, 26): 5, (82, 27): 6, (82, 28): 7, (82, 29): 8, (82, 30): 7, (82, 31): 6, (82, 32): 5, (82, 33): 4, (82, 34): 3, (82, 35): 2, (82, 36): 1, (82, 37): 2, (82, 38): 3, (82, 39): 4, (82, 40): 5, (82, 42): 5, (82, 43): 4, (82, 44): 3, (82, 45): 2, (82, 46): 1, (82, 47): 2, (82, 48): 3, (82, 50): 3, (82, 51): 2, (82, 52): 1, (82, 53): 2, (82, 54): 1, (82, 55): 2, (82, 56): 3, (82, 57): 4, (82, 60): 5, (82, 61): 4, (82, 62): 3, (82, 63): 2, (82, 64): 1, (82, 65): 2, (82, 66): 3, (82, 67): 2, (82, 68): 3, (82, 69): 2, (82, 70): 1, (82, 71): 2, (82, 72): 1, (82, 73): 2, (82, 74): 3, (82, 76): 3, (82, 77): 2, (82, 78): 1, (82, 79): 2, (82, 80): 1, (82, 81): 2, (83, -2): 2, (83, -1): 3, (83, 0): 4, (83, 1): 3, (83, 2): 2, (83, 3): 1, (83, 4): 2, (83, 5): 1, (83, 6): 2, (83, 7): 3, (83, 8): 4, (83, 9): 5, (83, 10): 6, (83, 11): 5, (83, 12): 4, (83, 13): 3, (83, 14): 2, (83, 15): 1, (83, 16): 2, (83, 17): 3, (83, 18): 2, (83, 19): 3, (83, 20): 2, (83, 21): 1, (83, 22): 2, (83, 24): 2, (83, 26): 4, (83, 27): 5, (83, 28): 6, (83, 29): 7, (83, 30): 8, (83, 31): 7, (83, 32): 6, (83, 33): 5, (83, 34): 4, (83, 35): 3, (83, 36): 2, (83, 37): 1, (83, 38): 2, (83, 39): 3, (83, 40): 4, (83, 41): 5, (83, 43): 5, (83, 44): 4, (83, 45): 3, (83, 46): 2, (83, 47): 1, (83, 48): 2, (83, 49): 3, (83, 51): 3, (83, 52): 2, (83, 53): 1, (83, 54): 2, (83, 55): 1, (83, 56): 2, (83, 57): 3, (83, 58): 4, (83, 61): 5, (83, 62): 4, (83, 63): 3, (83, 64): 2, (83, 65): 1, (83, 66): 2, (83, 67): 3, (83, 68): 2, (83, 69): 3, (83, 70): 2, (83, 71): 1, (83, 72): 2, (83, 73): 1, (83, 74): 2, (83, 75): 3, (83, 77): 3, (83, 78): 2, (83, 79): 1, (83, 80): 2, (83, 81): 1, (83, 82): 2, (84, -2): 1, (84, -1): 2, (84, 0): 3, (84, 1): 4, (84, 2): 3, (84, 3): 2, (84, 4): 1, (84, 5): 2, (84, 6): 1, (84, 7): 2, (84, 8): 3, (84, 9): 4, (84, 10): 5, (84, 11): 6, (84, 12): 5, (84, 13): 4, (84, 14): 3, (84, 15): 2, (84, 16): 1, (84, 17): 2, (84, 18): 3, (84, 19): 2, (84, 20): 3, (84, 21): 2, (84, 22): 1, (84, 23): 2, (84, 24): 1, (84, 25): 2, (84, 27): 4, (84, 28): 5, (84, 29): 6, (84, 30): 7, (84, 31): 8, (84, 32): 7, (84, 33): 6, (84, 34): 5, (84, 35): 4, (84, 36): 3, (84, 37): 2, (84, 38): 1, (84, 39): 2, (84, 40): 3, (84, 41): 4, (84, 42): 5, (84, 44): 5, (84, 45): 4, (84, 46): 3, (84, 47): 2, (84, 48): 1, (84, 49): 2, (84, 50): 3, (84, 52): 3, (84, 53): 2, (84, 54): 1, (84, 55): 2, (84, 56): 1, (84, 57): 2, (84, 58): 3, (84, 59): 4, (84, 62): 5, (84, 63): 4, (84, 64): 3, (84, 65): 2, (84, 66): 1, (84, 67): 2, (84, 68): 3, (84, 69): 2, (84, 70): 3, (84, 71): 2, (84, 72): 1, (84, 73): 2, (84, 74): 1, (84, 75): 2, (84, 76): 3, (84, 78): 3, (84, 79): 2, (84, 80): 1, (84, 81): 2, (84, 82): 1, (84, 83): 2, (85, -2): 2, (85, -1): 1, (85, 0): 2, (85, 1): 3, (85, 2): 4, (85, 3): 3, (85, 4): 2, (85, 5): 1, (85, 6): 2, (85, 7): 1, (85, 8): 2, (85, 9): 3, (85, 10): 4, (85, 11): 5, (85, 12): 6, (85, 13): 5, (85, 14): 4, (85, 15): 3, (85, 16): 2, (85, 17): 1, (85, 18): 2, (85, 19): 3, (85, 20): 2, (85, 21): 3, (85, 22): 2, (85, 23): 1, (85, 24): 2, (85, 25): 1, (85, 26): 2, (85, 28): 4, (85, 29): 5, (85, 30): 6, (85, 31): 7, (85, 32): 8, (85, 33): 7, (85, 34): 6, (85, 35): 5, (85, 36): 4, (85, 37): 3, (85, 38): 2, (85, 39): 1, (85, 40): 2, (85, 41): 3, (85, 42): 4, (85, 43): 5, (85, 45): 5, (85, 46): 4, (85, 47): 3, (85, 48): 2, (85, 49): 1, (85, 50): 2, (85, 51): 3, (85, 53): 3, (85, 54): 2, (85, 55): 1, (85, 56): 2, (85, 57): 1, (85, 58): 2, (85, 59): 3, (85, 60): 4, (85, 63): 5, (85, 64): 4, (85, 65): 3, (85, 66): 2, (85, 67): 1, (85, 68): 2, (85, 69): 3, (85, 70): 2, (85, 71): 3, (85, 72): 2, (85, 73): 1, (85, 74): 2, (85, 75): 1, (85, 76): 2, (85, 77): 3, (85, 79): 3, (85, 80): 2, (85, 81): 1, (85, 82): 2, (85, 83): 1, (85, 84): 2, (86, -2): 1, (86, -1): 2, (86, 0): 1, (86, 1): 2, (86, 2): 3, (86, 3): 4, (86, 4): 3, (86, 5): 2, (86, 6): 1, (86, 7): 2, (86, 8): 1, (86, 9): 2, (86, 10): 3, (86, 11): 4, (86, 12): 5, (86, 13): 6, (86, 14): 5, (86, 15): 4, (86, 16): 3, (86, 17): 2, (86, 18): 1, (86, 19): 2, (86, 20): 3, (86, 21): 2, (86, 22): 3, (86, 23): 2, (86, 24): 1, (86, 25): 2, (86, 26): 1, (86, 27): 2, (86, 29): 4, (86, 30): 5, (86, 31): 6, (86, 32): 7, (86, 33): 8, (86, 34): 7, (86, 35): 6, (86, 36): 5, (86, 37): 4, (86, 38): 3, (86, 39): 2, (86, 40): 1, (86, 41): 2, (86, 42): 3, (86, 43): 4, (86, 44): 5, (86, 46): 5, (86, 47): 4, (86, 48): 3, (86, 49): 2, (86, 50): 1, (86, 51): 2, (86, 52): 3, (86, 54): 3, (86, 55): 2, (86, 56): 1, (86, 57): 2, (86, 58): 1, (86, 59): 2, (86, 60): 3, (86, 61): 4, (86, 64): 5, (86, 65): 4, (86, 66): 3, (86, 67): 2, (86, 68): 1, (86, 69): 2, (86, 70): 3, (86, 71): 2, (86, 72): 3, (86, 73): 2, (86, 74): 1, (86, 75): 2, (86, 76): 1, (86, 77): 2, (86, 78): 3, (86, 80): 3, (86, 81): 2, (86, 82): 1, (86, 83): 2, (86, 84): 1, (86, 85): 2, (87, -2): 2, (87, -1): 1, (87, 0): 2, (87, 1): 1, (87, 2): 2, (87, 3): 3, (87, 4): 4, (87, 5): 3, (87, 6): 2, (87, 7): 1, (87, 8): 2, (87, 9): 1, (87, 10): 2, (87, 11): 3, (87, 12): 4, (87, 13): 5, (87, 14): 6, (87, 15): 5, (87, 16): 4, (87, 17): 3, (87, 18): 2, (87, 19): 1, (87, 20): 2, (87, 21): 3, (87, 22): 2, (87, 23): 3, (87, 24): 2, (87, 25): 1, (87, 26): 2, (87, 27): 1, (87, 28): 2, (87, 30): 4, (87, 31): 5, (87, 32): 6, (87, 33): 7, (87, 34): 8, (87, 35): 7, (87, 36): 6, (87, 37): 5, (87, 38): 4, (87, 39): 3, (87, 40): 2, (87, 41): 1, (87, 42): 2, (87, 43): 3, (87, 44): 4, (87, 45): 5, (87, 47): 5, (87, 48): 4, (87, 49): 3, (87, 50): 2, (87, 51): 1, (87, 52): 2, (87, 53): 3, (87, 55): 3, (87, 56): 2, (87, 57): 1, (87, 58): 2, (87, 59): 1, (87, 60): 2, (87, 61): 3, (87, 62): 4, (87, 65): 5, (87, 66): 4, (87, 67): 3, (87, 68): 2, (87, 69): 1, (87, 70): 2, (87, 71): 3, (87, 72): 2, (87, 73): 3, (87, 74): 2, (87, 75): 1, (87, 76): 2, (87, 77): 1, (87, 78): 2, (87, 79): 3, (87, 81): 3, (87, 82): 2, (87, 83): 1, (87, 84): 2, (87, 85): 1, (87, 86): 2, (88, -2): 3, (88, -1): 2, (88, 0): 1, (88, 1): 2, (88, 2): 1, (88, 3): 2, (88, 4): 3, (88, 5): 4, (88, 6): 3, (88, 7): 2, (88, 8): 1, (88, 9): 2, (88, 10): 1, (88, 11): 2, (88, 12): 3, (88, 13): 4, (88, 14): 5, (88, 15): 6, (88, 16): 5, (88, 17): 4, (88, 18): 3, (88, 19): 2, (88, 20): 1, (88, 21): 2, (88, 22): 3, (88, 23): 2, (88, 24): 3, (88, 25): 2, (88, 26): 1, (88, 27): 2, (88, 28): 1, (88, 29): 2, (88, 31): 4, (88, 32): 5, (88, 33): 6, (88, 34): 7, (88, 35): 8, (88, 36): 7, (88, 37): 6, (88, 38): 5, (88, 39): 4, (88, 40): 3, (88, 41): 2, (88, 42): 1, (88, 43): 2, (88, 44): 3, (88, 45): 4, (88, 46): 5, (88, 48): 5, (88, 49): 4, (88, 50): 3, (88, 51): 2, (88, 52): 1, (88, 53): 2, (88, 54): 3, (88, 56): 3, (88, 57): 2, (88, 58): 1, (88, 59): 2, (88, 60): 1, (88, 61): 2, (88, 62): 3, (88, 63): 4, (88, 66): 5, (88, 67): 4, (88, 68): 3, (88, 69): 2, (88, 70): 1, (88, 71): 2, (88, 72): 3, (88, 73): 2, (88, 74): 3, (88, 75): 2, (88, 76): 1, (88, 77): 2, (88, 78): 1, (88, 79): 2, (88, 80): 3, (88, 82): 3, (88, 83): 2, (88, 84): 1, (88, 85): 2, (88, 86): 1, (88, 87): 2, (89, -2): 4, (89, -1): 3, (89, 0): 2, (89, 1): 1, (89, 2): 2, (89, 3): 1, (89, 4): 2, (89, 5): 3, (89, 6): 4, (89, 7): 3, (89, 8): 2, (89, 9): 1, (89, 10): 2, (89, 11): 1, (89, 12): 2, (89, 13): 3, (89, 14): 4, (89, 15): 5, (89, 16): 6, (89, 17): 5, (89, 18): 4, (89, 19): 3, (89, 20): 2, (89, 21): 1, (89, 22): 2, (89, 23): 3, (89, 24): 2, (89, 25): 3, (89, 26): 2, (89, 27): 1, (89, 28): 2, (89, 29): 1, (89, 30): 2, (89, 32): 4, (89, 33): 5, (89, 34): 6, (89, 35): 7, (89, 36): 8, (89, 37): 7, (89, 38): 6, (89, 39): 5, (89, 40): 4, (89, 41): 3, (89, 42): 2, (89, 43): 1, (89, 44): 2, (89, 45): 3, (89, 46): 4, (89, 47): 5, (89, 49): 5, (89, 50): 4, (89, 51): 3, (89, 52): 2, (89, 53): 1, (89, 54): 2, (89, 55): 3, (89, 57): 3, (89, 58): 2, (89, 59): 1, (89, 60): 2, (89, 61): 1, (89, 62): 2, (89, 63): 3, (89, 64): 4, (89, 67): 5, (89, 68): 4, (89, 69): 3, (89, 70): 2, (89, 71): 1, (89, 72): 2, (89, 73): 3, (89, 74): 2, (89, 75): 3, (89, 76): 2, (89, 77): 1, (89, 78): 2, (89, 79): 1, (89, 80): 2, (89, 81): 3, (89, 83): 3, (89, 84): 2, (89, 85): 1, (89, 86): 2, (89, 87): 1, (89, 88): 2, (90, -2): 5, (90, -1): 4, (90, 0): 3, (90, 1): 4, (90, 2): 3, (90, 3): 2, (90, 4): 1, (90, 5): 2, (90, 6): 3, (90, 7): 4, (90, 8): 3, (90, 9): 2, (90, 10): 1, (90, 11): 2, (90, 12): 1, (90, 13): 2, (90, 14): 3, (90, 15): 4, (90, 16): 5, (90, 17): 6, (90, 18): 5, (90, 19): 4, (90, 20): 3, (90, 21): 2, (90, 22): 1, (90, 23): 2, (90, 24): 3, (90, 25): 2, (90, 26): 3, (90, 27): 2, (90, 28): 1, (90, 29): 2, (90, 30): 1, (90, 31): 2, (90, 33): 4, (90, 34): 5, (90, 35): 6, (90, 36): 7, (90, 37): 8, (90, 38): 7, (90, 39): 6, (90, 40): 5, (90, 41): 4, (90, 42): 3, (90, 43): 2, (90, 44): 1, (90, 45): 2, (90, 46): 3, (90, 47): 4, (90, 48): 5, (90, 50): 5, (90, 51): 4, (90, 52): 3, (90, 53): 2, (90, 54): 1, (90, 55): 2, (90, 56): 3, (90, 58): 3, (90, 59): 2, (90, 60): 1, (90, 61): 2, (90, 62): 1, (90, 63): 2, (90, 64): 3, (90, 65): 4, (90, 68): 5, (90, 69): 4, (90, 70): 3, (90, 71): 2, (90, 72): 1, (90, 73): 2, (90, 74): 3, (90, 75): 2, (90, 76): 3, (90, 77): 2, (90, 78): 1, (90, 79): 2, (90, 80): 1, (90, 81): 2, (90, 82): 3, (90, 84): 3, (90, 85): 2, (90, 86): 1, (90, 87): 2, (90, 88): 1, (90, 89): 2, (91, -2): 6, (91, -1): 5, (91, 0): 4, (91, 1): 3, (91, 2): 4, (91, 3): 3, (91, 4): 2, (91, 5): 1, (91, 6): 2, (91, 7): 3, (91, 8): 4, (91, 9): 3, (91, 10): 2, (91, 11): 1, (91, 12): 2, (91, 13): 1, (91, 14): 2, (91, 15): 3, (91, 16): 4, (91, 17): 5, (91, 18): 6, (91, 19): 5, (91, 20): 4, (91, 21): 3, (91, 22): 2, (91, 23): 1, (91, 24): 2, (91, 25): 3, (91, 26): 2, (91, 27): 3, (91, 28): 2, (91, 29): 1, (91, 30): 2, (91, 31): 1, (91, 32): 2, (91, 34): 4, (91, 35): 5, (91, 36): 6, (91, 37): 7, (91, 38): 8, (91, 39): 7, (91, 40): 6, (91, 41): 5, (91, 42): 4, (91, 43): 3, (91, 44): 2, (91, 45): 1, (91, 46): 2, (91, 47): 3, (91, 48): 4, (91, 49): 5, (91, 51): 5, (91, 52): 4, (91, 53): 3, (91, 54): 2, (91, 55): 1, (91, 56): 2, (91, 57): 3, (91, 59): 3, (91, 60): 2, (91, 61): 1, (91, 62): 2, (91, 63): 1, (91, 64): 2, (91, 65): 3, (91, 66): 4, (91, 69): 5, (91, 70): 4, (91, 71): 3, (91, 72): 2, (91, 73): 1, (91, 74): 2, (91, 75): 3, (91, 76): 2, (91, 77): 3, (91, 78): 2, (91, 79): 1, (91, 80): 2, (91, 81): 1, (91, 82): 2, (91, 83): 3, (91, 85): 3, (91, 86): 2, (91, 87): 1, (91, 88): 2, (91, 89): 1, (91, 90): 2, (92, -2): 7, (92, -1): 6, (92, 0): 5, (92, 1): 4, (92, 2): 5, (92, 3): 4, (92, 4): 3, (92, 5): 2, (92, 6): 1, (92, 7): 2, (92, 8): 3, (92, 9): 4, (92, 10): 3, (92, 11): 2, (92, 12): 1, (92, 13): 2, (92, 14): 1, (92, 15): 2, (92, 16): 3, (92, 17): 4, (92, 18): 5, (92, 19): 6, (92, 20): 5, (92, 21): 4, (92, 22): 3, (92, 23): 2, (92, 24): 1, (92, 25): 2, (92, 26): 3, (92, 27): 2, (92, 28): 3, (92, 29): 2, (92, 30): 1, (92, 31): 2, (92, 32): 1, (92, 33): 2, (92, 35): 4, (92, 36): 5, (92, 37): 6, (92, 38): 7, (92, 39): 8, (92, 40): 7, (92, 41): 6, (92, 42): 5, (92, 43): 4, (92, 44): 3, (92, 45): 2, (92, 46): 1, (92, 47): 2, (92, 48): 3, (92, 49): 4, (92, 50): 5, (92, 52): 5, (92, 53): 4, (92, 54): 3, (92, 55): 2, (92, 56): 1, (92, 57): 2, (92, 58): 3, (92, 60): 3, (92, 61): 2, (92, 62): 1, (92, 63): 2, (92, 64): 1, (92, 65): 2, (92, 66): 3, (92, 67): 4, (92, 70): 5, (92, 71): 4, (92, 72): 3, (92, 73): 2, (92, 74): 1, (92, 75): 2, (92, 76): 3, (92, 77): 2, (92, 78): 3, (92, 79): 2, (92, 80): 1, (92, 81): 2, (92, 82): 1, (92, 83): 2, (92, 84): 3, (92, 86): 3, (92, 87): 2, (92, 88): 1, (92, 89): 2, (92, 90): 1, (92, 91): 2, (93, -2): 8, (93, -1): 7, (93, 0): 6, (93, 1): 7, (93, 2): 6, (93, 3): 5, (93, 4): 4, (93, 5): 3, (93, 6): 2, (93, 11): 3, (93, 12): 2, (93, 13): 1, (93, 14): 2, (93, 15): 1, (93, 16): 2, (93, 17): 3, (93, 18): 4, (93, 19): 5, (93, 20): 6, (93, 21): 5, (93, 22): 4, (93, 23): 3, (93, 24): 2, (93, 25): 1, (93, 26): 2, (93, 27): 3, (93, 28): 2, (93, 29): 3, (93, 30): 2, (93, 31): 1, (93, 32): 2, (93, 33): 1, (93, 34): 2, (93, 36): 4, (93, 37): 5, (93, 38): 6, (93, 39): 7, (93, 40): 8, (93, 41): 7, (93, 42): 6, (93, 43): 5, (93, 44): 4, (93, 45): 3, (93, 46): 2, (93, 47): 1, (93, 48): 2, (93, 49): 3, (93, 50): 4, (93, 51): 5, (93, 53): 5, (93, 54): 4, (93, 55): 3, (93, 56): 2, (93, 57): 1, (93, 58): 2, (93, 59): 3, (93, 61): 3, (93, 62): 2, (93, 63): 1, (93, 64): 2, (93, 65): 1, (93, 66): 2, (93, 67): 3, (93, 68): 4, (93, 71): 5, (93, 72): 4, (93, 73): 3, (93, 74): 2, (93, 75): 1, (93, 76): 2, (93, 77): 3, (93, 78): 2, (93, 79): 3, (93, 80): 2, (93, 81): 1, (93, 82): 2, (93, 83): 1, (93, 84): 2, (93, 85): 3, (93, 87): 3, (93, 88): 2, (93, 89): 1, (93, 90): 2, (93, 91): 1, (93, 92): 2, (94, -2): 9, (94, -1): 8, (94, 0): 7, (94, 1): 8, (94, 2): 7, (94, 3): 6, (94, 4): 5, (94, 5): 4, (94, 12): 3, (94, 13): 2, (94, 14): 1, (94, 15): 2, (94, 16): 1, (94, 17): 2, (94, 18): 3, (94, 19): 4, (94, 20): 5, (94, 21): 6, (94, 22): 5, (94, 23): 4, (94, 24): 3, (94, 25): 2, (94, 26): 1, (94, 27): 2, (94, 28): 3, (94, 29): 2, (94, 30): 3, (94, 31): 2, (94, 32): 1, (94, 33): 2, (94, 34): 1, (94, 35): 2, (94, 37): 4, (94, 38): 5, (94, 39): 6, (94, 40): 7, (94, 41): 8, (94, 42): 7, (94, 43): 6, (94, 44): 5, (94, 45): 4, (94, 46): 3, (94, 47): 2, (94, 48): 1, (94, 49): 2, (94, 50): 3, (94, 51): 4, (94, 52): 5, (94, 54): 5, (94, 55): 4, (94, 56): 3, (94, 57): 2, (94, 58): 1, (94, 59): 2, (94, 60): 3, (94, 62): 3, (94, 63): 2, (94, 64): 1, (94, 65): 2, (94, 66): 1, (94, 67): 2, (94, 68): 3, (94, 69): 4, (94, 72): 5, (94, 73): 4, (94, 74): 3, (94, 75): 2, (94, 76): 1, (94, 77): 2, (94, 78): 3, (94, 79): 2, (94, 80): 3, (94, 81): 2, (94, 82): 1, (94, 83): 2, (94, 84): 1, (94, 85): 2, (94, 86): 3, (94, 88): 3, (94, 89): 2, (94, 90): 1, (94, 91): 2, (94, 92): 1, (94, 93): 2, (95, -2): 6, (95, -1): 9, (95, 0): 8, (95, 1): 9, (95, 2): 8, (95, 3): 7, (95, 4): 6, (95, 5): 5, (95, 6): 4, (95, 13): 3, (95, 14): 2, (95, 15): 1, (95, 16): 2, (95, 17): 1, (95, 18): 2, (95, 19): 3, (95, 20): 4, (95, 21): 5, (95, 22): 6, (95, 23): 5, (95, 24): 4, (95, 25): 3, (95, 26): 2, (95, 27): 1, (95, 28): 2, (95, 29): 3, (95, 30): 2, (95, 31): 3, (95, 32): 2, (95, 33): 1, (95, 34): 2, (95, 35): 1, (95, 36): 2, (95, 38): 4, (95, 39): 5, (95, 40): 6, (95, 41): 7, (95, 42): 8, (95, 43): 7, (95, 44): 6, (95, 45): 5, (95, 46): 4, (95, 47): 3, (95, 48): 2, (95, 49): 1, (95, 50): 2, (95, 51): 3, (95, 52): 4, (95, 53): 5, (95, 55): 5, (95, 56): 4, (95, 57): 3, (95, 58): 2, (95, 59): 1, (95, 60): 2, (95, 61): 3, (95, 63): 3, (95, 64): 2, (95, 65): 1, (95, 66): 2, (95, 67): 1, (95, 68): 2, (95, 69): 3, (95, 70): 4, (95, 73): 5, (95, 74): 4, (95, 75): 3, (95, 76): 2, (95, 77): 1, (95, 78): 2, (95, 79): 3, (95, 80): 2, (95, 81): 3, (95, 82): 2, (95, 83): 1, (95, 84): 2, (95, 85): 1, (95, 86): 2, (95, 87): 3, (95, 89): 3, (95, 90): 2, (95, 91): 1, (95, 92): 2, (95, 93): 1, (95, 94): 2, (96, -2): 5, (96, -1): 6, (96, 0): 9, (96, 1): 8, (96, 2): 7, (96, 3): 8, (96, 4): 7, (96, 5): 6, (96, 6): 5, (96, 15): 2, (96, 16): 1, (96, 17): 2, (96, 18): 1, (96, 19): 2, (96, 20): 3, (96, 21): 4, (96, 22): 5, (96, 23): 6, (96, 24): 5, (96, 25): 4, (96, 26): 3, (96, 27): 2, (96, 28): 1, (96, 29): 2, (96, 30): 3, (96, 31): 2, (96, 32): 3, (96, 33): 2, (96, 34): 1, (96, 35): 2, (96, 36): 1, (96, 37): 2, (96, 39): 4, (96, 40): 5, (96, 41): 6, (96, 42): 7, (96, 43): 8, (96, 44): 7, (96, 45): 6, (96, 46): 5, (96, 47): 4, (96, 48): 3, (96, 49): 2, (96, 50): 1, (96, 51): 2, (96, 52): 3, (96, 53): 4, (96, 54): 5, (96, 56): 5, (96, 57): 4, (96, 58): 3, (96, 59): 2, (96, 60): 1, (96, 61): 2, (96, 62): 3, (96, 64): 3, (96, 65): 2, (96, 66): 1, (96, 67): 2, (96, 68): 1, (96, 69): 2, (96, 70): 3, (96, 71): 4, (96, 74): 5, (96, 75): 4, (96, 76): 3, (96, 77): 2, (96, 78): 1, (96, 79): 2, (96, 80): 3, (96, 81): 2, (96, 82): 3, (96, 83): 2, (96, 84): 1, (96, 85): 2, (96, 86): 1, (96, 87): 2, (96, 88): 3, (96, 90): 3, (96, 91): 2, (96, 92): 1, (96, 93): 2, (96, 94): 1, (96, 95): 2, (97, -2): 4, (97, -1): 5, (97, 0): 6, (97, 1): 7, (97, 2): 6, (97, 3): 7, (97, 4): 8, (97, 5): 7, (97, 6): 6, (97, 7): 5, (97, 16): 2, (97, 17): 1, (97, 18): 2, (97, 19): 1, (97, 20): 2, (97, 21): 3, (97, 22): 4, (97, 23): 5, (97, 24): 6, (97, 25): 5, (97, 26): 4, (97, 27): 3, (97, 28): 2, (97, 29): 1, (97, 30): 2, (97, 31): 3, (97, 32): 2, (97, 33): 3, (97, 34): 2, (97, 35): 1, (97, 36): 2, (97, 37): 1, (97, 38): 2, (97, 40): 4, (97, 41): 5, (97, 42): 6, (97, 43): 7, (97, 44): 8, (97, 45): 7, (97, 46): 6, (97, 47): 5, (97, 48): 4, (97, 49): 3, (97, 50): 2, (97, 51): 1, (97, 52): 2, (97, 53): 3, (97, 54): 4, (97, 55): 5, (97, 57): 5, (97, 58): 4, (97, 59): 3, (97, 60): 2, (97, 61): 1, (97, 62): 2, (97, 63): 3, (97, 65): 3, (97, 66): 2, (97, 67): 1, (97, 68): 2, (97, 69): 1, (97, 70): 2, (97, 71): 3, (97, 72): 4, (97, 75): 5, (97, 76): 4, (97, 77): 3, (97, 78): 2, (97, 79): 1, (97, 80): 2, (97, 81): 3, (97, 82): 2, (97, 83): 3, (97, 84): 2, (97, 85): 1, (97, 86): 2, (97, 87): 1, (97, 88): 2, (97, 89): 3, (97, 91): 3, (97, 92): 2, (97, 93): 1, (97, 94): 2, (97, 95): 1, (97, 96): 2, (98, -1): 4, (98, 0): 5, (98, 1): 6, (98, 2): 5, (98, 3): 6, (98, 4): 7, (98, 5): 8, (98, 6): 7, (98, 7): 6, (98, 8): 5, (98, 17): 2, (98, 18): 1, (98, 19): 2, (98, 20): 1, (98, 21): 2, (98, 22): 3, (98, 23): 4, (98, 24): 5, (98, 25): 6, (98, 26): 5, (98, 27): 4, (98, 28): 3, (98, 29): 2, (98, 30): 1, (98, 31): 2, (98, 32): 3, (98, 33): 2, (98, 34): 3, (98, 35): 2, (98, 36): 1, (98, 37): 2, (98, 38): 1, (98, 39): 2, (98, 41): 4, (98, 42): 5, (98, 43): 6, (98, 44): 7, (98, 45): 8, (98, 46): 7, (98, 47): 6, (98, 48): 5, (98, 49): 4, (98, 50): 3, (98, 51): 2, (98, 52): 1, (98, 53): 2, (98, 54): 3, (98, 55): 4, (98, 56): 5, (98, 58): 5, (98, 59): 4, (98, 60): 3, (98, 61): 2, (98, 62): 1, (98, 63): 2, (98, 64): 3, (98, 66): 3, (98, 67): 2, (98, 68): 1, (98, 69): 2, (98, 70): 1, (98, 71): 2, (98, 72): 3, (98, 73): 4, (98, 76): 5, (98, 77): 4, (98, 78): 3, (98, 79): 2, (98, 80): 1, (98, 81): 2, (98, 82): 3, (98, 83): 2, (98, 84): 3, (98, 85): 2, (98, 86): 1, (98, 87): 2, (98, 88): 1, (98, 89): 2, (98, 90): 3, (98, 92): 3, (98, 93): 2, (98, 94): 1, (98, 95): 2, (98, 96): 1, (98, 97): 2, (99, 0): 4, (99, 1): 5, (99, 2): 4, (99, 3): 5, (99, 4): 6, (99, 5): 7, (99, 6): 8, (99, 7): 7, (99, 8): 6, (99, 9): 5, (99, 18): 2, (99, 19): 1, (99, 20): 2, (99, 21): 1, (99, 22): 2, (99, 23): 3, (99, 24): 4, (99, 25): 5, (99, 26): 6, (99, 27): 5, (99, 28): 4, (99, 29): 3, (99, 30): 2, (99, 31): 1, (99, 32): 2, (99, 33): 3, (99, 34): 2, (99, 35): 3, (99, 36): 2, (99, 37): 1, (99, 38): 2, (99, 39): 1, (99, 40): 2, (99, 42): 4, (99, 43): 5, (99, 44): 6, (99, 45): 7, (99, 46): 8, (99, 47): 7, (99, 48): 6, (99, 49): 5, (99, 50): 4, (99, 51): 3, (99, 52): 2, (99, 53): 1, (99, 54): 2, (99, 55): 3, (99, 56): 4, (99, 57): 5, (99, 59): 5, (99, 60): 4, (99, 61): 3, (99, 62): 2, (99, 63): 1, (99, 64): 2, (99, 65): 3, (99, 67): 3, (99, 68): 2, (99, 69): 1, (99, 70): 2, (99, 71): 1, (99, 72): 2, (99, 73): 3, (99, 74): 4, (99, 77): 5, (99, 78): 4, (99, 79): 3, (99, 80): 2, (99, 81): 1, (99, 82): 2, (99, 83): 3, (99, 84): 2, (99, 85): 3, (99, 86): 2, (99, 87): 1, (99, 88): 2, (99, 89): 1, (99, 90): 2, (99, 91): 3, (99, 93): 3, (99, 94): 2, (99, 95): 1, (99, 96): 2, (99, 97): 1, (99, 98): 2, (100, 0): 3, (100, 1): 4, (100, 2): 3, (100, 3): 4, (100, 4): 5, (100, 5): 6, (100, 6): 7, (100, 7): 8, (100, 8): 7, (100, 9): 6, (100, 10): 5, (100, 19): 2, (100, 20): 1, (100, 21): 2, (100, 22): 1, (100, 23): 2, (100, 24): 3, (100, 25): 4, (100, 26): 5, (100, 27): 6, (100, 28): 5, (100, 29): 4, (100, 30): 3, (100, 31): 2, (100, 32): 1, (100, 33): 2, (100, 34): 3, (100, 35): 2, (100, 36): 3, (100, 37): 2, (100, 38): 1, (100, 39): 2, (100, 40): 1, (100, 41): 2, (100, 43): 4, (100, 44): 5, (100, 45): 6, (100, 46): 7, (100, 47): 8, (100, 48): 7, (100, 49): 6, (100, 50): 5, (100, 51): 4, (100, 52): 3, (100, 53): 2, (100, 54): 1, (100, 55): 2, (100, 56): 3, (100, 57): 4, (100, 58): 5, (100, 60): 5, (100, 61): 4, (100, 62): 3, (100, 63): 2, (100, 64): 1, (100, 65): 2, (100, 66): 3, (100, 68): 3, (100, 69): 2, (100, 70): 1, (100, 71): 2, (100, 72): 1, (100, 73): 2, (100, 74): 3, (100, 75): 4, (100, 78): 5, (100, 79): 4, (100, 80): 3, (100, 81): 2, (100, 82): 1, (100, 83): 2, (100, 84): 3, (100, 85): 2, (100, 86): 3, (100, 87): 2, (100, 88): 1, (100, 89): 2, (100, 90): 1, (100, 91): 2, (100, 92): 3, (100, 94): 3, (100, 95): 2, (100, 96): 1, (100, 97): 2, (100, 98): 1, (100, 99): 2}#

Dictionary of species’ ground state multiplicities.

Has items (atnum, charge): Tuple[int, int].

atomdb.utils.generate_mult_csv(max_atnum=100)#

Write a table of multiplicities to a CSV file.

Values retrieved from database_beta_1.3.0.h5 are organized into a table, with rows corresponding to atomic numbers and columns to charges.

The maximum atomic number (max_atnum) must not exceed 100, which is the database’s limit.

The charge range spans from -2 to max_atnum - 1.

Missing entries have multiplicities set to zero.

Parameters#

max_atnumint, default=100

Highest atomic number of the elements to be added to the table.

Raises#

ValueError

If the maximum allowed atomic number is greater than 100.

atomdb.version module#

AtomDB version information.

atomdb.version.version = '0.0.1'#

AtomDB version string.